test: 添加对企业账号状态的登录测试用例

This commit is contained in:
2026-07-23 14:58:12 +08:00
parent f8c96620cb
commit cd80052eee
2 changed files with 21 additions and 3 deletions

View File

@@ -156,12 +156,16 @@ public class BackDoorLoginService
{ {
throw new ServiceException("企业账号不存在"); throw new ServiceException("企业账号不存在");
} }
if (!UserStatus.OK.getCode().equals(appUser.getDelFlag())) // HighGo 中 app_user.status 是 CHAR(2)JDBC 会保留定长字段的尾部空格。
// SQL 比较会将 "0 " 视为 "0"Java 字符串比较则不会;统一 trim确保
// 列表筛选与登录时的状态判断使用完全相同的语义。
String delFlag = StringUtils.trimToEmpty(appUser.getDelFlag());
String status = StringUtils.trimToEmpty(appUser.getStatus());
if (!UserStatus.OK.getCode().equals(delFlag))
{ {
throw new ServiceException("企业账号已删除,不能登录"); throw new ServiceException("企业账号已删除,不能登录");
} }
if (StringUtils.isNotBlank(appUser.getStatus()) if (StringUtils.isNotEmpty(status) && !UserStatus.OK.getCode().equals(status))
&& !UserStatus.OK.getCode().equals(appUser.getStatus()))
{ {
throw new ServiceException("企业账号已停用,不能登录"); throw new ServiceException("企业账号已停用,不能登录");
} }

View File

@@ -200,6 +200,20 @@ class BackDoorLoginServiceTest
verify(tokenService, never()).createTokenHourTwo(org.mockito.ArgumentMatchers.any()); verify(tokenService, never()).createTokenHourTwo(org.mockito.ArgumentMatchers.any());
} }
@Test
void loginCompanyAcceptsPaddedHighGoActiveStatus()
{
AppUser company = activeCompany(66L);
company.setStatus("0 ");
when(sysUserService.selectAppUserById(66L)).thenReturn(company);
when(sysLoginService.loginUserIdApp(company)).thenReturn("company-site-token");
CompanyLoginSession session = service.loginCompany(66L);
assertEquals("company-site-token", session.getToken());
verify(sysLoginService).loginUserIdApp(company);
}
@Test @Test
void loginCompanyRejectsNonCompanyAccount() void loginCompanyRejectsNonCompanyAccount()
{ {