用户类 邀请码 商城
Change-Id: If3a9ef5c464386647ae3b876104cbf4c71265c4b
diff --git a/src/test/java/com/pt5/pthouduan/ControllerTest/UserControllerTest.java b/src/test/java/com/pt5/pthouduan/ControllerTest/UserControllerTest.java
index 18707e2..e843900 100644
--- a/src/test/java/com/pt5/pthouduan/ControllerTest/UserControllerTest.java
+++ b/src/test/java/com/pt5/pthouduan/ControllerTest/UserControllerTest.java
@@ -1,4 +1,5 @@
package com.pt5.pthouduan.ControllerTest;
+
import com.pt5.pthouduan.controller.UserController;
import com.pt5.pthouduan.entity.User;
import com.pt5.pthouduan.service.UserService;
@@ -8,13 +9,17 @@
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.springframework.http.ResponseEntity;
+import org.springframework.mock.web.MockMultipartFile;
+import org.springframework.web.multipart.MultipartFile;
+import java.io.IOException;
+import java.nio.file.Path;
+import java.nio.file.Paths;
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.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
class UserControllerTest {
@@ -30,103 +35,120 @@
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");
+ void register_Success() {
+ // 准备测试数据
+ User user = new User(0L,"");
+ Map<String, Object> expectedResponse = new HashMap<>();
+ expectedResponse.put("success", true);
+ expectedResponse.put("message", "注册成功");
+ // 模拟服务层行为
when(userService.register(any(User.class), anyString(), anyString()))
- .thenReturn(expected);
+ .thenReturn(expectedResponse);
- Map<String, Object> result = userController.register(user, "INVITE123", "EMAIL456");
+ // 执行测试
+ Map<String, Object> actualResponse = userController.register(user, "invite123", "email123");
- assertEquals(expected, result);
+ // 验证结果
+ assertEquals(expectedResponse, actualResponse);
verify(userService, times(1)).register(any(), anyString(), anyString());
}
- // 测试登录功能
@Test
- void login_ShouldReturnToken() {
- Map<String, Object> expected = new HashMap<>();
- expected.put("token", "mockToken123");
+ void login_Success() {
+ Map<String, Object> expectedResponse = new HashMap<>();
+ expectedResponse.put("success", true);
+ expectedResponse.put("token", "test-token");
- when(userService.login("testUser", "password123"))
- .thenReturn(expected);
+ when(userService.login(anyString(), anyString()))
+ .thenReturn(expectedResponse);
- Map<String, Object> result = userController.login("testUser", "password123");
+ Map<String, Object> actualResponse = userController.login("testuser", "password123");
- assertEquals(expected, result);
- assertNotNull(result.get("token"));
+ assertEquals(expectedResponse, actualResponse);
}
- // 测试获取用户信息
@Test
- void getUserInfo_ShouldReturnUserData() {
- Map<String, Object> expected = new HashMap<>();
- expected.put("username", "testUser");
- expected.put("email", "test@example.com");
+ void uploadAvatar_Success() throws IOException {
+ // 准备测试文件
+ MultipartFile file = new MockMultipartFile(
+ "avatar",
+ "test.jpg",
+ "image/jpeg",
+ "test image content".getBytes()
+ );
- when(userService.UserInfo("testUser"))
- .thenReturn(expected);
+ // 模拟服务层行为
+ //doNothing().when(userService).changeImage(anyString(), anyString());
- Map<String, Object> result = userController.getuser("testUser");
+ // 执行测试
+ ResponseEntity<Map<String, Object>> response = userController.uploadAvatar(file);
- assertEquals("testUser", result.get("username"));
- assertEquals("test@example.com", result.get("email"));
+ // 验证结果
+ assertEquals(200, response.getStatusCodeValue());
+ assertTrue((Boolean) response.getBody().get("success"));
+ assertNotNull(response.getBody().get("url"));
+
+ // 验证文件是否保存到正确路径
+// Path expectedPath = Paths.get("../var/www/avatars/").resolve(anyString());
+ // 实际项目中需要添加文件存在性断言
}
- // 测试修改密码
@Test
- void changePassword_ShouldHandleSuccess() {
- Map<String, Object> expected = new HashMap<>();
- expected.put("message", "Password updated");
+ void uploadAvatar_InvalidFileType() {
+ MultipartFile file = new MockMultipartFile(
+ "avatar",
+ "test.txt",
+ "text/plain",
+ "invalid content".getBytes()
+ );
- when(userService.changePassword("testUser", "oldPass", "newPass"))
- .thenReturn(expected);
+ ResponseEntity<Map<String, Object>> response = userController.uploadAvatar(file);
- Map<String, Object> result = userController.changePassword(
- "testUser", "oldPass", "newPass");
-
- assertEquals("Password updated", result.get("message"));
+ assertEquals(400, response.getStatusCodeValue());
+ assertEquals("只支持JPG/PNG/GIF格式的图片", response.getBody().get("message"));
}
- // 测试异常情况
@Test
- void login_ShouldHandleFailure() {
- when(userService.login("wrongUser", "wrongPass"))
- .thenThrow(new RuntimeException("Invalid credentials"));
+ void changeImage_Success() {
+ Map<String, Object> expectedResponse = new HashMap<>();
+ expectedResponse.put("success", true);
+ expectedResponse.put("message", "头像更改成功");
- assertThrows(RuntimeException.class, () -> {
- userController.login("wrongUser", "wrongPass");
- });
+ // 执行测试
+ Map<String, Object> actualResponse = userController.changeimage("testuser", "new-avatar.jpg");
+
+ // 验证结果
+ assertEquals(expectedResponse, actualResponse);
+ verify(userService, times(1)).changeImage("testuser", "new-avatar.jpg");
}
- // 测试空参数情况
@Test
- void getUserInfo_ShouldHandleNullUsername() {
- when(userService.UserInfo(null))
- .thenReturn(Map.of("error", "Username required"));
+ void changePassword_Success() {
+ Map<String, Object> expectedResponse = new HashMap<>();
+ expectedResponse.put("success", true);
- Map<String, Object> result = userController.getuser(null);
+ when(userService.changePassword(anyString(), anyString(), anyString()))
+ .thenReturn(expectedResponse);
- assertEquals("Username required", result.get("error"));
+ Map<String, Object> actualResponse = userController.changePassword(
+ "testuser", "oldPass", "newPass");
+
+ assertEquals(expectedResponse, actualResponse);
}
- // 测试创建用户
+ // 其他方法测试示例
@Test
- void createUser_ShouldReturnUserId() {
- User newUser = new User(0L,"1");
- newUser.setUsername("newUser");
- Map<String, Object> expected = Map.of("userId", 123);
+ void getUserInfo_Success() {
+ Map<String, Object> expectedResponse = new HashMap<>();
+ expectedResponse.put("username", "testuser");
- when(userService.CreateUser(any(User.class)))
- .thenReturn(expected);
+ when(userService.UserInfo(anyString()))
+ .thenReturn(expectedResponse);
- Map<String, Object> result = userController.creatUser(newUser);
+ Map<String, Object> actualResponse = userController.getuser("testuser");
- assertEquals(123, result.get("userId"));
+ assertEquals(expectedResponse, actualResponse);
}
-}
+}
\ No newline at end of file