diff --git a/RuoYi-Vue/ruoyi-admin/src/test/java/com/ruoyi/web/service/front/FrontAuthServiceTest.java b/RuoYi-Vue/ruoyi-admin/src/test/java/com/ruoyi/web/service/front/FrontAuthServiceTest.java index bc1aa57..933122f 100644 --- a/RuoYi-Vue/ruoyi-admin/src/test/java/com/ruoyi/web/service/front/FrontAuthServiceTest.java +++ b/RuoYi-Vue/ruoyi-admin/src/test/java/com/ruoyi/web/service/front/FrontAuthServiceTest.java @@ -7,6 +7,7 @@ import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.framework.web.service.TokenService; import com.ruoyi.generator.domain.front.FrontUser; import com.ruoyi.generator.service.front.IFrontUserService; +import com.ruoyi.web.controller.front.FrontAuthController; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -29,6 +30,8 @@ public class FrontAuthServiceTest { private FrontAuthService frontAuthService; + private FrontAuthController frontAuthController; + @Mock private IFrontUserService frontUserService; @@ -39,8 +42,10 @@ public class FrontAuthServiceTest public void setUp() throws Exception { frontAuthService = new FrontAuthService(); - setField("frontUserService", frontUserService); - setField("tokenService", tokenService); + frontAuthController = new FrontAuthController(); + setField(frontAuthService, "frontUserService", frontUserService); + setField(frontAuthService, "tokenService", tokenService); + setField(frontAuthController, "frontAuthService", frontAuthService); } @Test @@ -85,6 +90,42 @@ public class FrontAuthServiceTest verify(frontUserService, never()).updateLastLoginTime(anyLong()); } + @Test + public void loginRejectsNullBodyWithCredentialFailure() + { + try + { + frontAuthController.login(null); + fail("Expected ServiceException"); + } + catch (ServiceException e) + { + assertEquals("用户名或密码错误", e.getMessage()); + } + + verify(frontUserService, never()).selectByUsername(any()); + verify(tokenService, never()).createToken(any(LoginUser.class)); + verify(frontUserService, never()).updateLastLoginTime(anyLong()); + } + + @Test + public void loginRejectsNullUsernameWithCredentialFailure() + { + try + { + frontAuthService.login(null, "admin123"); + fail("Expected ServiceException"); + } + catch (ServiceException e) + { + assertEquals("用户名或密码错误", e.getMessage()); + } + + verify(frontUserService, never()).selectByUsername(any()); + verify(tokenService, never()).createToken(any(LoginUser.class)); + verify(frontUserService, never()).updateLastLoginTime(anyLong()); + } + @Test public void loginRejectsBadPasswordBeforeAccountStatus() { @@ -112,6 +153,33 @@ public class FrontAuthServiceTest verify(frontUserService, never()).updateLastLoginTime(anyLong()); } + @Test + public void loginRejectsBadPasswordBeforeDeletedStatus() + { + FrontUser user = new FrontUser(); + user.setUserId(100L); + user.setUsername("demo"); + user.setNickname("Demo"); + user.setPassword(SecurityUtils.encryptPassword("admin123")); + user.setStatus("0"); + user.setDelFlag("2"); + + when(frontUserService.selectByUsername("demo")).thenReturn(user); + + try + { + frontAuthService.login("demo", "wrong"); + fail("Expected ServiceException"); + } + catch (ServiceException e) + { + assertEquals("用户名或密码错误", e.getMessage()); + } + + verify(tokenService, never()).createToken(any(LoginUser.class)); + verify(frontUserService, never()).updateLastLoginTime(anyLong()); + } + @Test public void profileClearsPasswordBeforeReturning() { @@ -128,10 +196,10 @@ public class FrontAuthServiceTest assertNull(profile.getPassword()); } - private void setField(String name, Object value) throws Exception + private void setField(Object target, String name, Object value) throws Exception { - Field field = FrontAuthService.class.getDeclaredField(name); + Field field = target.getClass().getDeclaredField(name); field.setAccessible(true); - field.set(frontAuthService, value); + field.set(target, value); } }