11package com .somemore .global .auth .jwt .service ;
22
3+ import com .somemore .global .auth .authentication .UserIdentity ;
34import com .somemore .global .auth .jwt .domain .EncodedToken ;
45import com .somemore .global .auth .jwt .domain .RefreshToken ;
56import com .somemore .global .auth .jwt .domain .TokenType ;
1718import org .springframework .beans .factory .annotation .Autowired ;
1819import org .springframework .data .redis .core .RedisTemplate ;
1920import org .springframework .mock .web .MockHttpServletResponse ;
21+ import org .springframework .transaction .annotation .Transactional ;
2022
2123import javax .crypto .SecretKey ;
2224import java .time .Instant ;
2628import static org .assertj .core .api .Assertions .assertThat ;
2729import static org .assertj .core .api .Assertions .assertThatThrownBy ;
2830
29-
31+ @ Transactional
3032class JwtServiceTest extends IntegrationTestSupport {
3133
3234 @ Autowired
@@ -40,6 +42,11 @@ class JwtServiceTest extends IntegrationTestSupport {
4042 @ Autowired
4143 private RedisTemplate <String , Object > redisTemplate ;
4244
45+ private final UUID userId = UUID .randomUUID ();
46+ private final UUID roleId = UUID .randomUUID ();
47+ private final UserRole role = UserRole .VOLUNTEER ;
48+ private final UserIdentity userIdentity = UserIdentity .of (userId , roleId , role );;
49+
4350 @ AfterEach
4451 void tearDown () {
4552 redisTemplate .keys ("*" )
@@ -50,16 +57,14 @@ void tearDown() {
5057 @ Test
5158 void generateAndValidateAccessToken () {
5259 // given
53- String userId = UUID .randomUUID ().toString ();
54- UserRole role = UserRole .VOLUNTEER ;
55- TokenType tokenType = TokenType .ACCESS ;
5660
5761 // when
58- EncodedToken token = jwtService .generateToken (userId , role . getAuthority (), tokenType );
62+ EncodedToken token = jwtService .generateToken (userIdentity , TokenType . ACCESS );
5963
6064 // then
6165 Claims claims = jwtService .getClaims (token );
62- assertThat (claims .get ("id" , String .class )).isEqualTo (userId );
66+ assertThat (claims .get ("userId" , String .class )).isEqualTo (userId .toString ());
67+ assertThat (claims .get ("roleId" , String .class )).isEqualTo (roleId .toString ());
6368 assertThat (claims .get ("role" , String .class )).isEqualTo (role .getAuthority ());
6469 assertThat (claims .getExpiration ()).isNotNull ();
6570 }
@@ -68,16 +73,14 @@ void generateAndValidateAccessToken() {
6873 @ Test
6974 void generateAndValidateLoginToken () {
7075 // given
71- String userId = UUID .randomUUID ().toString ();
72- UserRole role = UserRole .VOLUNTEER ;
73- TokenType tokenType = TokenType .ACCESS ;
7476
7577 // when
76- EncodedToken token = jwtService .generateToken (userId , role . getAuthority (), tokenType );
78+ EncodedToken token = jwtService .generateToken (userIdentity , TokenType . SIGN_IN );
7779
7880 // then
7981 Claims claims = jwtService .getClaims (token );
80- assertThat (claims .get ("id" , String .class )).isEqualTo (userId );
82+ assertThat (claims .get ("userId" , String .class )).isEqualTo (userId .toString ());
83+ assertThat (claims .get ("roleId" , String .class )).isEqualTo (roleId .toString ());
8184 assertThat (claims .get ("role" , String .class )).isEqualTo (role .getAuthority ());
8285 assertThat (claims .getExpiration ()).isNotNull ();
8386 }
@@ -86,12 +89,10 @@ void generateAndValidateLoginToken() {
8689 @ Test
8790 void tokenExpirationPeriodIsExact () {
8891 // given
89- String userId = UUID .randomUUID ().toString ();
90- UserRole role = UserRole .VOLUNTEER ;
9192
9293 // when
93- EncodedToken accessToken = jwtService .generateToken (userId , role . getAuthority () , TokenType .ACCESS );
94- EncodedToken refreshToken = jwtService .generateToken (userId , role . getAuthority () , TokenType .REFRESH );
94+ EncodedToken accessToken = jwtService .generateToken (userIdentity , TokenType .ACCESS );
95+ EncodedToken refreshToken = jwtService .generateToken (userIdentity , TokenType .REFRESH );
9596
9697 // then
9798 Claims accessClaims = jwtService .getClaims (accessToken );
@@ -108,12 +109,10 @@ void tokenExpirationPeriodIsExact() {
108109 @ Test
109110 void multipleTokensForSameUserAreDifferent () {
110111 // given
111- String userId = UUID .randomUUID ().toString ();
112- UserRole role = UserRole .VOLUNTEER ;
113112
114113 // when
115- EncodedToken token1 = jwtService .generateToken (userId , role . getAuthority () , TokenType .ACCESS );
116- EncodedToken token2 = jwtService .generateToken (userId , role . getAuthority () , TokenType .ACCESS );
114+ EncodedToken token1 = jwtService .generateToken (userIdentity , TokenType .ACCESS );
115+ EncodedToken token2 = jwtService .generateToken (userIdentity , TokenType .ACCESS );
117116
118117 // then
119118 assertThat (token1 .value ()).isNotEqualTo (token2 .value ());
@@ -123,12 +122,10 @@ void multipleTokensForSameUserAreDifferent() {
123122 @ Test
124123 void throwExceptionWhenRefreshTokenIsInvalid () {
125124 // given
126- String userId = UUID .randomUUID ().toString ();
127- UserRole role = UserRole .VOLUNTEER ;
128- EncodedToken expiredAccessToken = createExpiredToken (userId , role );
125+ EncodedToken expiredAccessToken = createExpiredToken (userId .toString (), role );
126+ EncodedToken expiredRefreshToken = createExpiredToken (userId .toString (), role );
129127
130- EncodedToken expiredRefreshToken = createExpiredToken (userId , role );
131- RefreshToken refreshToken = new RefreshToken (userId , expiredAccessToken , expiredRefreshToken );
128+ RefreshToken refreshToken = new RefreshToken (userId .toString (), expiredAccessToken , expiredRefreshToken );
132129 tokenManager .save (refreshToken );
133130
134131 // when
@@ -167,7 +164,7 @@ void refreshTokenIsUpdated() {
167164 EncodedToken expiredAccessToken = createExpiredToken (userId , role );
168165 RefreshToken oldRefreshToken = createAndSaveRefreshToken (userId , expiredAccessToken , Instant .now ().plusMillis (TokenType .REFRESH .getPeriodInMillis ()));
169166
170- EncodedToken newAccessToken = jwtService .generateToken (userId , role . getAuthority () , TokenType .ACCESS );
167+ EncodedToken newAccessToken = jwtService .generateToken (userIdentity , TokenType .ACCESS );
171168 RefreshToken newRefreshToken = createAndSaveRefreshToken (userId , newAccessToken , Instant .now ().plusMillis (TokenType .REFRESH .getPeriodInMillis ()));
172169
173170 // when
0 commit comments