-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[feat] Add TokenProvider, AuthrizationExtractor Test
- Loading branch information
Showing
2 changed files
with
157 additions
and
2 deletions.
There are no files selected for viewing
94 changes: 93 additions & 1 deletion
94
src/test/java/allercheck/backend/global/web/jwt/AuthorizationExtractorTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,94 @@ | ||
package allercheck.backend.global.web.jwt;public class AuthorizationExtractorTest { | ||
package allercheck.backend.global.web.jwt; | ||
|
||
import static org.assertj.core.api.Assertions.assertThat; | ||
import static org.assertj.core.api.Assertions.assertThatThrownBy; | ||
import static org.mockito.Mockito.mock; | ||
import static org.mockito.Mockito.when; | ||
|
||
import allercheck.backend.domain.auth.exception.InvalidTokenException; | ||
import allercheck.backend.global.jwt.AuthorizationExtractor; | ||
import jakarta.servlet.http.HttpServletRequest; | ||
import org.junit.jupiter.api.DisplayNameGeneration; | ||
import org.junit.jupiter.api.DisplayNameGenerator; | ||
import org.junit.jupiter.api.Test; | ||
import org.springframework.beans.factory.annotation.Autowired; | ||
import org.springframework.boot.test.context.SpringBootTest; | ||
import org.springframework.http.HttpHeaders; | ||
import org.springframework.test.context.TestPropertySource; | ||
|
||
@SuppressWarnings("NonAsciiCharacters") | ||
@TestPropertySource(locations = "classpath:secure.properties") | ||
@DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores.class) | ||
@SpringBootTest | ||
public class AuthorizationExtractorTest { | ||
|
||
@Autowired | ||
private AuthorizationExtractor authorizationExtractor; | ||
|
||
@Test | ||
void 액세스_토큰을_추출한다() { | ||
// given | ||
HttpServletRequest request = mock(HttpServletRequest.class); | ||
when(request.getHeader(HttpHeaders.AUTHORIZATION)).thenReturn("Bearer 1234"); | ||
|
||
// when | ||
String accessToken = authorizationExtractor.extract(request); | ||
|
||
// then | ||
assertThat(accessToken).isEqualTo("1234"); | ||
} | ||
|
||
@Test | ||
void Token_값이_Bearer_접두사로_시작하면_예외가_발생한다() { | ||
//given | ||
HttpServletRequest request = mock(HttpServletRequest.class); | ||
when(request.getHeader(HttpHeaders.AUTHORIZATION)).thenReturn("1234"); | ||
|
||
//when & then | ||
assertThatThrownBy(() -> authorizationExtractor.extract(request)) | ||
.isInstanceOf(InvalidTokenException.class); | ||
} | ||
|
||
@Test | ||
void Token_값이_존재하지_않으면_예외가_발생한다() { | ||
//given | ||
HttpServletRequest request = mock(HttpServletRequest.class); | ||
when(request.getHeader(HttpHeaders.AUTHORIZATION)).thenReturn(""); | ||
|
||
//when & then | ||
assertThatThrownBy(() -> authorizationExtractor.extract(request)) | ||
.isInstanceOf(InvalidTokenException.class); | ||
} | ||
|
||
@Test | ||
void header가_비어있으면_예외가_발생한다() { | ||
//given | ||
HttpServletRequest request = mock(HttpServletRequest.class); | ||
when(request.getHeader("")).thenReturn("1234"); | ||
|
||
//when & then | ||
assertThatThrownBy(() -> authorizationExtractor.extract(request)) | ||
.isInstanceOf(InvalidTokenException.class); | ||
} | ||
|
||
@Test | ||
void header_값이_null이면_예외가_발생한다() { | ||
//given | ||
HttpServletRequest request = mock(HttpServletRequest.class); | ||
when(request.getHeader(null)).thenReturn("1234"); | ||
|
||
//when & then | ||
assertThatThrownBy(() -> authorizationExtractor.extract(request)) | ||
.isInstanceOf(InvalidTokenException.class); | ||
} | ||
|
||
@Test | ||
void 액세스_토큰값이_누락되면_예외가_발생한다() { | ||
//given | ||
HttpServletRequest request = mock(HttpServletRequest.class); | ||
|
||
//when & then | ||
assertThatThrownBy(() -> authorizationExtractor.extract(request)) | ||
.isInstanceOf(InvalidTokenException.class); | ||
} | ||
} |
65 changes: 64 additions & 1 deletion
65
src/test/java/allercheck/backend/global/web/jwt/TokenProviderTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,65 @@ | ||
package allercheck.backend.global.web.jwt;public class TokenProviderTest { | ||
package allercheck.backend.global.web.jwt; | ||
|
||
import static org.assertj.core.api.Assertions.assertThat; | ||
import static org.assertj.core.api.Assertions.assertThatThrownBy; | ||
|
||
import allercheck.backend.domain.auth.exception.InvalidTokenException; | ||
import allercheck.backend.global.jwt.TokenProvider; | ||
import org.junit.jupiter.api.BeforeEach; | ||
import org.junit.jupiter.api.DisplayNameGeneration; | ||
import org.junit.jupiter.api.DisplayNameGenerator; | ||
import org.junit.jupiter.api.Test; | ||
import org.springframework.beans.factory.annotation.Autowired; | ||
import org.springframework.beans.factory.annotation.Value; | ||
import org.springframework.boot.test.context.SpringBootTest; | ||
import org.springframework.test.context.TestPropertySource; | ||
|
||
@SuppressWarnings("NonAsciiCharacters") | ||
@TestPropertySource(locations = "classpath:secure.properties") | ||
@DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores.class) | ||
@SpringBootTest | ||
public class TokenProviderTest { | ||
|
||
@Value("${jwt.secret-key}") | ||
private String secretKey; | ||
|
||
@Value("${jwt.token.expire-length}") | ||
private long validityTime; | ||
|
||
@Autowired | ||
private TokenProvider tokenProvider; | ||
|
||
@BeforeEach | ||
void setUp() { | ||
tokenProvider = new TokenProvider(secretKey, validityTime); | ||
} | ||
|
||
@Test | ||
public void jwt_토큰을_생성한다() { | ||
//given | ||
String payload = String.valueOf(1L); | ||
|
||
// when | ||
String token = tokenProvider.createToken(payload); | ||
|
||
// then | ||
assertThat(token).isNotEmpty(); | ||
} | ||
|
||
@Test | ||
public void 토큰_정보로_payload를_조회한다() { | ||
//given | ||
String payload = String.valueOf(1L); | ||
String token = tokenProvider.createToken(payload); | ||
|
||
//when & then | ||
assertThat(tokenProvider.getPayLoad(token)).isEqualTo(payload); | ||
} | ||
|
||
@Test | ||
public void 토큰에_null값이_들어가면_예외가_발생한다() { | ||
// then | ||
assertThatThrownBy(() -> tokenProvider.validateToken(null)) | ||
.isInstanceOf(InvalidTokenException.class); | ||
} | ||
} |