diff --git a/src/main/java/everymeal/server/global/util/JwtUtil.java b/src/main/java/everymeal/server/global/util/JwtUtil.java index 6c8f898..b463378 100644 --- a/src/main/java/everymeal/server/global/util/JwtUtil.java +++ b/src/main/java/everymeal/server/global/util/JwtUtil.java @@ -67,7 +67,7 @@ public AuthenticatedUser getAuthenticateUserFromAccessToken(String token) { if (claims != null) { return AuthenticatedUser.builder() .idx(Long.parseLong(claims.get("CLAIM_KEY_IDX").toString())) - .email(claims.get("CLAIM_KEY_EMAIL").toString()) + .deviceId(claims.get("CLAIM_KEY_DEVICEID").toString()) .nickName(claims.get("CLAIM_KEY_NICKNAME").toString()) .build(); } diff --git a/src/main/java/everymeal/server/global/util/authresolver/entity/AuthenticatedUser.java b/src/main/java/everymeal/server/global/util/authresolver/entity/AuthenticatedUser.java index 1c23d9e..d8bd75a 100644 --- a/src/main/java/everymeal/server/global/util/authresolver/entity/AuthenticatedUser.java +++ b/src/main/java/everymeal/server/global/util/authresolver/entity/AuthenticatedUser.java @@ -7,13 +7,13 @@ @Getter public class AuthenticatedUser { private Long idx; - private String email; + private String deviceId; private String nickName; @Builder - public AuthenticatedUser(Long idx, String email, String nickName) { + public AuthenticatedUser(Long idx, String deviceId, String nickName) { this.idx = idx; - this.email = email; + this.deviceId = deviceId; this.nickName = nickName; } } diff --git a/src/main/java/everymeal/server/user/service/UserService.java b/src/main/java/everymeal/server/user/service/UserService.java index 5a6801b..c0b912b 100644 --- a/src/main/java/everymeal/server/user/service/UserService.java +++ b/src/main/java/everymeal/server/user/service/UserService.java @@ -10,5 +10,5 @@ public interface UserService { UserLoginRes login(String userDeviceId); - Boolean isAuth(AuthenticatedUser accessToken); + Boolean isAuth(AuthenticatedUser authenticatedUser); } diff --git a/src/main/java/everymeal/server/user/service/UserServiceImpl.java b/src/main/java/everymeal/server/user/service/UserServiceImpl.java index b0cb26d..2fa6ad9 100644 --- a/src/main/java/everymeal/server/user/service/UserServiceImpl.java +++ b/src/main/java/everymeal/server/user/service/UserServiceImpl.java @@ -40,8 +40,8 @@ public UserLoginRes login(String userDeviceId) { public Boolean isAuth(AuthenticatedUser authenticatedUser) { User user = userRepository - .findById(authenticatedUser.getIdx()) + .findByDeviceId(authenticatedUser.getDeviceId()) .orElseThrow(() -> new ApplicationException(ExceptionList.USER_NOT_FOUND)); - return !user.getEmail().isEmpty(); + return !user.getEmail().isBlank(); } } diff --git a/src/test/java/everymeal/server/global/ControllerTestSupport.java b/src/test/java/everymeal/server/global/ControllerTestSupport.java index d4ef5a2..98c1d13 100644 --- a/src/test/java/everymeal/server/global/ControllerTestSupport.java +++ b/src/test/java/everymeal/server/global/ControllerTestSupport.java @@ -2,6 +2,9 @@ import com.fasterxml.jackson.databind.ObjectMapper; +import everymeal.server.global.util.JwtUtil; +import everymeal.server.global.util.authresolver.UserJwtResolver; +import everymeal.server.infra.HealthCheckController; import everymeal.server.meal.controller.MealController; import everymeal.server.meal.service.MealService; import everymeal.server.university.controller.UniversityController; @@ -13,13 +16,23 @@ import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.test.web.servlet.MockMvc; -@WebMvcTest(controllers = {UserController.class, MealController.class, UniversityController.class}) +@WebMvcTest( + controllers = { + UserController.class, + MealController.class, + UniversityController.class, + HealthCheckController.class + }) public abstract class ControllerTestSupport { @Autowired protected MockMvc mockMvc; + @Autowired protected UserJwtResolver userJwtResolver; + @Autowired protected ObjectMapper objectMapper; + @MockBean protected JwtUtil jwtUtil; + @MockBean protected UserService userService; @MockBean protected MealService mealService; diff --git a/src/test/java/everymeal/server/infra/HealthCheckControllerTest.java b/src/test/java/everymeal/server/infra/HealthCheckControllerTest.java index 33913cb..82595b6 100644 --- a/src/test/java/everymeal/server/infra/HealthCheckControllerTest.java +++ b/src/test/java/everymeal/server/infra/HealthCheckControllerTest.java @@ -4,16 +4,11 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; +import everymeal.server.global.ControllerTestSupport; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; -import org.springframework.test.web.servlet.MockMvc; -@WebMvcTest(HealthCheckController.class) -class HealthCheckControllerTest { - - @Autowired MockMvc mvc; +class HealthCheckControllerTest extends ControllerTestSupport { @Test @DisplayName("health-check") @@ -23,7 +18,7 @@ void healthCheck() throws Exception { // when // then - mvc.perform(get("/health-check")) + mockMvc.perform(get("/health-check")) .andExpect(status().isOk()) .andExpect(content().string(hello)); } diff --git a/src/test/java/everymeal/server/user/controller/UserControllerTest.java b/src/test/java/everymeal/server/user/controller/UserControllerTest.java index 75adf86..b5d4532 100644 --- a/src/test/java/everymeal/server/user/controller/UserControllerTest.java +++ b/src/test/java/everymeal/server/user/controller/UserControllerTest.java @@ -3,6 +3,7 @@ import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.any; import static org.mockito.BDDMockito.given; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.cookie; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; @@ -58,4 +59,23 @@ void login() throws Exception { .andExpect(jsonPath("$.message").value("OK")) .andExpect(cookie().exists("refresh-token")); } + + @DisplayName("유저 인증 여부를 확인한다.") + @Test + void checkUserAuth() throws Exception { + // given + String accessToken = "eyTestToken1ojkfnsnjie432GFDdss"; + + given(userService.isAuth(any())).willReturn(true); + + // when then + mockMvc.perform( + get("/api/v1/users/auth") + .content(accessToken) + .contentType(MediaType.APPLICATION_JSON)) + .andDo(MockMvcResultHandlers.print()) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.success").value(true)) + .andExpect(jsonPath("$.message").value("OK")); + } } diff --git a/src/test/java/everymeal/server/user/service/UserServiceImplTest.java b/src/test/java/everymeal/server/user/service/UserServiceImplTest.java index 71a43b6..c936672 100644 --- a/src/test/java/everymeal/server/user/service/UserServiceImplTest.java +++ b/src/test/java/everymeal/server/user/service/UserServiceImplTest.java @@ -3,7 +3,9 @@ import static org.junit.jupiter.api.Assertions.*; import everymeal.server.global.IntegrationTestSupport; +import everymeal.server.global.util.authresolver.entity.AuthenticatedUser; import everymeal.server.user.controller.dto.response.UserLoginRes; +import everymeal.server.user.entity.User; import everymeal.server.user.repository.UserRepository; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; @@ -46,4 +48,24 @@ void login() { // then assertNotNull(response.getRefreshToken()); } + + @DisplayName("유저 인증 여부를 반환한다.") + @Test + void isUserAuthenticated() { + // given + User user = + userRepository.save( + User.builder() + .deviceId("dsafkml-fgsmkgrlms-421m4f") + .email("test@mju.ac.kr") + .build()); + AuthenticatedUser authenticatedUser = + AuthenticatedUser.builder().deviceId("dsafkml-fgsmkgrlms-421m4f").build(); + + // when + Boolean response = userService.isAuth(authenticatedUser); + + // then + assertTrue(response); + } }