Compare commits

..

4 Commits

Author SHA1 Message Date
dongHyo
f820cb9b4c refactor: 회원탈퇴 / 패스워드 변경 검증 로직 수정 2022-07-20 00:53:03 +09:00
dongHyo
0241793819 refactor: 매직넘버 제거 2022-07-19 20:24:13 +09:00
dongHyo
eb74051ded test: JwtFilter 테스트케이스 추가 2022-07-19 20:14:19 +09:00
dongHyo
3bf24b1e12 test: 유저 통합테스트 추가 2022-07-19 20:14:04 +09:00
5 changed files with 7 additions and 98 deletions

View File

@@ -28,9 +28,8 @@ public class RefreshToken {
this.token = token; this.token = token;
} }
public RefreshToken changeToken(String token) { public void changeToken(String token) {
this.token = token; this.token = token;
return this;
} }
} }

View File

@@ -27,7 +27,6 @@ public class JwtProvider {
private static final String AUTHORITIES_KEY = "auth"; private static final String AUTHORITIES_KEY = "auth";
private static final String AUTHORITIES_DELIMITER = ","; private static final String AUTHORITIES_DELIMITER = ",";
private static final String ROLE = "ROLE_";
private final Key key; private final Key key;
private final String prefix; private final String prefix;
@@ -90,7 +89,7 @@ public class JwtProvider {
} }
private String makeRoleName(String role) { private String makeRoleName(String role) {
return role.contains(ROLE) ? role.toUpperCase() : ROLE + role.toUpperCase(); return "ROLE_" + role.toUpperCase();
} }
public Authentication getAuthentication(String token) { public Authentication getAuthentication(String token) {

View File

@@ -5,8 +5,8 @@ import com.ticketing.server.global.redis.RefreshRedisRepository;
import com.ticketing.server.global.redis.RefreshToken; import com.ticketing.server.global.redis.RefreshToken;
import com.ticketing.server.global.security.jwt.JwtProperties; import com.ticketing.server.global.security.jwt.JwtProperties;
import com.ticketing.server.global.security.jwt.JwtProvider; import com.ticketing.server.global.security.jwt.JwtProvider;
import com.ticketing.server.user.service.dto.DeleteRefreshTokenDTO;
import com.ticketing.server.user.service.dto.TokenDTO; import com.ticketing.server.user.service.dto.TokenDTO;
import com.ticketing.server.user.service.dto.DeleteRefreshTokenDTO;
import com.ticketing.server.user.service.interfaces.AuthenticationService; import com.ticketing.server.user.service.interfaces.AuthenticationService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
@@ -40,14 +40,8 @@ public class AuthenticationServiceImpl implements AuthenticationService {
// refresh 토큰이 있으면 수정, 없으면 생성 // refresh 토큰이 있으면 수정, 없으면 생성
refreshRedisRepository.findByEmail(email) refreshRedisRepository.findByEmail(email)
.ifPresentOrElse( .ifPresentOrElse(
tokenEntity -> refreshRedisRepository.save( tokenEntity -> tokenEntity.changeToken(tokenDto.getRefreshToken()),
tokenEntity.changeToken( () -> refreshRedisRepository.save(new RefreshToken(email, tokenDto.getRefreshToken()))
tokenDto.getRefreshToken()
)
),
() -> refreshRedisRepository.save(
new RefreshToken(email, tokenDto.getRefreshToken())
)
); );
return tokenDto; return tokenDto;

View File

@@ -4,6 +4,7 @@ import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import com.ticketing.server.global.exception.TicketingException; import com.ticketing.server.global.exception.TicketingException;

View File

@@ -1,23 +1,15 @@
package com.ticketing.server.movie.service; package com.ticketing.server.movie.service;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.any;
import com.ticketing.server.global.exception.TicketingException;
import com.ticketing.server.movie.domain.Movie; import com.ticketing.server.movie.domain.Movie;
import com.ticketing.server.movie.domain.MovieTime; import com.ticketing.server.movie.domain.MovieTime;
import com.ticketing.server.movie.domain.Theater; import com.ticketing.server.movie.domain.Theater;
import com.ticketing.server.movie.domain.repository.MovieRepository; import com.ticketing.server.movie.domain.repository.MovieRepository;
import com.ticketing.server.movie.domain.repository.MovieTimeRepository; import com.ticketing.server.movie.domain.repository.MovieTimeRepository;
import com.ticketing.server.movie.domain.repository.TheaterRepository;
import com.ticketing.server.movie.service.dto.MovieTimeDTO; import com.ticketing.server.movie.service.dto.MovieTimeDTO;
import com.ticketing.server.movie.service.dto.MovieTimeRegisterDTO;
import com.ticketing.server.movie.service.dto.RegisteredMovieTimeDTO;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
@@ -35,15 +27,11 @@ import org.mockito.junit.jupiter.MockitoExtension;
public class MovieTimeServiceImplTest { public class MovieTimeServiceImplTest {
String title = "범죄도시2"; String title = "범죄도시2";
LocalDateTime startAt = LocalDateTime.now();
List<MovieTime> movieTimes = new ArrayList<>(); List<MovieTime> movieTimes = new ArrayList<>();
@Mock @Mock
MovieRepository movieRepository; MovieRepository movieRepository;
@Mock
TheaterRepository theaterRepository;
@Mock @Mock
MovieTimeRepository movieTimeRepository; MovieTimeRepository movieTimeRepository;
@@ -51,7 +39,7 @@ public class MovieTimeServiceImplTest {
MovieTimeServiceImpl movieTimeService; MovieTimeServiceImpl movieTimeService;
@Test @Test
@DisplayName("MovieTime Service Test - get empty list when there is no valid movie time") @DisplayName("MovieTime Service Test - get empty list when there are no valid movie times")
void shouldGetEmptyList() { void shouldGetEmptyList() {
// given // given
Movie movie = new Movie(title, 106L); Movie movie = new Movie(title, 106L);
@@ -94,76 +82,4 @@ public class MovieTimeServiceImplTest {
assertTrue(!movieTimeDtos.isEmpty()); assertTrue(!movieTimeDtos.isEmpty());
} }
@Test
@DisplayName("MovieTime Service Test - register movie time")
void shouldAbleToRegisterMovieTime() {
// given
Movie movie = new Movie(title, 100L);
Theater theater = new Theater(1);
MovieTime movieTime = new MovieTime(movie, theater, 1, startAt);
when(movieRepository.findByIdAndDeletedAtNull(anyLong()))
.thenReturn(Optional.of(movie));
when(theaterRepository.findByTheaterNumber(anyInt()))
.thenReturn(Optional.of(theater));
when(movieTimeRepository.findByMovieAndTheaterAndRoundAndDeletedAtNull(any(), any(), anyInt()))
.thenReturn(Optional.empty());
when(movieTimeRepository.save(any()))
.thenReturn(movieTime);
// when
RegisteredMovieTimeDTO registeredMovieTimeDto =
movieTimeService.registerMovieTime(
new MovieTimeRegisterDTO(1L, 1, 1, startAt)
);
// then
assertThat(registeredMovieTimeDto).isNotNull();
assertTrue(registeredMovieTimeDto.getTheaterNumber() == 1);
assertTrue(registeredMovieTimeDto.getStartAt() == startAt);
assertTrue(registeredMovieTimeDto.getRound() == 1);
}
@Test
@DisplayName("MovieTime Service Test - register movie time when there is same movie time already")
void shouldThrowExceptionWhenRegisteringDuplicateMovieTime() {
// given
Movie movie = new Movie(title, 100L);
Theater theater = new Theater(1);
MovieTime movieTime = new MovieTime(movie, theater, 1, startAt);
MovieTimeRegisterDTO movieTimeRegisterDto = new MovieTimeRegisterDTO(1L, 1, 1, startAt);
when(movieRepository.findByIdAndDeletedAtNull(anyLong()))
.thenReturn(Optional.of(movie));
when(theaterRepository.findByTheaterNumber(anyInt()))
.thenReturn(Optional.of(theater));
when(movieTimeRepository.findByMovieAndTheaterAndRoundAndDeletedAtNull(any(), any(), anyInt()))
.thenReturn(Optional.of(movieTime));
// when
// then
assertThatThrownBy(() -> movieTimeService.registerMovieTime(movieTimeRegisterDto))
.isInstanceOf(TicketingException.class);
}
@Test
@DisplayName("MovieTime Service Test - register movie time when there is no such movie")
void shouldThrowExceptionWhenRegisteringMovieTimeWithNoSuchMovie() {
// given
Theater theater = new Theater(1);
MovieTimeRegisterDTO movieTimeRegisterDto = new MovieTimeRegisterDTO(1L, 1, 1, startAt);
when(movieRepository.findByIdAndDeletedAtNull(1L))
.thenReturn(Optional.empty());
// when
// then
assertThatThrownBy(() -> movieTimeService.registerMovieTime(movieTimeRegisterDto))
.isInstanceOf(TicketingException.class);
}
} }