用户类 邀请码 商城

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