用户名转化
Change-Id: I8ff35588f93045dca321d37af7c4fee0a40c1abf
diff --git a/src/main/java/com/pt5/pthouduan/controller/TorrentController.java b/src/main/java/com/pt5/pthouduan/controller/TorrentController.java
index 7994287..3150258 100644
--- a/src/main/java/com/pt5/pthouduan/controller/TorrentController.java
+++ b/src/main/java/com/pt5/pthouduan/controller/TorrentController.java
@@ -108,6 +108,27 @@
// return ResponseEntity.badRequest().body("Upload failed:" + e.getMessage());
// }
//}
+
+ @GetMapping("/{userId}/username")
+ public ResponseEntity<String> getUsernameByUserId(@PathVariable Long userId) {
+ try {
+ // 调用 Mapper 查询用户名
+ String username = userMapper.selectUsernameByUserid(userId);
+ //System.out.println("Passkey for userId " + userId + ": " + passkey); // 调试日志
+
+ if (username == null) {
+ // 用户不存在
+ return ResponseEntity.notFound().build();
+ }
+
+ // 返回用户名
+ return ResponseEntity.ok(username);
+ } catch (Exception e) {
+ e.printStackTrace();
+ // 其他异常(如数据库错误)
+ return ResponseEntity.internalServerError().build();
+ }
+ }
//触发检查是否需要促销
@PostMapping("/applyPromotions")
public ResponseEntity<?> applyPromotions(@RequestParam("userid") Long userid)
diff --git a/src/test/java/com/pt5/pthouduan/ControllerTest/TorrentUsernameControllerTest.java b/src/test/java/com/pt5/pthouduan/ControllerTest/TorrentUsernameControllerTest.java
new file mode 100644
index 0000000..631ba29
--- /dev/null
+++ b/src/test/java/com/pt5/pthouduan/ControllerTest/TorrentUsernameControllerTest.java
@@ -0,0 +1,88 @@
+package com.pt5.pthouduan.ControllerTest;
+
+
+import com.pt5.pthouduan.controller.TorrentController;
+import com.pt5.pthouduan.mapper.UserMapper;
+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.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.setup.MockMvcBuilders;
+
+import static org.mockito.ArgumentMatchers.anyLong;
+import static org.mockito.Mockito.*;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
+
+class TorrentUsernameControllerTest {
+
+ @Mock
+ private UserMapper userMapper;
+
+ @InjectMocks
+ private TorrentController torrentController;
+
+ private MockMvc mockMvc;
+
+ @BeforeEach
+ void setUp() {
+ MockitoAnnotations.openMocks(this);
+ mockMvc = MockMvcBuilders.standaloneSetup(torrentController).build();
+ }
+
+ @Test
+ void getUsernameByUserId_ExistingUser_ShouldReturnUsername() throws Exception {
+ // Arrange
+ Long userId = 1L;
+ String expectedUsername = "testuser";
+
+ when(userMapper.selectUsernameByUserid(userId)).thenReturn(expectedUsername);
+
+ // Act & Assert
+ mockMvc.perform(get("/torrent/{userId}/username", userId))
+ .andExpect(status().isOk())
+ .andExpect(content().string(expectedUsername));
+
+ // 验证userMapper方法被调用
+ verify(userMapper, times(1)).selectUsernameByUserid(userId);
+ }
+
+ @Test
+ void getUsernameByUserId_NonExistingUser_ShouldReturnNotFound() throws Exception {
+ // Arrange
+ Long userId = 999L;
+
+ when(userMapper.selectUsernameByUserid(userId)).thenReturn(null);
+
+ // Act & Assert
+ mockMvc.perform(get("/torrent/{userId}/username", userId))
+ .andExpect(status().isNotFound());
+
+ // 验证userMapper方法被调用
+ verify(userMapper, times(1)).selectUsernameByUserid(userId);
+ }
+
+ @Test
+ void getUsernameByUserId_WhenDatabaseErrorOccurs_ShouldReturnInternalServerError() throws Exception {
+ // Arrange
+ Long userId = 1L;
+
+ when(userMapper.selectUsernameByUserid(userId)).thenThrow(new RuntimeException("Database connection failed"));
+
+ // Act & Assert
+ mockMvc.perform(get("/torrent/{userId}/username", userId))
+ .andExpect(status().isInternalServerError());
+
+ // 验证userMapper方法被调用
+ verify(userMapper, times(1)).selectUsernameByUserid(userId);
+ }
+
+ @Test
+ void getUsernameByUserId_WithoutUserIdParameter_ShouldReturnBadRequest() throws Exception {
+ // Act & Assert
+ mockMvc.perform(get("/torrent//username")) // 故意不提供userId
+ .andExpect(status().isBadRequest());
+ }
+}
\ No newline at end of file