blob: 18707e24fd7dfd80dbc625270ca520878e0d2223 [file] [log] [blame]
package com.pt5.pthouduan.ControllerTest;
import com.pt5.pthouduan.controller.UserController;
import com.pt5.pthouduan.entity.User;
import com.pt5.pthouduan.service.UserService;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.springframework.http.ResponseEntity;
import java.util.HashMap;
import java.util.Map;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.*;
class UserControllerTest {
@Mock
private UserService userService;
@InjectMocks
private UserController userController;
@BeforeEach
void setUp() {
MockitoAnnotations.openMocks(this);
}
// 测试注册功能
@Test
void register_ShouldReturnSuccess() {
User user = new User(0L,"1");
user.setUsername("testUser");
Map<String, Object> expected = new HashMap<>();
expected.put("status", "success");
when(userService.register(any(User.class), anyString(), anyString()))
.thenReturn(expected);
Map<String, Object> result = userController.register(user, "INVITE123", "EMAIL456");
assertEquals(expected, result);
verify(userService, times(1)).register(any(), anyString(), anyString());
}
// 测试登录功能
@Test
void login_ShouldReturnToken() {
Map<String, Object> expected = new HashMap<>();
expected.put("token", "mockToken123");
when(userService.login("testUser", "password123"))
.thenReturn(expected);
Map<String, Object> result = userController.login("testUser", "password123");
assertEquals(expected, result);
assertNotNull(result.get("token"));
}
// 测试获取用户信息
@Test
void getUserInfo_ShouldReturnUserData() {
Map<String, Object> expected = new HashMap<>();
expected.put("username", "testUser");
expected.put("email", "test@example.com");
when(userService.UserInfo("testUser"))
.thenReturn(expected);
Map<String, Object> result = userController.getuser("testUser");
assertEquals("testUser", result.get("username"));
assertEquals("test@example.com", result.get("email"));
}
// 测试修改密码
@Test
void changePassword_ShouldHandleSuccess() {
Map<String, Object> expected = new HashMap<>();
expected.put("message", "Password updated");
when(userService.changePassword("testUser", "oldPass", "newPass"))
.thenReturn(expected);
Map<String, Object> result = userController.changePassword(
"testUser", "oldPass", "newPass");
assertEquals("Password updated", result.get("message"));
}
// 测试异常情况
@Test
void login_ShouldHandleFailure() {
when(userService.login("wrongUser", "wrongPass"))
.thenThrow(new RuntimeException("Invalid credentials"));
assertThrows(RuntimeException.class, () -> {
userController.login("wrongUser", "wrongPass");
});
}
// 测试空参数情况
@Test
void getUserInfo_ShouldHandleNullUsername() {
when(userService.UserInfo(null))
.thenReturn(Map.of("error", "Username required"));
Map<String, Object> result = userController.getuser(null);
assertEquals("Username required", result.get("error"));
}
// 测试创建用户
@Test
void createUser_ShouldReturnUserId() {
User newUser = new User(0L,"1");
newUser.setUsername("newUser");
Map<String, Object> expected = Map.of("userId", 123);
when(userService.CreateUser(any(User.class)))
.thenReturn(expected);
Map<String, Object> result = userController.creatUser(newUser);
assertEquals(123, result.get("userId"));
}
}