diff --git a/src/main/java/com/prgrms/catchtable/common/Role.java b/src/main/java/com/prgrms/catchtable/common/Role.java index b8b13051..f2e3d637 100644 --- a/src/main/java/com/prgrms/catchtable/common/Role.java +++ b/src/main/java/com/prgrms/catchtable/common/Role.java @@ -1,5 +1,9 @@ package com.prgrms.catchtable.common; +import static com.prgrms.catchtable.common.exception.ErrorCode.INVALID_INPUT_TYPE; + +import com.prgrms.catchtable.common.exception.custom.BadRequestCustomException; +import java.util.Arrays; import lombok.Getter; import lombok.RequiredArgsConstructor; @@ -11,4 +15,15 @@ public enum Role { OWNER("ROLE_OWNER"); private final String role; + + public static Role of(String type) { + return Arrays.stream(values()) + .filter(role -> role.isEqual(type)) + .findAny() + .orElseThrow(() -> new BadRequestCustomException(INVALID_INPUT_TYPE)); + } + + private boolean isEqual(String input) { + return input.equals(this.role); + } } diff --git a/src/main/java/com/prgrms/catchtable/common/exception/ErrorCode.java b/src/main/java/com/prgrms/catchtable/common/exception/ErrorCode.java index d9349316..8b9662cd 100644 --- a/src/main/java/com/prgrms/catchtable/common/exception/ErrorCode.java +++ b/src/main/java/com/prgrms/catchtable/common/exception/ErrorCode.java @@ -7,6 +7,7 @@ @RequiredArgsConstructor public enum ErrorCode { NOT_EXIST_MEMBER("존재하지 않는 회원입니다."), + NOT_EXIST_OWNER("존재하지 않는 점주입니다."), NOT_FOUND_REFRESH_TOKEN("유효하지 않은 RefreshToken입니다."), TOKEN_EXPIRES("토큰이 만료되었습니다. 다시 로그인 해 주세요."), @@ -31,10 +32,9 @@ public enum ErrorCode { SHOP_NOT_RUNNING("가게가 영업시간이 아닙니다."), INTERNAL_SERVER_ERROR("내부 서버 오류입니다."), - ALREADY_EXIST_OWNER("이미 존재하는 점주입니다"), - NOT_EXIST_OWNER("해당 아이디의 점주가 존재하지 않습니다."), - BAD_REQUEST_EMAIL_OR_PASSWORD("이메일 혹은 비밀번호를 확인해주세요"), - BAD_REQUEST_INPUT_GENDER_TYPE("성별 타입을 양식대로 입력해주세요"); + INVALID_EMAIL_OR_PASSWORD("이메일 혹은 비밀번호를 확인해주세요"), + INVALID_INPUT_TYPE("성별 타입을 양식대로 입력해주세요"); + private final String message; } \ No newline at end of file diff --git a/src/main/java/com/prgrms/catchtable/jwt/domain/RefreshToken.java b/src/main/java/com/prgrms/catchtable/jwt/domain/RefreshToken.java index b6ef9087..b53ca7b9 100644 --- a/src/main/java/com/prgrms/catchtable/jwt/domain/RefreshToken.java +++ b/src/main/java/com/prgrms/catchtable/jwt/domain/RefreshToken.java @@ -1,9 +1,12 @@ package com.prgrms.catchtable.jwt.domain; +import static jakarta.persistence.EnumType.STRING; import static lombok.AccessLevel.PROTECTED; +import com.prgrms.catchtable.common.Role; import jakarta.persistence.Column; import jakarta.persistence.Entity; +import jakarta.persistence.Enumerated; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; @@ -26,10 +29,15 @@ public class RefreshToken { @Column(name = "email") private String email; + @Column(name = "role") + @Enumerated(STRING) + private Role role; + @Builder - public RefreshToken(String token, String email) { + public RefreshToken(String token, String email, Role role) { this.token = token; this.email = email; + this.role = role; } } diff --git a/src/main/java/com/prgrms/catchtable/jwt/filter/JwtAuthenticationFilter.java b/src/main/java/com/prgrms/catchtable/jwt/filter/JwtAuthenticationFilter.java index eb1781c5..e71bca0c 100644 --- a/src/main/java/com/prgrms/catchtable/jwt/filter/JwtAuthenticationFilter.java +++ b/src/main/java/com/prgrms/catchtable/jwt/filter/JwtAuthenticationFilter.java @@ -2,6 +2,7 @@ import static com.prgrms.catchtable.common.exception.ErrorCode.TOKEN_EXPIRES; +import com.prgrms.catchtable.common.Role; import com.prgrms.catchtable.common.exception.custom.BadRequestCustomException; import com.prgrms.catchtable.jwt.domain.RefreshToken; import com.prgrms.catchtable.jwt.provider.JwtTokenProvider; @@ -48,7 +49,8 @@ public void doFilter(ServletRequest request, ServletResponse response, FilterCha RefreshToken refreshTokenEntity = refreshTokenService.getRefreshTokenByToken( refreshToken); String email = refreshTokenEntity.getEmail(); - Token newToken = jwtTokenProvider.createToken(email); + Role role = refreshTokenEntity.getRole(); + Token newToken = jwtTokenProvider.createToken(email, role); ((HttpServletResponse) response).setHeader("AccessToken", newToken.getAccessToken()); diff --git a/src/main/java/com/prgrms/catchtable/jwt/provider/JwtTokenProvider.java b/src/main/java/com/prgrms/catchtable/jwt/provider/JwtTokenProvider.java index 9bc8f529..fe46bf71 100644 --- a/src/main/java/com/prgrms/catchtable/jwt/provider/JwtTokenProvider.java +++ b/src/main/java/com/prgrms/catchtable/jwt/provider/JwtTokenProvider.java @@ -1,6 +1,7 @@ package com.prgrms.catchtable.jwt.provider; +import com.prgrms.catchtable.common.Role; import com.prgrms.catchtable.jwt.config.JwtConfig; import com.prgrms.catchtable.jwt.service.JwtUserDetailsService; import com.prgrms.catchtable.jwt.token.Token; @@ -20,18 +21,19 @@ public class JwtTokenProvider { private final JwtConfig jwtConfig; - private final JwtUserDetailsService jwtUserDetailsService; + private final String JWT_ROLE = "ROLE"; - public Token createToken(String email) { + public Token createToken(String email, Role role) { Claims claims = Jwts.claims().setSubject(email); + claims.put(JWT_ROLE, role.getRole()); Date now = new Date(); String accessToken = createAccessToken(claims, now); String refreshToken = createRefreshToken(claims, now); - return new Token(accessToken, refreshToken, email); + return new Token(accessToken, refreshToken, email, role); } private String createAccessToken(Claims claims, Date now) { @@ -73,7 +75,9 @@ public boolean validateToken(String token) { public Authentication getAuthentication(String token) { String email = getEmail(token); - UserDetails userDetails = jwtUserDetailsService.loadUserByUsername(email); + Role role = getRole(token); + + UserDetails userDetails = jwtUserDetailsService.loadUserByUsername(email, role); return new UsernamePasswordAuthenticationToken(userDetails, "", userDetails.getAuthorities()); } @@ -87,4 +91,16 @@ private String getEmail(String token) { return claims.getSubject(); } + + private Role getRole(String token) { + Claims claims = Jwts.parserBuilder() + .setSigningKey(jwtConfig.getClientSecret()) + .build() + .parseClaimsJws(token) + .getBody(); + + String role = (String) claims.get(JWT_ROLE); + + return Role.of(role); + } } diff --git a/src/main/java/com/prgrms/catchtable/jwt/service/JwtUserDetailsService.java b/src/main/java/com/prgrms/catchtable/jwt/service/JwtUserDetailsService.java index e445d69e..04caf6b4 100644 --- a/src/main/java/com/prgrms/catchtable/jwt/service/JwtUserDetailsService.java +++ b/src/main/java/com/prgrms/catchtable/jwt/service/JwtUserDetailsService.java @@ -1,24 +1,33 @@ package com.prgrms.catchtable.jwt.service; import static com.prgrms.catchtable.common.exception.ErrorCode.NOT_EXIST_MEMBER; +import static com.prgrms.catchtable.common.exception.ErrorCode.NOT_EXIST_OWNER; +import com.prgrms.catchtable.common.Role; import com.prgrms.catchtable.common.exception.custom.NotFoundCustomException; import com.prgrms.catchtable.member.repository.MemberRepository; +import com.prgrms.catchtable.owner.repository.OwnerRepository; import lombok.RequiredArgsConstructor; import org.springframework.security.core.userdetails.UserDetails; -import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.stereotype.Service; @Service @RequiredArgsConstructor -public class JwtUserDetailsService implements UserDetailsService { +public class JwtUserDetailsService { private final MemberRepository memberRepository; + private final OwnerRepository ownerRepository; - @Override - public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException { - return memberRepository.findMemberByEmail(email) - .orElseThrow(() -> new NotFoundCustomException(NOT_EXIST_MEMBER)); + public UserDetails loadUserByUsername(String email, Role role) + throws UsernameNotFoundException { + + if (role.equals(Role.MEMBER)) { + return memberRepository.findMemberByEmail(email) + .orElseThrow(() -> new NotFoundCustomException(NOT_EXIST_MEMBER)); + } else { + return ownerRepository.findOwnerByEmail(email) + .orElseThrow(() -> new NotFoundCustomException(NOT_EXIST_OWNER)); + } } } diff --git a/src/main/java/com/prgrms/catchtable/jwt/service/RefreshTokenService.java b/src/main/java/com/prgrms/catchtable/jwt/service/RefreshTokenService.java index 4d993587..d505ed88 100644 --- a/src/main/java/com/prgrms/catchtable/jwt/service/RefreshTokenService.java +++ b/src/main/java/com/prgrms/catchtable/jwt/service/RefreshTokenService.java @@ -2,6 +2,7 @@ import static com.prgrms.catchtable.common.exception.ErrorCode.NOT_FOUND_REFRESH_TOKEN; +import com.prgrms.catchtable.common.Role; import com.prgrms.catchtable.common.exception.custom.NotFoundCustomException; import com.prgrms.catchtable.jwt.domain.RefreshToken; import com.prgrms.catchtable.jwt.repository.RefreshTokenRepository; @@ -19,6 +20,7 @@ public class RefreshTokenService { @Transactional public void saveRefreshToken(Token totalToken) { String email = totalToken.getEmail(); + Role role = totalToken.getRole(); if (refreshTokenRepository.existsRefreshTokenByEmail(email)) { refreshTokenRepository.deleteRefreshTokenByEmail(email); @@ -27,6 +29,7 @@ public void saveRefreshToken(Token totalToken) { RefreshToken newRefreshToken = RefreshToken.builder() .token(totalToken.getRefreshToken()) .email(email) + .role(role) .build(); refreshTokenRepository.save(newRefreshToken); diff --git a/src/main/java/com/prgrms/catchtable/jwt/token/Token.java b/src/main/java/com/prgrms/catchtable/jwt/token/Token.java index f2fe8093..3af585b7 100644 --- a/src/main/java/com/prgrms/catchtable/jwt/token/Token.java +++ b/src/main/java/com/prgrms/catchtable/jwt/token/Token.java @@ -1,5 +1,6 @@ package com.prgrms.catchtable.jwt.token; +import com.prgrms.catchtable.common.Role; import lombok.AllArgsConstructor; import lombok.Getter; @@ -12,4 +13,6 @@ public class Token { private String refreshToken; private String email; + + private Role role; } diff --git a/src/main/java/com/prgrms/catchtable/member/domain/Gender.java b/src/main/java/com/prgrms/catchtable/member/domain/Gender.java index a5449d29..a5d2e1cf 100644 --- a/src/main/java/com/prgrms/catchtable/member/domain/Gender.java +++ b/src/main/java/com/prgrms/catchtable/member/domain/Gender.java @@ -1,6 +1,6 @@ package com.prgrms.catchtable.member.domain; -import static com.prgrms.catchtable.common.exception.ErrorCode.BAD_REQUEST_INPUT_GENDER_TYPE; +import static com.prgrms.catchtable.common.exception.ErrorCode.INVALID_INPUT_TYPE; import com.prgrms.catchtable.common.exception.custom.BadRequestCustomException; import java.util.Arrays; @@ -19,7 +19,7 @@ public static Gender of(String input) { return Arrays.stream(values()) .filter(gender -> gender.isEqual(input)) .findAny() - .orElseThrow(() -> new BadRequestCustomException(BAD_REQUEST_INPUT_GENDER_TYPE)); + .orElseThrow(() -> new BadRequestCustomException(INVALID_INPUT_TYPE)); } private boolean isEqual(String input) { diff --git a/src/main/java/com/prgrms/catchtable/member/service/MemberService.java b/src/main/java/com/prgrms/catchtable/member/service/MemberService.java index 82d85412..638c897c 100644 --- a/src/main/java/com/prgrms/catchtable/member/service/MemberService.java +++ b/src/main/java/com/prgrms/catchtable/member/service/MemberService.java @@ -1,5 +1,6 @@ package com.prgrms.catchtable.member.service; +import com.prgrms.catchtable.common.Role; import com.prgrms.catchtable.jwt.provider.JwtTokenProvider; import com.prgrms.catchtable.jwt.service.RefreshTokenService; import com.prgrms.catchtable.jwt.token.Token; @@ -17,10 +18,8 @@ public class MemberService { private final MemberRepository memberRepository; - - private final JwtTokenProvider jwtTokenProvider; - private final RefreshTokenService refreshTokenService; + private final JwtTokenProvider jwtTokenProvider; @Transactional public Token oauthLogin(OAuthAttribute attributes) { @@ -36,7 +35,7 @@ public Token oauthLogin(OAuthAttribute attributes) { } private Token createTotalToken(String email) { - Token totalToken = jwtTokenProvider.createToken(email); + Token totalToken = jwtTokenProvider.createToken(email, Role.MEMBER); refreshTokenService.saveRefreshToken(totalToken); return totalToken; } diff --git a/src/main/java/com/prgrms/catchtable/owner/service/OwnerService.java b/src/main/java/com/prgrms/catchtable/owner/service/OwnerService.java index d8a12a97..3998044c 100644 --- a/src/main/java/com/prgrms/catchtable/owner/service/OwnerService.java +++ b/src/main/java/com/prgrms/catchtable/owner/service/OwnerService.java @@ -1,10 +1,12 @@ package com.prgrms.catchtable.owner.service; import static com.prgrms.catchtable.common.exception.ErrorCode.ALREADY_EXIST_OWNER; -import static com.prgrms.catchtable.common.exception.ErrorCode.BAD_REQUEST_EMAIL_OR_PASSWORD; +import static com.prgrms.catchtable.common.exception.ErrorCode.INVALID_EMAIL_OR_PASSWORD; +import com.prgrms.catchtable.common.Role; import com.prgrms.catchtable.common.exception.custom.BadRequestCustomException; import com.prgrms.catchtable.jwt.provider.JwtTokenProvider; +import com.prgrms.catchtable.jwt.service.RefreshTokenService; import com.prgrms.catchtable.jwt.token.Token; import com.prgrms.catchtable.member.domain.Gender; import com.prgrms.catchtable.owner.domain.Owner; @@ -16,6 +18,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; @Service @RequiredArgsConstructor @@ -24,7 +27,9 @@ public class OwnerService { private final OwnerRepository ownerRepository; private final PasswordEncoder passwordEncoder; private final JwtTokenProvider jwtTokenProvider; + private final RefreshTokenService refreshTokenService; + @Transactional public JoinOwnerResponse joinOwner(JoinOwnerRequest joinOwnerRequest) { //이미 존재하는 이메일이라면 @@ -47,22 +52,29 @@ private void validateExistsOwner(JoinOwnerRequest joinOwnerRequest) { } } + @Transactional public Token loginOwner(LoginOwnerRequest loginRequest) { //email 확인 Owner loginOwner = ownerRepository.findOwnerByEmail(loginRequest.email()) - .orElseThrow(() -> new BadRequestCustomException(BAD_REQUEST_EMAIL_OR_PASSWORD)); + .orElseThrow(() -> new BadRequestCustomException(INVALID_EMAIL_OR_PASSWORD)); //password 확인 validatePassword(loginRequest, loginOwner); - return jwtTokenProvider.createToken(loginOwner.getEmail()); + return createTotalToken(loginOwner.getEmail()); } private void validatePassword(LoginOwnerRequest loginRequest, Owner loginOwner) { if (!passwordEncoder.matches(loginRequest.password(), loginOwner.getPassword())) { - throw new BadRequestCustomException(BAD_REQUEST_EMAIL_OR_PASSWORD); + throw new BadRequestCustomException(INVALID_EMAIL_OR_PASSWORD); } } + private Token createTotalToken(String email) { + Token totalToken = jwtTokenProvider.createToken(email, Role.OWNER); + refreshTokenService.saveRefreshToken(totalToken); + return totalToken; + } + } diff --git a/src/test/java/com/prgrms/catchtable/jwt/provider/JwtTokenProviderTest.java b/src/test/java/com/prgrms/catchtable/jwt/provider/JwtTokenProviderTest.java index 54c2a606..10c7d27d 100644 --- a/src/test/java/com/prgrms/catchtable/jwt/provider/JwtTokenProviderTest.java +++ b/src/test/java/com/prgrms/catchtable/jwt/provider/JwtTokenProviderTest.java @@ -3,6 +3,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.when; +import com.prgrms.catchtable.common.Role; import com.prgrms.catchtable.jwt.config.JwtConfig; import com.prgrms.catchtable.jwt.service.JwtUserDetailsService; import com.prgrms.catchtable.jwt.token.Token; @@ -34,7 +35,7 @@ void validToken() { when(config.getClientSecret()).thenReturn(clientKey); when(config.getExpiryMinute()).thenReturn(1); when(config.getExpiryMinuteRefresh()).thenReturn(1); - Token token = jwtTokenProvider.createToken(email); + Token token = jwtTokenProvider.createToken(email, Role.MEMBER); //then assertThat(jwtTokenProvider.validateToken(token.getAccessToken())).isTrue(); @@ -48,7 +49,7 @@ void invalidToken() { when(config.getClientSecret()).thenReturn(clientKey); when(config.getExpiryMinute()).thenReturn(0); when(config.getExpiryMinuteRefresh()).thenReturn(0); - Token token = jwtTokenProvider.createToken(email); + Token token = jwtTokenProvider.createToken(email, Role.OWNER); //then assertThat(jwtTokenProvider.validateToken(token.getAccessToken())).isFalse(); @@ -65,9 +66,9 @@ void getAuthenticationTest() { when(config.getClientSecret()).thenReturn(clientKey); when(config.getExpiryMinute()).thenReturn(1); when(config.getExpiryMinuteRefresh()).thenReturn(1); - Token token = jwtTokenProvider.createToken(email); + Token token = jwtTokenProvider.createToken(email, Role.MEMBER); - when(jwtUserDetailsService.loadUserByUsername(email)) + when(jwtUserDetailsService.loadUserByUsername(email, Role.MEMBER)) .thenReturn(member); //then diff --git a/src/test/java/com/prgrms/catchtable/jwt/service/JwtUserDetailsServiceTest.java b/src/test/java/com/prgrms/catchtable/jwt/service/JwtUserDetailsServiceTest.java index b2e47ce9..c5655c04 100644 --- a/src/test/java/com/prgrms/catchtable/jwt/service/JwtUserDetailsServiceTest.java +++ b/src/test/java/com/prgrms/catchtable/jwt/service/JwtUserDetailsServiceTest.java @@ -4,6 +4,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.mockito.Mockito.when; +import com.prgrms.catchtable.common.Role; import com.prgrms.catchtable.common.exception.custom.NotFoundCustomException; import com.prgrms.catchtable.member.MemberFixture; import com.prgrms.catchtable.member.domain.Member; @@ -37,9 +38,9 @@ void loadUserByUsernameTest() { when(memberRepository.findMemberByEmail(invalidEmail)).thenReturn(Optional.empty()); //then - assertThat(jwtUserDetailsService.loadUserByUsername(email)).isEqualTo(member); + assertThat(jwtUserDetailsService.loadUserByUsername(email, Role.MEMBER)).isEqualTo(member); assertThatThrownBy( - () -> jwtUserDetailsService.loadUserByUsername(invalidEmail)).isInstanceOf( + () -> jwtUserDetailsService.loadUserByUsername(invalidEmail, Role.MEMBER)).isInstanceOf( NotFoundCustomException.class); } diff --git a/src/test/java/com/prgrms/catchtable/jwt/service/RefreshTokenServiceTest.java b/src/test/java/com/prgrms/catchtable/jwt/service/RefreshTokenServiceTest.java index 06e57f20..f5cc9660 100644 --- a/src/test/java/com/prgrms/catchtable/jwt/service/RefreshTokenServiceTest.java +++ b/src/test/java/com/prgrms/catchtable/jwt/service/RefreshTokenServiceTest.java @@ -9,6 +9,7 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import com.prgrms.catchtable.common.Role; import com.prgrms.catchtable.common.exception.custom.NotFoundCustomException; import com.prgrms.catchtable.jwt.config.JwtConfig; import com.prgrms.catchtable.jwt.domain.RefreshToken; @@ -45,7 +46,7 @@ void init() { when(jwtConfig.getClientSecret()).thenReturn(clientSecretKey); when(jwtConfig.getExpiryMinute()).thenReturn(1); when(jwtConfig.getExpiryMinuteRefresh()).thenReturn(1); - token = jwtTokenProvider.createToken(email); + token = jwtTokenProvider.createToken(email, Role.OWNER); } @Test @@ -65,7 +66,7 @@ void saveRefreshTokenTest() { @DisplayName("이미 유효한 RefreshToken을 갖고 있는 유저가 RefreshToken을 새로 발급한다면, DB에서 삭제 후 저장해준다.") void deleteAndSaveRefreshToken() { //given - Token newToken = jwtTokenProvider.createToken(email); + Token newToken = jwtTokenProvider.createToken(email, Role.OWNER); //when when(refreshTokenRepository.existsRefreshTokenByEmail(email)).thenReturn(true); @@ -83,7 +84,7 @@ void deleteAndSaveRefreshToken() { void getRefreshTokenTest() { //given String invalidEmail = "qwer1234@naver.com"; - Token invalidToken = jwtTokenProvider.createToken(invalidEmail); + Token invalidToken = jwtTokenProvider.createToken(invalidEmail, Role.OWNER); RefreshToken refreshToken = RefreshToken.builder() .token(token.getRefreshToken()) diff --git a/src/test/java/com/prgrms/catchtable/owner/controller/OwnerControllerTest.java b/src/test/java/com/prgrms/catchtable/owner/controller/OwnerControllerTest.java index 01d31e26..21fbdc78 100644 --- a/src/test/java/com/prgrms/catchtable/owner/controller/OwnerControllerTest.java +++ b/src/test/java/com/prgrms/catchtable/owner/controller/OwnerControllerTest.java @@ -5,6 +5,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; +import com.prgrms.catchtable.common.Role; import com.prgrms.catchtable.common.base.BaseIntegrationTest; import com.prgrms.catchtable.jwt.provider.JwtTokenProvider; import com.prgrms.catchtable.jwt.token.Token; @@ -73,7 +74,7 @@ void loginTest() throws Exception { //given LoginOwnerRequest loginOwnerRequest = OwnerFixture.getLoginOwnerRequest(joinEmail, password); - Token token = jwtTokenProvider.createToken(joinEmail); + Token token = jwtTokenProvider.createToken(joinEmail, Role.OWNER); //then mockMvc.perform(post("/owners/login") diff --git a/src/test/java/com/prgrms/catchtable/owner/service/OwnerServiceTest.java b/src/test/java/com/prgrms/catchtable/owner/service/OwnerServiceTest.java index 3e313748..ebb385c1 100644 --- a/src/test/java/com/prgrms/catchtable/owner/service/OwnerServiceTest.java +++ b/src/test/java/com/prgrms/catchtable/owner/service/OwnerServiceTest.java @@ -6,8 +6,10 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; +import com.prgrms.catchtable.common.Role; import com.prgrms.catchtable.common.exception.custom.BadRequestCustomException; import com.prgrms.catchtable.jwt.provider.JwtTokenProvider; +import com.prgrms.catchtable.jwt.service.RefreshTokenService; import com.prgrms.catchtable.jwt.token.Token; import com.prgrms.catchtable.owner.domain.Owner; import com.prgrms.catchtable.owner.dto.request.JoinOwnerRequest; @@ -25,10 +27,11 @@ class OwnerServiceTest { private final OwnerRepository ownerRepository = mock(OwnerRepository.class); private final JwtTokenProvider jwtTokenProvider = mock(JwtTokenProvider.class); + private final RefreshTokenService refreshTokenService = mock(RefreshTokenService.class); private final PasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); private final OwnerService ownerService = new OwnerService(ownerRepository, passwordEncoder, - jwtTokenProvider); + jwtTokenProvider, refreshTokenService); private final String email = "abc1234@gmail.com"; private final String password = "qwer1234"; @@ -76,12 +79,12 @@ void loginSuccess() { //given LoginOwnerRequest loginOwnerRequest = OwnerFixture.getLoginOwnerRequest(email, password); String encodePassword = passwordEncoder.encode(password); - Token token = new Token("AccessToken", "RefreshToken", loginOwnerRequest.email()); + Token token = new Token("AccessToken", "RefreshToken", loginOwnerRequest.email(), Role.OWNER); //when when(ownerRepository.findOwnerByEmail(loginOwnerRequest.email())).thenReturn( Optional.of(OwnerFixture.getOwner(email, encodePassword))); - when(jwtTokenProvider.createToken(loginOwnerRequest.email())).thenReturn(token); + when(jwtTokenProvider.createToken(loginOwnerRequest.email(), Role.OWNER)).thenReturn(token); //then assertThat(ownerService.loginOwner(loginOwnerRequest)).isEqualTo(token); diff --git a/src/test/java/com/prgrms/catchtable/security/controller/JwtAuthenticationTest.java b/src/test/java/com/prgrms/catchtable/security/controller/JwtAuthenticationTest.java index b1222c44..84403d07 100644 --- a/src/test/java/com/prgrms/catchtable/security/controller/JwtAuthenticationTest.java +++ b/src/test/java/com/prgrms/catchtable/security/controller/JwtAuthenticationTest.java @@ -3,6 +3,7 @@ import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; +import com.prgrms.catchtable.common.Role; import com.prgrms.catchtable.jwt.filter.JwtAuthenticationFilter; import com.prgrms.catchtable.jwt.provider.JwtTokenProvider; import com.prgrms.catchtable.jwt.service.RefreshTokenService; @@ -55,7 +56,7 @@ public void init() { memberRepository.save(loginMember); //토큰 발급 - token = jwtTokenProvider.createToken(email); + token = jwtTokenProvider.createToken(email, Role.MEMBER); refreshTokenService.saveRefreshToken(token); //필터 추가