Skip to content

Commit b286bf2

Browse files
authored
Feat/member info (#149)
1 parent 7fb7734 commit b286bf2

2 files changed

Lines changed: 68 additions & 0 deletions

File tree

src/main/java/com/und/server/member/controller/MemberController.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import org.springframework.http.HttpStatus;
44
import org.springframework.http.ResponseEntity;
55
import org.springframework.web.bind.annotation.DeleteMapping;
6+
import org.springframework.web.bind.annotation.GetMapping;
67
import org.springframework.web.bind.annotation.PatchMapping;
78
import org.springframework.web.bind.annotation.RequestBody;
89
import org.springframework.web.bind.annotation.RequestMapping;
@@ -11,6 +12,7 @@
1112
import com.und.server.auth.filter.AuthMember;
1213
import com.und.server.member.dto.request.NicknameRequest;
1314
import com.und.server.member.dto.response.MemberResponse;
15+
import com.und.server.member.entity.Member;
1416
import com.und.server.member.service.MemberService;
1517

1618
import io.swagger.v3.oas.annotations.Parameter;
@@ -25,6 +27,15 @@ public class MemberController {
2527

2628
private final MemberService memberService;
2729

30+
@GetMapping("/member/nickname")
31+
public ResponseEntity<String> getNickname(
32+
@Parameter(hidden = true) @AuthMember final Long memberId
33+
) {
34+
final Member member = memberService.findMemberById(memberId);
35+
36+
return ResponseEntity.status(HttpStatus.OK).body(member.getNickname());
37+
}
38+
2839
@PatchMapping("/member/nickname")
2940
public ResponseEntity<MemberResponse> updateNickname(
3041
@Parameter(hidden = true) @AuthMember final Long memberId,

src/test/java/com/und/server/member/controller/MemberControllerTest.java

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
package com.und.server.member.controller;
22

3+
import static org.assertj.core.api.Assertions.assertThat;
34
import static org.mockito.ArgumentMatchers.any;
45
import static org.mockito.Mockito.doReturn;
56
import static org.mockito.Mockito.doThrow;
67
import static org.mockito.Mockito.verify;
78
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
89
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
910

11+
import java.nio.charset.StandardCharsets;
12+
1013
import org.junit.jupiter.api.BeforeEach;
1114
import org.junit.jupiter.api.DisplayName;
1215
import org.junit.jupiter.api.Test;
@@ -28,6 +31,7 @@
2831
import com.und.server.common.exception.ServerException;
2932
import com.und.server.member.dto.request.NicknameRequest;
3033
import com.und.server.member.dto.response.MemberResponse;
34+
import com.und.server.member.entity.Member;
3135
import com.und.server.member.service.MemberService;
3236

3337
@ExtendWith(MockitoExtension.class)
@@ -131,6 +135,59 @@ void Given_AuthenticatedUser_When_UpdateNickname_Then_ReturnsOkWithUpdatedInfo()
131135
.andExpect(jsonPath("$.nickname").value(newNickname));
132136
}
133137

138+
@Test
139+
@DisplayName("Fails to get member and returns unauthorized when user is not authenticated")
140+
void Given_UnauthenticatedUser_When_GetMember_Then_ReturnsUnauthorized() throws Exception {
141+
// given
142+
final String url = "/v1/member/nickname";
143+
final AuthErrorResult errorResult = AuthErrorResult.UNAUTHORIZED_ACCESS;
144+
145+
doReturn(true).when(authMemberArgumentResolver).supportsParameter(any());
146+
doThrow(new ServerException(errorResult))
147+
.when(authMemberArgumentResolver).resolveArgument(any(), any(), any(), any());
148+
149+
// when
150+
final ResultActions resultActions = mockMvc.perform(
151+
MockMvcRequestBuilders.get(url)
152+
);
153+
154+
// then
155+
resultActions.andExpect(status().isUnauthorized())
156+
.andExpect(jsonPath("$.code").value(errorResult.name()))
157+
.andExpect(jsonPath("$.message").value(errorResult.getMessage()));
158+
}
159+
160+
@Test
161+
@DisplayName("Succeeds in getting member nickname for an authenticated user")
162+
void Given_AuthenticatedUser_When_GetMember_Then_ReturnsOkWithNickname() throws Exception {
163+
// given
164+
final String url = "/v1/member/nickname";
165+
final Long memberId = 1L;
166+
final String nickname = "Chori";
167+
final Member member = Member.builder()
168+
.id(memberId)
169+
.nickname(nickname)
170+
.build();
171+
172+
doReturn(true).when(authMemberArgumentResolver).supportsParameter(any());
173+
doReturn(memberId).when(authMemberArgumentResolver).resolveArgument(any(), any(), any(), any());
174+
doReturn(member).when(memberService).findMemberById(memberId);
175+
176+
// when
177+
final ResultActions resultActions = mockMvc.perform(
178+
MockMvcRequestBuilders.get(url)
179+
);
180+
181+
// then
182+
final String responseContent = resultActions
183+
.andExpect(status().isOk())
184+
.andReturn()
185+
.getResponse()
186+
.getContentAsString(StandardCharsets.UTF_8);
187+
assertThat(responseContent).isEqualTo(nickname);
188+
verify(memberService).findMemberById(memberId);
189+
}
190+
134191
@Test
135192
@DisplayName("Fails to delete member and returns unauthorized when user is not authenticated")
136193
void Given_UnauthenticatedUser_When_DeleteMember_Then_ReturnsUnauthorized() throws Exception {

0 commit comments

Comments
 (0)