From 40cb1eb8cbcc7fc8f44c8038816d78e7299d7623 Mon Sep 17 00:00:00 2001 From: sotogito Date: Tue, 13 Jan 2026 23:11:04 +0900 Subject: [PATCH 1/3] =?UTF-8?q?=E2=9C=A8=20Add=20user=20name=20return=20ap?= =?UTF-8?q?i?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/member/controller/MemberController.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/main/java/com/und/server/member/controller/MemberController.java b/src/main/java/com/und/server/member/controller/MemberController.java index 6f83cc81..fe160573 100644 --- a/src/main/java/com/und/server/member/controller/MemberController.java +++ b/src/main/java/com/und/server/member/controller/MemberController.java @@ -3,6 +3,7 @@ import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PatchMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -11,6 +12,7 @@ import com.und.server.auth.filter.AuthMember; import com.und.server.member.dto.request.NicknameRequest; import com.und.server.member.dto.response.MemberResponse; +import com.und.server.member.entity.Member; import com.und.server.member.service.MemberService; import io.swagger.v3.oas.annotations.Parameter; @@ -25,6 +27,15 @@ public class MemberController { private final MemberService memberService; + @GetMapping("/member") + public ResponseEntity getMember( + @Parameter(hidden = true) @AuthMember final Long memberId + ) { + final Member member = memberService.findMemberById(memberId); + + return ResponseEntity.status(HttpStatus.OK).body(member.getNickname()); + } + @PatchMapping("/member/nickname") public ResponseEntity updateNickname( @Parameter(hidden = true) @AuthMember final Long memberId, From 6384c2b708146bf83664a4772bf5f92f29335c84 Mon Sep 17 00:00:00 2001 From: sotogito Date: Tue, 13 Jan 2026 23:11:36 +0900 Subject: [PATCH 2/3] =?UTF-8?q?=E2=9C=85=20Add=20user=20name=20return=20ap?= =?UTF-8?q?i=20test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/MemberControllerTest.java | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/src/test/java/com/und/server/member/controller/MemberControllerTest.java b/src/test/java/com/und/server/member/controller/MemberControllerTest.java index 03f46ab1..c04c864d 100644 --- a/src/test/java/com/und/server/member/controller/MemberControllerTest.java +++ b/src/test/java/com/und/server/member/controller/MemberControllerTest.java @@ -1,5 +1,6 @@ package com.und.server.member.controller; +import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doThrow; @@ -7,6 +8,8 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; +import java.nio.charset.StandardCharsets; + import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -28,6 +31,7 @@ import com.und.server.common.exception.ServerException; import com.und.server.member.dto.request.NicknameRequest; import com.und.server.member.dto.response.MemberResponse; +import com.und.server.member.entity.Member; import com.und.server.member.service.MemberService; @ExtendWith(MockitoExtension.class) @@ -131,6 +135,59 @@ void Given_AuthenticatedUser_When_UpdateNickname_Then_ReturnsOkWithUpdatedInfo() .andExpect(jsonPath("$.nickname").value(newNickname)); } + @Test + @DisplayName("Fails to get member and returns unauthorized when user is not authenticated") + void Given_UnauthenticatedUser_When_GetMember_Then_ReturnsUnauthorized() throws Exception { + // given + final String url = "/v1/member"; + final AuthErrorResult errorResult = AuthErrorResult.UNAUTHORIZED_ACCESS; + + doReturn(true).when(authMemberArgumentResolver).supportsParameter(any()); + doThrow(new ServerException(errorResult)) + .when(authMemberArgumentResolver).resolveArgument(any(), any(), any(), any()); + + // when + final ResultActions resultActions = mockMvc.perform( + MockMvcRequestBuilders.get(url) + ); + + // then + resultActions.andExpect(status().isUnauthorized()) + .andExpect(jsonPath("$.code").value(errorResult.name())) + .andExpect(jsonPath("$.message").value(errorResult.getMessage())); + } + + @Test + @DisplayName("Succeeds in getting member nickname for an authenticated user") + void Given_AuthenticatedUser_When_GetMember_Then_ReturnsOkWithNickname() throws Exception { + // given + final String url = "/v1/member"; + final Long memberId = 1L; + final String nickname = "Chori"; + final Member member = Member.builder() + .id(memberId) + .nickname(nickname) + .build(); + + doReturn(true).when(authMemberArgumentResolver).supportsParameter(any()); + doReturn(memberId).when(authMemberArgumentResolver).resolveArgument(any(), any(), any(), any()); + doReturn(member).when(memberService).findMemberById(memberId); + + // when + final ResultActions resultActions = mockMvc.perform( + MockMvcRequestBuilders.get(url) + ); + + // then + final String responseContent = resultActions + .andExpect(status().isOk()) + .andReturn() + .getResponse() + .getContentAsString(StandardCharsets.UTF_8); + assertThat(responseContent).isEqualTo(nickname); + verify(memberService).findMemberById(memberId); + } + @Test @DisplayName("Fails to delete member and returns unauthorized when user is not authenticated") void Given_UnauthenticatedUser_When_DeleteMember_Then_ReturnsUnauthorized() throws Exception { From 9f925cbc74eb8a208b62756cb64b7c1abc743561 Mon Sep 17 00:00:00 2001 From: sotogito Date: Wed, 14 Jan 2026 13:17:30 +0900 Subject: [PATCH 3/3] =?UTF-8?q?=F0=9F=8E=A8=20Modify=20api=20endpoint?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/und/server/member/controller/MemberController.java | 4 ++-- .../und/server/member/controller/MemberControllerTest.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/und/server/member/controller/MemberController.java b/src/main/java/com/und/server/member/controller/MemberController.java index fe160573..5755da30 100644 --- a/src/main/java/com/und/server/member/controller/MemberController.java +++ b/src/main/java/com/und/server/member/controller/MemberController.java @@ -27,8 +27,8 @@ public class MemberController { private final MemberService memberService; - @GetMapping("/member") - public ResponseEntity getMember( + @GetMapping("/member/nickname") + public ResponseEntity getNickname( @Parameter(hidden = true) @AuthMember final Long memberId ) { final Member member = memberService.findMemberById(memberId); diff --git a/src/test/java/com/und/server/member/controller/MemberControllerTest.java b/src/test/java/com/und/server/member/controller/MemberControllerTest.java index c04c864d..be49cdd3 100644 --- a/src/test/java/com/und/server/member/controller/MemberControllerTest.java +++ b/src/test/java/com/und/server/member/controller/MemberControllerTest.java @@ -139,7 +139,7 @@ void Given_AuthenticatedUser_When_UpdateNickname_Then_ReturnsOkWithUpdatedInfo() @DisplayName("Fails to get member and returns unauthorized when user is not authenticated") void Given_UnauthenticatedUser_When_GetMember_Then_ReturnsUnauthorized() throws Exception { // given - final String url = "/v1/member"; + final String url = "/v1/member/nickname"; final AuthErrorResult errorResult = AuthErrorResult.UNAUTHORIZED_ACCESS; doReturn(true).when(authMemberArgumentResolver).supportsParameter(any()); @@ -161,7 +161,7 @@ void Given_UnauthenticatedUser_When_GetMember_Then_ReturnsUnauthorized() throws @DisplayName("Succeeds in getting member nickname for an authenticated user") void Given_AuthenticatedUser_When_GetMember_Then_ReturnsOkWithNickname() throws Exception { // given - final String url = "/v1/member"; + final String url = "/v1/member/nickname"; final Long memberId = 1L; final String nickname = "Chori"; final Member member = Member.builder()