-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Showing
9 changed files
with
360 additions
and
302 deletions.
There are no files selected for viewing
11 changes: 0 additions & 11 deletions
11
src/test/java/blacktokkies/toquiz/config/WithCustomMockUser.java
This file was deleted.
Oops, something went wrong.
33 changes: 0 additions & 33 deletions
33
src/test/java/blacktokkies/toquiz/config/WithCustomMockUserSecurityContextFactory.java
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,17 +1,17 @@ | ||
package blacktokkies.toquiz.member.application; | ||
package blacktokkies.toquiz.domain.auth.application; | ||
|
||
import blacktokkies.toquiz.domain.activeinfo.ActiveInfoRepository; | ||
import blacktokkies.toquiz.domain.activeinfo.domain.ActiveInfo; | ||
import blacktokkies.toquiz.domain.activeinfo.domain.ActivePanel; | ||
import blacktokkies.toquiz.domain.member.application.AuthService; | ||
import blacktokkies.toquiz.domain.member.dao.MemberRepository; | ||
import blacktokkies.toquiz.domain.auth.jwt.JwtTokenProvider; | ||
import blacktokkies.toquiz.domain.member.domain.MemberRepository; | ||
import blacktokkies.toquiz.domain.member.domain.Member; | ||
import blacktokkies.toquiz.domain.member.dto.request.LoginRequest; | ||
import blacktokkies.toquiz.domain.member.dto.request.SignUpRequest; | ||
import blacktokkies.toquiz.domain.member.dto.response.AuthenticateResponse; | ||
import blacktokkies.toquiz.domain.model.Provider; | ||
import blacktokkies.toquiz.global.config.SecurityConfig; | ||
import blacktokkies.toquiz.global.util.auth.TokenService; | ||
import blacktokkies.toquiz.domain.auth.dto.LoginRequest; | ||
import blacktokkies.toquiz.domain.auth.dto.SignUpRequest; | ||
import blacktokkies.toquiz.domain.auth.dto.AuthenticateResponse; | ||
import blacktokkies.toquiz.domain.member.domain.Provider; | ||
import blacktokkies.toquiz.global.common.annotation.activeInfoId.ActiveInfoIdDto; | ||
import blacktokkies.toquiz.global.common.annotation.auth.MemberEmailDto; | ||
import org.junit.jupiter.api.BeforeEach; | ||
import org.junit.jupiter.api.DisplayName; | ||
import org.junit.jupiter.api.Test; | ||
|
@@ -22,11 +22,11 @@ | |
import org.mockito.junit.jupiter.MockitoExtension; | ||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; | ||
import org.springframework.security.crypto.password.PasswordEncoder; | ||
import org.springframework.test.context.ContextConfiguration; | ||
|
||
import java.util.HashMap; | ||
import java.util.Optional; | ||
|
||
import static blacktokkies.toquiz.utils.Constants.*; | ||
import static org.assertj.core.api.Assertions.assertThat; | ||
import static org.mockito.ArgumentMatchers.any; | ||
import static org.mockito.Mockito.*; | ||
|
@@ -41,7 +41,9 @@ public class AuthServiceTest { | |
@Mock | ||
private ActiveInfoRepository activeInfoRepository; | ||
@Mock | ||
private TokenService tokenService; | ||
private RefreshTokenService refreshTokenService; | ||
@Mock | ||
private JwtTokenProvider jwtTokenProvider; | ||
|
||
@Spy | ||
private PasswordEncoder passwordEncoder; | ||
|
@@ -56,12 +58,12 @@ void init(){ | |
void signUp(){ | ||
// given | ||
final SignUpRequest request = SignUpRequest.builder() | ||
.email("[email protected]") | ||
.password("test@311") | ||
.nickname("TEST") | ||
.email(EMAIL) | ||
.password(PW) | ||
.nickname(NICKNAME) | ||
.build(); | ||
final ActiveInfo activeInfo = ActiveInfo.builder() | ||
.id("5d3f30de25874467999fc7325f6539ba07d62a0b") | ||
.id(ACTIVE_INFO_ID) | ||
.activePanels(new HashMap<String, ActivePanel>()) | ||
.build(); | ||
Member member = request.toMemberWith(activeInfo); | ||
|
@@ -83,78 +85,72 @@ void login(){ | |
// given | ||
passwordEncoder = new BCryptPasswordEncoder(); | ||
|
||
final String newAccessToken = "{NewAccessToken}"; | ||
|
||
LoginRequest request = LoginRequest.builder() | ||
.email("[email protected]") | ||
.password("test@311") | ||
.email(EMAIL) | ||
.password(PW) | ||
.build(); | ||
|
||
Optional<Member> optionalMember = Optional.ofNullable(Member.builder() | ||
.email("[email protected]") | ||
.password(passwordEncoder.encode("test@311")) | ||
.email(EMAIL) | ||
.password(passwordEncoder.encode(PW)) | ||
.provider(Provider.LOCAL) | ||
.nickname("TEST") | ||
.nickname(NICKNAME) | ||
.build()); | ||
|
||
doReturn(newAccessToken).when(tokenService).generateAccessToken(any(String.class)); | ||
doReturn(NEW_ACCESS_TOKEN).when(jwtTokenProvider).generateAccessToken(any(String.class)); | ||
doReturn(optionalMember).when(memberRepository).findByEmail(any(String.class)); | ||
|
||
// when | ||
AuthenticateResponse result = authService.login(request); | ||
|
||
// then | ||
assertThat(result.getEmail()).isEqualTo(request.getEmail()); | ||
assertThat(result.getAccessToken()).isEqualTo(newAccessToken); | ||
assertThat(result.getAccessToken()).isEqualTo(NEW_ACCESS_TOKEN); | ||
|
||
// verify | ||
verify(tokenService, times(1)).generateAccessToken(any(String.class)); | ||
verify(jwtTokenProvider, times(1)).generateAccessToken(any(String.class)); | ||
} | ||
|
||
@Test | ||
@DisplayName("로그아웃") | ||
void logout(){ | ||
// given | ||
final Member member = Member.builder() | ||
.email("[email protected]") | ||
.password(passwordEncoder.encode("test@311")) | ||
.provider(Provider.LOCAL) | ||
.nickname("TEST") | ||
.build(); | ||
final MemberEmailDto memberEmailDto = new MemberEmailDto(EMAIL); | ||
|
||
doNothing().when(tokenService).deleteRefreshToken(any(String.class)); | ||
doNothing().when(refreshTokenService).deleteRefreshTokenByEmail(any(String.class)); | ||
|
||
// when | ||
authService.logout(member); | ||
authService.logout(memberEmailDto); | ||
|
||
// verify | ||
verify(tokenService, times(1)).deleteRefreshToken(any(String.class)); | ||
// then | ||
verify(refreshTokenService, times(1)).deleteRefreshTokenByEmail(any(String.class)); | ||
} | ||
|
||
@Test | ||
@DisplayName("회원 탈퇴") | ||
void resign(){ | ||
passwordEncoder = new BCryptPasswordEncoder(); | ||
// given | ||
final Member member = Member.builder() | ||
.email("[email protected]") | ||
.password(passwordEncoder.encode("test@311")) | ||
Optional<Member> optionalMember = Optional.ofNullable(Member.builder() | ||
.email(EMAIL) | ||
.password(passwordEncoder.encode(PW)) | ||
.provider(Provider.LOCAL) | ||
.nickname("TEST") | ||
.activeInfoId("a1c2t3i4v5e6I7n8f9oId") | ||
.build(); | ||
final String inputPassword = "test@311"; | ||
final String activeInfoId = "{ActiveInfoId}"; | ||
.nickname(NICKNAME) | ||
.build()); | ||
final MemberEmailDto memberEmailDto = new MemberEmailDto(EMAIL); | ||
final String inputPassword = PW; | ||
final ActiveInfoIdDto activeInfoIdDto = new ActiveInfoIdDto(ACTIVE_INFO_ID); | ||
|
||
doNothing().when(tokenService).deleteRefreshToken(any(String.class)); | ||
doReturn(optionalMember).when(memberRepository).findByEmail(any(String.class)); | ||
doNothing().when(refreshTokenService).deleteRefreshTokenByEmail(any(String.class)); | ||
doNothing().when(activeInfoRepository).deleteById(any(String.class)); | ||
doNothing().when(memberRepository).delete(any(Member.class)); | ||
|
||
// when | ||
authService.resign(member, inputPassword, activeInfoId); | ||
authService.resign(memberEmailDto, inputPassword, activeInfoIdDto); | ||
|
||
// then | ||
verify(tokenService, times(1)).deleteRefreshToken(any(String.class)); | ||
verify(refreshTokenService, times(1)).deleteRefreshTokenByEmail(any(String.class)); | ||
verify(activeInfoRepository, times(1)).deleteById(any(String.class)); | ||
verify(memberRepository, times(1)).delete(any(Member.class)); | ||
} | ||
|
@@ -163,29 +159,27 @@ void resign(){ | |
@DisplayName("리프레시 토큰 갱신") | ||
void refresh(){ | ||
// given | ||
final String refreshToken = "{RefreshToken}"; | ||
final String newAccessToken = "{NewAccessToken}"; | ||
final Member member = Member.builder() | ||
.email("[email protected]") | ||
.password(passwordEncoder.encode("test@311")) | ||
Optional<Member> optionalMember = Optional.ofNullable(Member.builder() | ||
.email(EMAIL) | ||
.password(passwordEncoder.encode(PW)) | ||
.provider(Provider.LOCAL) | ||
.nickname("TEST") | ||
.activeInfoId("a1c2t3i4v5e6I7n8f9oId") | ||
.build(); | ||
.nickname(NICKNAME) | ||
.build()); | ||
|
||
doReturn(true).when(tokenService).isTokenValid(any(String.class), any(Member.class)); | ||
doNothing().when(tokenService).validateRefreshToken(any(String.class), any(String.class)); | ||
doReturn(newAccessToken).when(tokenService).generateAccessToken(any(String.class)); | ||
doReturn(EMAIL).when(jwtTokenProvider).extractEmailFromRefreshToken(any(String.class)); | ||
doReturn(ACCESS_TOKEN).when(jwtTokenProvider).generateAccessToken(any(String.class)); | ||
doReturn(optionalMember).when(memberRepository).findByEmail(any(String.class)); | ||
|
||
// when | ||
AuthenticateResponse result = authService.refresh(member, refreshToken); | ||
AuthenticateResponse result = authService.refresh(REFRESH_TOKEN); | ||
|
||
// then | ||
assertThat(result.getEmail()).isEqualTo(member.getEmail()); | ||
assertThat(result.getAccessToken()).isEqualTo(newAccessToken); | ||
assertThat(result.getEmail()).isEqualTo(EMAIL); | ||
assertThat(result.getAccessToken()).isEqualTo(ACCESS_TOKEN); | ||
|
||
verify(tokenService, times(1)).isTokenValid(any(String.class), any(Member.class)); | ||
verify(tokenService, times(1)).validateRefreshToken(any(String.class), any(String.class)); | ||
verify(tokenService, times(1)).generateAccessToken(any(String.class)); | ||
verify(jwtTokenProvider, times(1)) | ||
.extractEmailFromRefreshToken(any(String.class)); | ||
verify(jwtTokenProvider, times(1)) | ||
.generateAccessToken(any(String.class)); | ||
} | ||
} |
Oops, something went wrong.