Skip to content

Commit b6e4cb9

Browse files
committed
test(jwt): 프로덕션 코드 수정에 따라서 테스트 코드 수정
- jwt claims에서 UUID 추출이 불가능해서 String으로 추출 후, UUID로 변경
1 parent 85ca3df commit b6e4cb9

File tree

2 files changed

+32
-32
lines changed

2 files changed

+32
-32
lines changed

src/test/java/com/somemore/global/auth/jwt/service/JwtServiceTest.java

Lines changed: 22 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.somemore.global.auth.jwt.service;
22

3+
import com.somemore.global.auth.authentication.UserIdentity;
34
import com.somemore.global.auth.jwt.domain.EncodedToken;
45
import com.somemore.global.auth.jwt.domain.RefreshToken;
56
import com.somemore.global.auth.jwt.domain.TokenType;
@@ -17,6 +18,7 @@
1718
import org.springframework.beans.factory.annotation.Autowired;
1819
import org.springframework.data.redis.core.RedisTemplate;
1920
import org.springframework.mock.web.MockHttpServletResponse;
21+
import org.springframework.transaction.annotation.Transactional;
2022

2123
import javax.crypto.SecretKey;
2224
import java.time.Instant;
@@ -26,7 +28,7 @@
2628
import static org.assertj.core.api.Assertions.assertThat;
2729
import static org.assertj.core.api.Assertions.assertThatThrownBy;
2830

29-
31+
@Transactional
3032
class 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

src/test/java/com/somemore/global/auth/sign/SignOutVolunteerServiceTest.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.somemore.global.auth.sign;
22

3+
import com.somemore.global.auth.authentication.UserIdentity;
34
import com.somemore.global.auth.jwt.domain.EncodedToken;
45
import com.somemore.global.auth.jwt.domain.TokenType;
56
import com.somemore.global.auth.jwt.exception.JwtErrorType;
@@ -17,12 +18,14 @@
1718
import org.springframework.beans.factory.annotation.Autowired;
1819
import org.springframework.data.redis.core.RedisTemplate;
1920
import org.springframework.mock.web.MockHttpServletResponse;
21+
import org.springframework.transaction.annotation.Transactional;
2022

2123
import java.util.UUID;
2224

2325
import static org.assertj.core.api.Assertions.assertThatNoException;
2426
import static org.assertj.core.api.Assertions.assertThatThrownBy;
2527

28+
@Transactional
2629
class SignOutServiceTest extends IntegrationTestSupport {
2730

2831
@Autowired
@@ -35,15 +38,15 @@ class SignOutServiceTest extends IntegrationTestSupport {
3538
private RedisTemplate<String, Object> redisTemplate;
3639

3740
private MockHttpServletResponse response;
38-
private UUID userId;
39-
private UserRole role;
4041

42+
private final UUID userId = UUID.randomUUID();
43+
private final UUID roleId = UUID.randomUUID();
44+
private final UserRole role = UserRole.VOLUNTEER;
45+
private final UserIdentity userIdentity = UserIdentity.of(userId, roleId, role);;
4146

4247
@BeforeEach
4348
void setUp() {
4449
response = new MockHttpServletResponse();
45-
userId = UUID.randomUUID();
46-
role = UserRole.VOLUNTEER;
4750
}
4851

4952
@AfterEach
@@ -53,15 +56,15 @@ void tearDown() {
5356
}
5457

5558
@Test
56-
@DisplayName("로그아웃 시 액세스 토큰 쿠키를 삭제하고 리프레시 토큰을 제거해야 한다.")
59+
@DisplayName("로그아웃 시 리프레시 토큰을 제거해야 한다.")
5760
void signOutDeletesTokens() {
5861
// Given
59-
EncodedToken accessToken = jwtGenerator.generateToken(userId.toString(), role.getAuthority(), TokenType.ACCESS);
62+
EncodedToken accessToken = jwtGenerator.generateToken(userIdentity, TokenType.ACCESS);
6063

6164
RefreshToken refreshToken = new RefreshToken(
6265
userId.toString(),
6366
accessToken,
64-
jwtGenerator.generateToken(userId.toString(), role.getAuthority(), TokenType.REFRESH));
67+
jwtGenerator.generateToken(userIdentity, TokenType.REFRESH));
6568

6669
tokenManager.save(refreshToken);
6770

0 commit comments

Comments
 (0)