From c6df36eb345821c4b9eb0cd65de632d76740cdb1 Mon Sep 17 00:00:00 2001 From: daily1313 Date: Sat, 23 Mar 2024 16:31:59 +0900 Subject: [PATCH] feat: Add JwtInterceptor unit test --- .../web/interceptor/JwtInterceptorTest.java | 73 ++++++++++++++++++- 1 file changed, 72 insertions(+), 1 deletion(-) diff --git a/src/test/java/allercheck/backend/global/web/interceptor/JwtInterceptorTest.java b/src/test/java/allercheck/backend/global/web/interceptor/JwtInterceptorTest.java index 2855349..1b26e00 100644 --- a/src/test/java/allercheck/backend/global/web/interceptor/JwtInterceptorTest.java +++ b/src/test/java/allercheck/backend/global/web/interceptor/JwtInterceptorTest.java @@ -1,2 +1,73 @@ -package allercheck.backend.global.web.interceptor;public class JwtInterceptorTest { +package allercheck.backend.global.web.interceptor; + +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import allercheck.backend.global.jwt.AuthorizationExtractor; +import allercheck.backend.global.jwt.TokenProvider; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import org.junit.jupiter.api.DisplayNameGeneration; +import org.junit.jupiter.api.DisplayNameGenerator; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.http.HttpHeaders; +import org.springframework.web.cors.CorsUtils; + +@SuppressWarnings("NonAsciiCharacters") +@DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores.class) +@ExtendWith(MockitoExtension.class) +public class JwtInterceptorTest { + + @InjectMocks + private JwtInterceptor jwtInterceptor; + + @Mock + private AuthorizationExtractor authorizationExtractor; + + @Mock + private Object handler; + + @Mock + private TokenProvider tokenProvider; + + @Mock + private HttpServletRequest request; + + @Mock + private HttpServletResponse response; + + + @Test + public void preflight_요청이_들어오면_true를_반환한다() throws Exception { + // given + when(request.getMethod()).thenReturn("OPTIONS"); + when(request.getHeader("Access-Control-Request-Method")).thenReturn("POST"); + when(request.getHeader("Origin")).thenReturn("https://allercheck-frontend.vercel.app"); + + // when + boolean result = CorsUtils.isPreFlightRequest(request); + + // then + assertTrue(result); + } + + @Test + public void 토큰을_추출하고_이름을_설정한다() throws Exception { + // given + when(request.getHeader(HttpHeaders.AUTHORIZATION)).thenReturn("Bearer token"); + when(authorizationExtractor.extract(request)).thenReturn("Bearer token"); + when(tokenProvider.getPayLoad("token")).thenReturn("name"); + + // when + boolean result = jwtInterceptor.preHandle(request, response, handler); + + // then + assertTrue(result); + verify(request).setAttribute("name", "name"); + } }