-
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.
Browse files
Browse the repository at this point in the history
- Loading branch information
Showing
5 changed files
with
327 additions
and
0 deletions.
There are no files selected for viewing
86 changes: 86 additions & 0 deletions
86
cakk-api/src/test/java/com/cakk/api/controller/SignControllerTest.java
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 |
---|---|---|
@@ -0,0 +1,86 @@ | ||
package com.cakk.api.controller; | ||
|
||
import static org.mockito.Mockito.*; | ||
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; | ||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; | ||
|
||
import org.springframework.http.MediaType; | ||
|
||
import com.cakk.api.common.annotation.TestWithDisplayName; | ||
import com.cakk.api.common.base.MockMvcTest; | ||
import com.cakk.api.dto.request.user.GenerateCodeRequest; | ||
import com.cakk.api.dto.request.user.UserSignInRequest; | ||
import com.cakk.api.dto.request.user.UserSignUpRequest; | ||
import com.cakk.api.dto.request.user.VerifyEmailRequest; | ||
import com.cakk.api.dto.response.user.JwtResponse; | ||
|
||
class SignControllerTest extends MockMvcTest { | ||
|
||
@TestWithDisplayName("") | ||
void signUp() throws Exception { | ||
// given | ||
UserSignUpRequest dto = getConstructorMonkey().giveMeOne(UserSignUpRequest.class); | ||
JwtResponse jwt = getConstructorMonkey().giveMeBuilder(JwtResponse.class) | ||
.setNotNull("accessToken") | ||
.setNotNull("refreshToken") | ||
.setNotNull("grantType") | ||
.sample(); | ||
|
||
doReturn(jwt).when(signService).signUp(dto); | ||
|
||
// when & then | ||
mockMvc.perform(post("/sign-up") | ||
.content(objectMapper.writeValueAsString(dto)) | ||
.contentType(MediaType.APPLICATION_JSON)) | ||
.andExpect(status().isOk()) | ||
.andExpect(jsonPath("$.data.accessToken").exists()) | ||
.andExpect(jsonPath("$.data.refreshToken").exists()); | ||
} | ||
|
||
@TestWithDisplayName("") | ||
void signIn() throws Exception { | ||
// given | ||
UserSignInRequest dto = getConstructorMonkey().giveMeOne(UserSignInRequest.class); | ||
JwtResponse jwt = getConstructorMonkey().giveMeBuilder(JwtResponse.class) | ||
.setNotNull("accessToken") | ||
.setNotNull("refreshToken") | ||
.setNotNull("grantType") | ||
.sample(); | ||
|
||
doReturn(jwt).when(signService).signIn(dto); | ||
|
||
// when & then | ||
mockMvc.perform(post("/sign-in") | ||
.content(objectMapper.writeValueAsString(dto)) | ||
.contentType(MediaType.APPLICATION_JSON)) | ||
.andExpect(status().isOk()) | ||
.andExpect(jsonPath("$.data.accessToken").exists()) | ||
.andExpect(jsonPath("$.data.refreshToken").exists()); | ||
} | ||
|
||
@TestWithDisplayName("") | ||
void sendEmailForVerification() throws Exception { | ||
// given | ||
GenerateCodeRequest dto = getConstructorMonkey().giveMeOne(GenerateCodeRequest.class); | ||
|
||
// when & then | ||
mockMvc.perform(post("/email/request-code") | ||
.content(objectMapper.writeValueAsString(dto)) | ||
.contentType(MediaType.APPLICATION_JSON)) | ||
.andExpect(status().isOk()) | ||
.andExpect(jsonPath("$.data").doesNotExist()); | ||
} | ||
|
||
@TestWithDisplayName("") | ||
void verifyEmail() throws Exception { | ||
// given | ||
VerifyEmailRequest dto = getConstructorMonkey().giveMeOne(VerifyEmailRequest.class); | ||
|
||
// when & then | ||
mockMvc.perform(post("/email/verify-email") | ||
.content(objectMapper.writeValueAsString(dto)) | ||
.contentType(MediaType.APPLICATION_JSON)) | ||
.andExpect(status().isOk()) | ||
.andExpect(jsonPath("$.data").doesNotExist()); | ||
} | ||
} |
99 changes: 99 additions & 0 deletions
99
cakk-api/src/test/java/com/cakk/api/factory/OidcProviderFactoryTest.java
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 |
---|---|---|
@@ -0,0 +1,99 @@ | ||
package com.cakk.api.factory; | ||
|
||
import static org.junit.jupiter.api.Assertions.*; | ||
import static org.mockito.Mockito.*; | ||
|
||
import org.mockito.InjectMocks; | ||
import org.mockito.Mock; | ||
|
||
import com.cakk.api.common.annotation.TestWithDisplayName; | ||
import com.cakk.api.common.base.MockitoTest; | ||
import com.cakk.api.provider.oauth.impl.AppleAuthProvider; | ||
import com.cakk.api.provider.oauth.impl.GoogleAuthProvider; | ||
import com.cakk.api.provider.oauth.impl.KakaoAuthProvider; | ||
import com.cakk.common.enums.Provider; | ||
import com.cakk.common.enums.ReturnCode; | ||
import com.cakk.common.exception.CakkException; | ||
|
||
public class OidcProviderFactoryTest extends MockitoTest { | ||
|
||
@InjectMocks | ||
private OidcProviderFactory oidcProviderFactory; | ||
|
||
@Mock | ||
private AppleAuthProvider appleAuthProvider; | ||
|
||
@Mock | ||
private KakaoAuthProvider kakaoAuthProvider; | ||
|
||
@Mock | ||
private GoogleAuthProvider googleAuthProvider; | ||
|
||
@TestWithDisplayName("애플 제공자와 idToken을 받아 제공자의 id를 반환한다") | ||
void getProviderId1() { | ||
// given | ||
final Provider provider = Provider.APPLE; | ||
final String idToken = "id"; | ||
final String providerId = "providerId"; | ||
|
||
doReturn(providerId).when(appleAuthProvider).getProviderId(idToken); | ||
|
||
// when | ||
String result = oidcProviderFactory.getProviderId(provider, idToken); | ||
|
||
// then | ||
assertEquals(providerId, result); | ||
|
||
verify(appleAuthProvider, times(1)).getProviderId(idToken); | ||
} | ||
|
||
@TestWithDisplayName("구글 제공자와 idToken을 받아 제공자의 id를 반환한다") | ||
void getProviderId2() { | ||
// given | ||
final Provider provider = Provider.GOOGLE; | ||
final String idToken = "id"; | ||
final String providerId = "providerId"; | ||
|
||
doReturn(providerId).when(googleAuthProvider).getProviderId(idToken); | ||
|
||
// when | ||
String result = oidcProviderFactory.getProviderId(provider, idToken); | ||
|
||
// then | ||
assertEquals(providerId, result); | ||
|
||
verify(googleAuthProvider, times(1)).getProviderId(idToken); | ||
} | ||
|
||
@TestWithDisplayName("카카오 제공자와 idToken을 받아 제공자의 id를 반환한다") | ||
void getProviderId3() { | ||
// given | ||
final Provider provider = Provider.KAKAO; | ||
final String idToken = "id"; | ||
final String providerId = "providerId"; | ||
|
||
doReturn(providerId).when(kakaoAuthProvider).getProviderId(idToken); | ||
|
||
// when | ||
String result = oidcProviderFactory.getProviderId(provider, idToken); | ||
|
||
// then | ||
assertEquals(providerId, result); | ||
|
||
verify(kakaoAuthProvider, times(1)).getProviderId(idToken); | ||
} | ||
|
||
@TestWithDisplayName("제공자가 null 이라면 예외를 던진다") | ||
void getProviderId4() { | ||
// given | ||
final Provider provider = null; | ||
final String idToken = "id"; | ||
|
||
// when & then | ||
assertThrows( | ||
CakkException.class, | ||
() -> oidcProviderFactory.getProviderId(provider, idToken), | ||
ReturnCode.WRONG_PROVIDER.getMessage() | ||
); | ||
} | ||
} |
47 changes: 47 additions & 0 deletions
47
cakk-api/src/test/java/com/cakk/api/resolver/AccessTokenResolverTest.java
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 |
---|---|---|
@@ -0,0 +1,47 @@ | ||
package com.cakk.api.resolver; | ||
|
||
import static org.assertj.core.api.Assertions.*; | ||
import static org.mockito.Mockito.*; | ||
|
||
import org.mockito.InjectMocks; | ||
import org.springframework.core.MethodParameter; | ||
|
||
import com.cakk.api.annotation.AccessToken; | ||
import com.cakk.api.common.annotation.TestWithDisplayName; | ||
import com.cakk.api.common.base.MockitoTest; | ||
|
||
class AccessTokenResolverTest extends MockitoTest { | ||
|
||
@InjectMocks | ||
private AccessTokenResolver accessTokenResolver; | ||
|
||
@TestWithDisplayName("supportsParameter 메서드는 RefreshToken 어노테이션이 붙은 String 타입의 파라미터를 지원한다.") | ||
void supportsParameter() { | ||
// given | ||
MethodParameter parameter = mock(MethodParameter.class); | ||
|
||
doReturn(true).when(parameter).hasParameterAnnotation(AccessToken.class); | ||
doReturn(String.class).when(parameter).getParameterType(); | ||
|
||
// when | ||
boolean result = accessTokenResolver.supportsParameter(parameter); | ||
|
||
// then | ||
assertThat(result).isTrue(); | ||
} | ||
|
||
@TestWithDisplayName("String 타입이 아닌 경우, false를 반환한다.") | ||
void supportsParameter2() { | ||
// given | ||
MethodParameter parameter = mock(MethodParameter.class); | ||
|
||
doReturn(true).when(parameter).hasParameterAnnotation(AccessToken.class); | ||
doReturn(Integer.class).when(parameter).getParameterType(); | ||
|
||
// when | ||
boolean result = accessTokenResolver.supportsParameter(parameter); | ||
|
||
// then | ||
assertThat(result).isFalse(); | ||
} | ||
} |
48 changes: 48 additions & 0 deletions
48
cakk-api/src/test/java/com/cakk/api/resolver/AuthorizedUserResolverTest.java
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 |
---|---|---|
@@ -0,0 +1,48 @@ | ||
package com.cakk.api.resolver; | ||
|
||
import static org.assertj.core.api.Assertions.*; | ||
import static org.mockito.Mockito.*; | ||
|
||
import org.mockito.InjectMocks; | ||
import org.springframework.core.MethodParameter; | ||
|
||
import com.cakk.api.annotation.SignInUser; | ||
import com.cakk.api.common.annotation.TestWithDisplayName; | ||
import com.cakk.api.common.base.MockitoTest; | ||
import com.cakk.domain.mysql.entity.user.User; | ||
|
||
class AuthorizedUserResolverTest extends MockitoTest { | ||
|
||
@InjectMocks | ||
private AuthorizedUserResolver authorizedUserResolver; | ||
|
||
@TestWithDisplayName("supportsParameter 메서드는 RefreshToken 어노테이션이 붙은 String 타입의 파라미터를 지원한다.") | ||
void supportsParameter() { | ||
// given | ||
MethodParameter parameter = mock(MethodParameter.class); | ||
|
||
doReturn(true).when(parameter).hasParameterAnnotation(SignInUser.class); | ||
doReturn(User.class).when(parameter).getParameterType(); | ||
|
||
// when | ||
boolean result = authorizedUserResolver.supportsParameter(parameter); | ||
|
||
// then | ||
assertThat(result).isTrue(); | ||
} | ||
|
||
@TestWithDisplayName("String 타입이 아닌 경우, false를 반환한다.") | ||
void supportsParameter2() { | ||
// given | ||
MethodParameter parameter = mock(MethodParameter.class); | ||
|
||
doReturn(true).when(parameter).hasParameterAnnotation(SignInUser.class); | ||
doReturn(Integer.class).when(parameter).getParameterType(); | ||
|
||
// when | ||
boolean result = authorizedUserResolver.supportsParameter(parameter); | ||
|
||
// then | ||
assertThat(result).isFalse(); | ||
} | ||
} |
47 changes: 47 additions & 0 deletions
47
cakk-api/src/test/java/com/cakk/api/resolver/RefreshTokenResolverTest.java
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 |
---|---|---|
@@ -0,0 +1,47 @@ | ||
package com.cakk.api.resolver; | ||
|
||
import static org.assertj.core.api.Assertions.*; | ||
import static org.mockito.Mockito.*; | ||
|
||
import org.mockito.InjectMocks; | ||
import org.springframework.core.MethodParameter; | ||
|
||
import com.cakk.api.annotation.RefreshToken; | ||
import com.cakk.api.common.annotation.TestWithDisplayName; | ||
import com.cakk.api.common.base.MockitoTest; | ||
|
||
class RefreshTokenResolverTest extends MockitoTest { | ||
|
||
@InjectMocks | ||
private RefreshTokenResolver refreshTokenResolver; | ||
|
||
@TestWithDisplayName("supportsParameter 메서드는 RefreshToken 어노테이션이 붙은 String 타입의 파라미터를 지원한다.") | ||
void supportsParameter() { | ||
// given | ||
MethodParameter parameter = mock(MethodParameter.class); | ||
|
||
doReturn(true).when(parameter).hasParameterAnnotation(RefreshToken.class); | ||
doReturn(String.class).when(parameter).getParameterType(); | ||
|
||
// when | ||
boolean result = refreshTokenResolver.supportsParameter(parameter); | ||
|
||
// then | ||
assertThat(result).isTrue(); | ||
} | ||
|
||
@TestWithDisplayName("String 타입이 아닌 경우, false를 반환한다.") | ||
void supportsParameter2() { | ||
// given | ||
MethodParameter parameter = mock(MethodParameter.class); | ||
|
||
doReturn(true).when(parameter).hasParameterAnnotation(RefreshToken.class); | ||
doReturn(Integer.class).when(parameter).getParameterType(); | ||
|
||
// when | ||
boolean result = refreshTokenResolver.supportsParameter(parameter); | ||
|
||
// then | ||
assertThat(result).isFalse(); | ||
} | ||
} |