Skip to content

Commit 5c0de59

Browse files
committed
[#129]; test(auth): 타입 불일치·접두사 호환·tokenType 클레임 테스트 추가
1 parent b22e4b9 commit 5c0de59

1 file changed

Lines changed: 73 additions & 4 deletions

File tree

src/test/kotlin/com/yourssu/scouter/common/implement/support/security/token/JwtTokenProcessorTest.kt

Lines changed: 73 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class JwtTokenProcessorTest {
2929
val actual = tokenProcessor.encode(LocalDateTime.now(), TokenType.ACCESS, privateClaims)
3030

3131
// then
32-
assertThat(actual).contains("Bearer ")
32+
assertThat(actual).doesNotContain("Bearer ")
3333
}
3434

3535
@Test
@@ -39,9 +39,8 @@ class JwtTokenProcessorTest {
3939
val invalidTypeToken = "Basic12 abcde"
4040

4141
// when & then
42-
Assertions.assertThatThrownBy { tokenProcessor.decode(TokenType.ACCESS, invalidTypeToken) }
43-
.isInstanceOf(InvalidTokenException::class.java)
44-
.hasMessage("Bearer 타입이 아닙니다.")
42+
val actual: Claims? = tokenProcessor.decode(TokenType.ACCESS, invalidTypeToken)
43+
assertThat(actual).isNull()
4544
}
4645

4746
@Test
@@ -77,4 +76,74 @@ class JwtTokenProcessorTest {
7776
// then
7877
assertThat((actual!![keyName] as Number).toLong()).isEqualTo(userId)
7978
}
79+
80+
@Test
81+
fun `리프레시 토큰이 아닙니다 예외를 던진다`() {
82+
// given
83+
val tokenProcessor = JwtTokenProcessor(jwtProperties)
84+
val claims = mapOf("userId" to 1L)
85+
val accessToken = tokenProcessor.encode(
86+
LocalDateTime.now(ZoneId.of("Asia/Seoul")),
87+
TokenType.ACCESS,
88+
claims
89+
)
90+
91+
// when & then
92+
Assertions.assertThatThrownBy { tokenProcessor.decode(TokenType.REFRESH, accessToken) }
93+
.isInstanceOf(InvalidTokenException::class.java)
94+
.hasMessage("리프레시 토큰이 아닙니다.")
95+
}
96+
97+
@Test
98+
fun `액세스 토큰이 아닙니다 예외를 던진다`() {
99+
// given
100+
val tokenProcessor = JwtTokenProcessor(jwtProperties)
101+
val claims = mapOf("userId" to 1L)
102+
val refreshToken = tokenProcessor.encode(
103+
LocalDateTime.now(ZoneId.of("Asia/Seoul")),
104+
TokenType.REFRESH,
105+
claims
106+
)
107+
108+
// when & then
109+
Assertions.assertThatThrownBy { tokenProcessor.decode(TokenType.ACCESS, refreshToken) }
110+
.isInstanceOf(InvalidTokenException::class.java)
111+
.hasMessage("액세스 토큰이 아닙니다.")
112+
}
113+
114+
@Test
115+
fun `Bearer 접두사가 있어도 디코딩된다`() {
116+
// given
117+
val tokenProcessor = JwtTokenProcessor(jwtProperties)
118+
val claims = mapOf("userId" to 1L)
119+
val token = tokenProcessor.encode(
120+
LocalDateTime.now(ZoneId.of("Asia/Seoul")),
121+
TokenType.ACCESS,
122+
claims
123+
)
124+
125+
// when
126+
val actual: Claims? = tokenProcessor.decode(TokenType.ACCESS, "Bearer $token")
127+
128+
// then
129+
assertThat(actual).isNotNull()
130+
}
131+
132+
@Test
133+
fun `발급된 토큰에 tokenType 클레임이 포함된다`() {
134+
// given
135+
val tokenProcessor = JwtTokenProcessor(jwtProperties)
136+
val claims = mapOf("userId" to 1L)
137+
val accessToken = tokenProcessor.encode(
138+
LocalDateTime.now(ZoneId.of("Asia/Seoul")),
139+
TokenType.ACCESS,
140+
claims
141+
)
142+
143+
// when
144+
val actual: Claims? = tokenProcessor.decode(TokenType.ACCESS, accessToken)
145+
146+
// then
147+
assertThat(actual!!["tokenType"]).isEqualTo("ACCESS")
148+
}
80149
}

0 commit comments

Comments
 (0)