@@ -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