Skip to content

Commit f534e43

Browse files
committed
test[OAuth]: 소셜 간편 로그인 테스트 코드 추가
1 parent e02def2 commit f534e43

File tree

10 files changed

+1448
-63
lines changed

10 files changed

+1448
-63
lines changed

backend/src/test/java/com/ai/lawyer/domain/member/controller/MemberControllerTest.java

Lines changed: 27 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66
import com.ai.lawyer.domain.member.exception.MemberAuthenticationException;
77
import com.ai.lawyer.domain.member.exception.MemberExceptionHandler;
88
import com.fasterxml.jackson.databind.ObjectMapper;
9-
import jakarta.servlet.http.Cookie;
10-
import jakarta.servlet.http.HttpServletRequest;
119
import jakarta.servlet.http.HttpServletResponse;
1210
import org.junit.jupiter.api.BeforeEach;
1311
import org.junit.jupiter.api.DisplayName;
@@ -47,9 +45,6 @@ class MemberControllerTest {
4745
@Mock
4846
private MemberService memberService;
4947

50-
@Mock
51-
private HttpServletRequest request;
52-
5348
@Mock
5449
private HttpServletResponse response;
5550

@@ -247,56 +242,51 @@ void logout_Success_Unauthenticated() {
247242
}
248243

249244
@Test
250-
@DisplayName("토큰 재발급 성공 - 쿠키에서 Refresh Token 추출하여 Redis 검증")
245+
@DisplayName("토큰 재발급 성공 - Authentication 기반")
251246
void refreshToken_Success() {
252247
// given
253-
Cookie[] cookies = {new Cookie("refreshToken", "validRefreshToken")};
254-
given(request.getCookies()).willReturn(cookies);
255-
given(memberService.refreshToken(eq("validRefreshToken"), eq(response)))
256-
.willReturn(memberResponse);
248+
Long memberId = 1L;
249+
Authentication testAuth = new UsernamePasswordAuthenticationToken(
250+
memberId,
251+
null,
252+
List.of(new SimpleGrantedAuthority("ROLE_USER"))
253+
);
254+
given(memberService.getMemberById(memberId)).willReturn(memberResponse);
257255

258256
// when
259-
ResponseEntity<MemberResponse> result = memberController.refreshToken(request, response);
257+
ResponseEntity<MemberResponse> result = memberController.refreshToken(testAuth);
260258

261259
// then
262260
assertThat(result.getStatusCode()).isEqualTo(HttpStatus.OK);
263261
assertThat(result.getBody()).isEqualTo(memberResponse);
264-
265-
// 쿠키에서 refreshToken이 정상적으로 추출되어 서비스에 전달되는지 검증
266-
verify(memberService).refreshToken(eq("validRefreshToken"), eq(response));
262+
verify(memberService).getMemberById(memberId);
267263
}
268264

269265
@Test
270-
@DisplayName("토큰 재발급 실패 - 리프레시 토큰 없음")
271-
void refreshToken_Fail_NoRefreshToken() {
272-
// given
273-
given(request.getCookies()).willReturn(null);
266+
@DisplayName("토큰 재발급 실패 - 인증 정보 없음")
267+
void refreshToken_Fail_NoAuthentication() {
268+
// given - authentication이 null인 경우
274269

275-
// when & then - 예외가 발생해야 함
276-
try {
277-
memberController.refreshToken(request, response);
278-
} catch (MemberAuthenticationException e) {
279-
assertThat(e.getMessage()).isEqualTo("리프레시 토큰이 없습니다.");
280-
}
281-
282-
verify(memberService, never()).refreshToken(anyString(), any());
270+
// when & then
271+
assertThatThrownBy(() -> memberController.refreshToken(null))
272+
.isInstanceOf(MemberAuthenticationException.class)
273+
.hasMessage("인증이 필요합니다.");
283274
}
284275

285276
@Test
286-
@DisplayName("토큰 재발급 실패 - 유효하지 않은 토큰")
287-
void refreshToken_Fail_InvalidToken() {
277+
@DisplayName("토큰 재발급 실패 - Principal 없음")
278+
void refreshToken_Fail_NoPrincipal() {
288279
// given
289-
Cookie[] cookies = {new Cookie("refreshToken", "invalidRefreshToken")};
290-
given(request.getCookies()).willReturn(cookies);
291-
given(memberService.refreshToken(eq("invalidRefreshToken"), eq(response)))
292-
.willThrow(new IllegalArgumentException("유효하지 않은 리프레시 토큰입니다."));
280+
Authentication testAuth = new UsernamePasswordAuthenticationToken(
281+
null,
282+
null,
283+
List.of(new SimpleGrantedAuthority("ROLE_USER"))
284+
);
293285

294286
// when & then
295-
assertThatThrownBy(() -> memberController.refreshToken(request, response))
296-
.isInstanceOf(IllegalArgumentException.class)
297-
.hasMessage("유효하지 않은 리프레시 토큰입니다.");
298-
299-
verify(memberService).refreshToken(eq("invalidRefreshToken"), eq(response));
287+
assertThatThrownBy(() -> memberController.refreshToken(testAuth))
288+
.isInstanceOf(MemberAuthenticationException.class)
289+
.hasMessage("인증이 필요합니다.");
300290
}
301291

302292
@Test

0 commit comments

Comments
 (0)