From 41258982f97bdfc3630b53692b9e0d3009081bbb Mon Sep 17 00:00:00 2001 From: jhkim Date: Thu, 22 Dec 2022 02:15:46 +0900 Subject: [PATCH 01/17] =?UTF-8?q?test:=20repository=EB=8B=A8=EC=9C=84?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 4 +++ .../user/repository/UserRepository.java | 2 +- .../cokkiri/global/entity/BaseEntity.java | 8 ++++-- .../study/repository/StudyRepositoryTest.java | 2 ++ .../user/repository/UserRepositoryTest.java | 28 +++++++++++++++++++ .../techeer/cokkiri/fixture/UserFixtures.java | 9 +++++- 6 files changed, 49 insertions(+), 4 deletions(-) create mode 100644 src/test/java/com/techeer/cokkiri/domain/user/repository/UserRepositoryTest.java diff --git a/build.gradle b/build.gradle index c0bc4db..8fcbb1b 100644 --- a/build.gradle +++ b/build.gradle @@ -48,6 +48,10 @@ dependencies { implementation group: 'org.springframework.boot', name: 'spring-boot-starter-validation', version: '2.7.5' implementation group: 'org.springframework.boot', name: 'spring-boot-starter-security', version: '2.7.5' implementation group: 'io.springfox', name: 'springfox-boot-starter', version: '3.0.0' + testImplementation 'junit:junit:4.13.1' + testImplementation 'junit:junit:4.13.1' + testImplementation 'junit:junit:4.13.1' + testImplementation 'junit:junit:4.13.1' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' runtimeOnly 'org.postgresql:postgresql' diff --git a/src/main/java/com/techeer/cokkiri/domain/user/repository/UserRepository.java b/src/main/java/com/techeer/cokkiri/domain/user/repository/UserRepository.java index 9f83ae9..81d578e 100644 --- a/src/main/java/com/techeer/cokkiri/domain/user/repository/UserRepository.java +++ b/src/main/java/com/techeer/cokkiri/domain/user/repository/UserRepository.java @@ -3,9 +3,9 @@ import com.techeer.cokkiri.domain.user.entity.User; import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.test.annotation.Rollback; public interface UserRepository extends JpaRepository { boolean existsByUsername(String username); - Optional findUserByUsername(String username); } diff --git a/src/main/java/com/techeer/cokkiri/global/entity/BaseEntity.java b/src/main/java/com/techeer/cokkiri/global/entity/BaseEntity.java index 6ef23a8..77a06e5 100644 --- a/src/main/java/com/techeer/cokkiri/global/entity/BaseEntity.java +++ b/src/main/java/com/techeer/cokkiri/global/entity/BaseEntity.java @@ -4,6 +4,8 @@ import javax.persistence.EntityListeners; import javax.persistence.MappedSuperclass; import lombok.*; +import org.hibernate.annotations.CreationTimestamp; +import org.hibernate.annotations.UpdateTimestamp; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.jpa.domain.support.AuditingEntityListener; @@ -14,9 +16,11 @@ @EntityListeners(AuditingEntityListener.class) @ToString public class BaseEntity { - @CreatedDate private LocalDateTime createdAt; + @CreationTimestamp + private LocalDateTime createdAt; - @LastModifiedDate private LocalDateTime updatedAt; + @UpdateTimestamp + private LocalDateTime updatedAt; private boolean isDeleted; diff --git a/src/test/java/com/techeer/cokkiri/domain/study/repository/StudyRepositoryTest.java b/src/test/java/com/techeer/cokkiri/domain/study/repository/StudyRepositoryTest.java index 6de9f96..7a9d9b7 100644 --- a/src/test/java/com/techeer/cokkiri/domain/study/repository/StudyRepositoryTest.java +++ b/src/test/java/com/techeer/cokkiri/domain/study/repository/StudyRepositoryTest.java @@ -12,8 +12,10 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; +import org.springframework.test.annotation.Rollback; @DataJpaTest +@Rollback(value = false) public class StudyRepositoryTest { @Autowired private StudyRepository studyRepository; @Autowired private UserRepository userRepository; diff --git a/src/test/java/com/techeer/cokkiri/domain/user/repository/UserRepositoryTest.java b/src/test/java/com/techeer/cokkiri/domain/user/repository/UserRepositoryTest.java new file mode 100644 index 0000000..fc16b19 --- /dev/null +++ b/src/test/java/com/techeer/cokkiri/domain/user/repository/UserRepositoryTest.java @@ -0,0 +1,28 @@ +package com.techeer.cokkiri.domain.user.repository; + +import com.techeer.cokkiri.domain.user.entity.User; +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.orm.jpa.DataJpaTest; + +import static com.techeer.cokkiri.fixture.UserFixtures.DEFAULT_USER; +import static org.junit.jupiter.api.Assertions.assertEquals; + +@DataJpaTest +public class UserRepositoryTest { + + @Autowired + private UserRepository userRepository; + + @Test + @DisplayName("username으로 user를 조회할 수 있다.") + void userExists() { + + User user = DEFAULT_USER; + userRepository.save(user); + + assertEquals(user.getUsername(),"defaultUser"); + } + +} diff --git a/src/test/java/com/techeer/cokkiri/fixture/UserFixtures.java b/src/test/java/com/techeer/cokkiri/fixture/UserFixtures.java index cfc44e9..fa600fc 100644 --- a/src/test/java/com/techeer/cokkiri/fixture/UserFixtures.java +++ b/src/test/java/com/techeer/cokkiri/fixture/UserFixtures.java @@ -7,8 +7,15 @@ public class UserFixtures { User.builder() .username("javaStudyManager") .bio("자바를 좋아합니다.") - .imageUrl("url") .nickname("javaMania") .password("qwer123!") .build(); + + public static final User DEFAULT_USER = + User.builder() + .username("defaultUser") + .bio("테스트용 디폴트 유저") + .nickname("default") + .password("Test1234!") + .build(); } From 96e9d4661b57176c1a051566777e6e402d240229 Mon Sep 17 00:00:00 2001 From: github-actions <> Date: Wed, 21 Dec 2022 17:16:14 +0000 Subject: [PATCH 02/17] style: google-java-format --- .../user/repository/UserRepository.java | 2 +- .../cokkiri/global/entity/BaseEntity.java | 8 ++----- .../user/repository/UserRepositoryTest.java | 24 +++++++++---------- .../techeer/cokkiri/fixture/UserFixtures.java | 12 +++++----- 4 files changed, 20 insertions(+), 26 deletions(-) diff --git a/src/main/java/com/techeer/cokkiri/domain/user/repository/UserRepository.java b/src/main/java/com/techeer/cokkiri/domain/user/repository/UserRepository.java index 81d578e..9f83ae9 100644 --- a/src/main/java/com/techeer/cokkiri/domain/user/repository/UserRepository.java +++ b/src/main/java/com/techeer/cokkiri/domain/user/repository/UserRepository.java @@ -3,9 +3,9 @@ import com.techeer.cokkiri.domain.user.entity.User; import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.test.annotation.Rollback; public interface UserRepository extends JpaRepository { boolean existsByUsername(String username); + Optional findUserByUsername(String username); } diff --git a/src/main/java/com/techeer/cokkiri/global/entity/BaseEntity.java b/src/main/java/com/techeer/cokkiri/global/entity/BaseEntity.java index 77a06e5..d19a7dd 100644 --- a/src/main/java/com/techeer/cokkiri/global/entity/BaseEntity.java +++ b/src/main/java/com/techeer/cokkiri/global/entity/BaseEntity.java @@ -6,8 +6,6 @@ import lombok.*; import org.hibernate.annotations.CreationTimestamp; import org.hibernate.annotations.UpdateTimestamp; -import org.springframework.data.annotation.CreatedDate; -import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.jpa.domain.support.AuditingEntityListener; @Getter @@ -16,11 +14,9 @@ @EntityListeners(AuditingEntityListener.class) @ToString public class BaseEntity { - @CreationTimestamp - private LocalDateTime createdAt; + @CreationTimestamp private LocalDateTime createdAt; - @UpdateTimestamp - private LocalDateTime updatedAt; + @UpdateTimestamp private LocalDateTime updatedAt; private boolean isDeleted; diff --git a/src/test/java/com/techeer/cokkiri/domain/user/repository/UserRepositoryTest.java b/src/test/java/com/techeer/cokkiri/domain/user/repository/UserRepositoryTest.java index fc16b19..1d8eb6d 100644 --- a/src/test/java/com/techeer/cokkiri/domain/user/repository/UserRepositoryTest.java +++ b/src/test/java/com/techeer/cokkiri/domain/user/repository/UserRepositoryTest.java @@ -1,28 +1,26 @@ package com.techeer.cokkiri.domain.user.repository; +import static com.techeer.cokkiri.fixture.UserFixtures.DEFAULT_USER; +import static org.junit.jupiter.api.Assertions.assertEquals; + import com.techeer.cokkiri.domain.user.entity.User; 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.orm.jpa.DataJpaTest; -import static com.techeer.cokkiri.fixture.UserFixtures.DEFAULT_USER; -import static org.junit.jupiter.api.Assertions.assertEquals; - @DataJpaTest public class UserRepositoryTest { - @Autowired - private UserRepository userRepository; - - @Test - @DisplayName("username으로 user를 조회할 수 있다.") - void userExists() { + @Autowired private UserRepository userRepository; - User user = DEFAULT_USER; - userRepository.save(user); + @Test + @DisplayName("username으로 user를 조회할 수 있다.") + void userExists() { - assertEquals(user.getUsername(),"defaultUser"); - } + User user = DEFAULT_USER; + userRepository.save(user); + assertEquals(user.getUsername(), "defaultUser"); + } } diff --git a/src/test/java/com/techeer/cokkiri/fixture/UserFixtures.java b/src/test/java/com/techeer/cokkiri/fixture/UserFixtures.java index fa600fc..542ffda 100644 --- a/src/test/java/com/techeer/cokkiri/fixture/UserFixtures.java +++ b/src/test/java/com/techeer/cokkiri/fixture/UserFixtures.java @@ -12,10 +12,10 @@ public class UserFixtures { .build(); public static final User DEFAULT_USER = - User.builder() - .username("defaultUser") - .bio("테스트용 디폴트 유저") - .nickname("default") - .password("Test1234!") - .build(); + User.builder() + .username("defaultUser") + .bio("테스트용 디폴트 유저") + .nickname("default") + .password("Test1234!") + .build(); } From b879f6d15c69f9472b1d855cb1765bfb5a556a1b Mon Sep 17 00:00:00 2001 From: jhkim Date: Thu, 22 Dec 2022 22:50:12 +0900 Subject: [PATCH 03/17] =?UTF-8?q?test:=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20ser?= =?UTF-8?q?vice=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 3 - .../user/controller/UserController.java | 2 +- .../exception/UserPasswordWrongException.java | 10 ++ .../user/repository/UserRepository.java | 2 +- .../domain/user/service/LoginService.java | 9 +- .../domain/user/service/UserService.java | 5 +- .../cokkiri/global/constant/RegExp.java | 2 +- .../cokkiri/global/error/ErrorCode.java | 2 + .../study/repository/StudyRepositoryTest.java | 1 - .../user/repository/UserRepositoryTest.java | 2 +- .../domain/user/service/UserServiceTest.java | 112 ++++++++++++++++++ .../techeer/cokkiri/fixture/UserFixtures.java | 2 +- 12 files changed, 139 insertions(+), 13 deletions(-) create mode 100644 src/main/java/com/techeer/cokkiri/domain/user/exception/UserPasswordWrongException.java create mode 100644 src/test/java/com/techeer/cokkiri/domain/user/service/UserServiceTest.java diff --git a/build.gradle b/build.gradle index 8fcbb1b..3160b0c 100644 --- a/build.gradle +++ b/build.gradle @@ -49,9 +49,6 @@ dependencies { implementation group: 'org.springframework.boot', name: 'spring-boot-starter-security', version: '2.7.5' implementation group: 'io.springfox', name: 'springfox-boot-starter', version: '3.0.0' testImplementation 'junit:junit:4.13.1' - testImplementation 'junit:junit:4.13.1' - testImplementation 'junit:junit:4.13.1' - testImplementation 'junit:junit:4.13.1' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' runtimeOnly 'org.postgresql:postgresql' diff --git a/src/main/java/com/techeer/cokkiri/domain/user/controller/UserController.java b/src/main/java/com/techeer/cokkiri/domain/user/controller/UserController.java index 84c1f6c..57f752c 100644 --- a/src/main/java/com/techeer/cokkiri/domain/user/controller/UserController.java +++ b/src/main/java/com/techeer/cokkiri/domain/user/controller/UserController.java @@ -56,7 +56,7 @@ public ResponseEntity login( boolean isValidUser = loginService.isValidUser(userRequest); if (isValidUser) { - User user = userService.findUserByUsername(userRequest.getUsername()); + User user = userService.findByUsername(userRequest.getUsername()); loginService.login(user.getId()); } return ResponseEntity.ok(ResultResponse.of(USER_LOGIN_SUCCESS)); diff --git a/src/main/java/com/techeer/cokkiri/domain/user/exception/UserPasswordWrongException.java b/src/main/java/com/techeer/cokkiri/domain/user/exception/UserPasswordWrongException.java new file mode 100644 index 0000000..961d7a7 --- /dev/null +++ b/src/main/java/com/techeer/cokkiri/domain/user/exception/UserPasswordWrongException.java @@ -0,0 +1,10 @@ +package com.techeer.cokkiri.domain.user.exception; + +import com.techeer.cokkiri.global.error.ErrorCode; +import com.techeer.cokkiri.global.error.exception.BusinessException; + +public class UserPasswordWrongException extends BusinessException { + public UserPasswordWrongException() { + super(ErrorCode.USER_PASSWORD_NOT_MATCH); + } +} diff --git a/src/main/java/com/techeer/cokkiri/domain/user/repository/UserRepository.java b/src/main/java/com/techeer/cokkiri/domain/user/repository/UserRepository.java index 9f83ae9..59a8923 100644 --- a/src/main/java/com/techeer/cokkiri/domain/user/repository/UserRepository.java +++ b/src/main/java/com/techeer/cokkiri/domain/user/repository/UserRepository.java @@ -7,5 +7,5 @@ public interface UserRepository extends JpaRepository { boolean existsByUsername(String username); - Optional findUserByUsername(String username); + Optional findByUsername(String username); } diff --git a/src/main/java/com/techeer/cokkiri/domain/user/service/LoginService.java b/src/main/java/com/techeer/cokkiri/domain/user/service/LoginService.java index 238d540..7b40430 100644 --- a/src/main/java/com/techeer/cokkiri/domain/user/service/LoginService.java +++ b/src/main/java/com/techeer/cokkiri/domain/user/service/LoginService.java @@ -2,6 +2,7 @@ import com.techeer.cokkiri.domain.user.dto.UserDto; import com.techeer.cokkiri.domain.user.entity.User; +import com.techeer.cokkiri.domain.user.exception.UserPasswordWrongException; import com.techeer.cokkiri.global.util.PasswordUtil; import javax.servlet.http.HttpSession; import lombok.AccessLevel; @@ -37,7 +38,11 @@ public boolean isUserLogin() { } public boolean isValidUser(UserDto.LoginRequest userRequest) { - User user = userService.findUserByUsername(userRequest.getUsername()); - return passwordUtil.isSamePassword(userRequest.getPassword(), user.getPassword()); + User user = userService.findByUsername(userRequest.getUsername()); + boolean isValidPassword = passwordUtil.isSamePassword(userRequest.getPassword(), user.getPassword()); + if(isValidPassword) { + return true; + } + else throw new UserPasswordWrongException(); } } diff --git a/src/main/java/com/techeer/cokkiri/domain/user/service/UserService.java b/src/main/java/com/techeer/cokkiri/domain/user/service/UserService.java index 728b755..1672e6f 100644 --- a/src/main/java/com/techeer/cokkiri/domain/user/service/UserService.java +++ b/src/main/java/com/techeer/cokkiri/domain/user/service/UserService.java @@ -7,6 +7,7 @@ import com.techeer.cokkiri.domain.user.repository.UserRepository; import com.techeer.cokkiri.global.util.PasswordUtil; import lombok.AccessLevel; +import lombok.NoArgsConstructor; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -31,7 +32,7 @@ public User findUserById(long id) { return userRepository.findById(id).orElseThrow(UserNotFoundException::new); } - public User findUserByUsername(String username) { - return userRepository.findUserByUsername(username).orElseThrow(UserNotFoundException::new); + public User findByUsername(String username) { + return userRepository.findByUsername(username).orElseThrow(UserNotFoundException::new); } } diff --git a/src/main/java/com/techeer/cokkiri/global/constant/RegExp.java b/src/main/java/com/techeer/cokkiri/global/constant/RegExp.java index 53cab3a..c434d38 100644 --- a/src/main/java/com/techeer/cokkiri/global/constant/RegExp.java +++ b/src/main/java/com/techeer/cokkiri/global/constant/RegExp.java @@ -4,5 +4,5 @@ public class RegExp { public static final String PASSWORD_REGEXP = "^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#!~$%^&-+=()])(?=\\S+$).{8,16}$"; - public static final String USERNAME_REGEXP = "^[A-Za-z0-9]{5,20}$"; + public static final String USERNAME_REGEXP = "^[A-Za-z0-9]{5,21}$"; } diff --git a/src/main/java/com/techeer/cokkiri/global/error/ErrorCode.java b/src/main/java/com/techeer/cokkiri/global/error/ErrorCode.java index 61b9794..9bf6254 100644 --- a/src/main/java/com/techeer/cokkiri/global/error/ErrorCode.java +++ b/src/main/java/com/techeer/cokkiri/global/error/ErrorCode.java @@ -17,6 +17,8 @@ public enum ErrorCode { UNAUTHORIZED_ACCESS_ERROR(403, "U003", "승인되지 않은 접근"), USER_USERNAME_DUPLICATED(409, "U004", "회원 아이디 중복"), + USER_PASSWORD_NOT_MATCH(401, "U005", "비밀번호가 일치하지 않음"), + // Study STUDY_DUPLICATION_ERROR(409, "S001", "스터디의 이름이 중복됨"), STUDY_NOT_FOUND_ERROR(400, "S002", "스터디를 찾을 수 없음"), diff --git a/src/test/java/com/techeer/cokkiri/domain/study/repository/StudyRepositoryTest.java b/src/test/java/com/techeer/cokkiri/domain/study/repository/StudyRepositoryTest.java index 7a9d9b7..fc0a172 100644 --- a/src/test/java/com/techeer/cokkiri/domain/study/repository/StudyRepositoryTest.java +++ b/src/test/java/com/techeer/cokkiri/domain/study/repository/StudyRepositoryTest.java @@ -15,7 +15,6 @@ import org.springframework.test.annotation.Rollback; @DataJpaTest -@Rollback(value = false) public class StudyRepositoryTest { @Autowired private StudyRepository studyRepository; @Autowired private UserRepository userRepository; diff --git a/src/test/java/com/techeer/cokkiri/domain/user/repository/UserRepositoryTest.java b/src/test/java/com/techeer/cokkiri/domain/user/repository/UserRepositoryTest.java index 1d8eb6d..5c9c4b2 100644 --- a/src/test/java/com/techeer/cokkiri/domain/user/repository/UserRepositoryTest.java +++ b/src/test/java/com/techeer/cokkiri/domain/user/repository/UserRepositoryTest.java @@ -23,4 +23,4 @@ void userExists() { assertEquals(user.getUsername(), "defaultUser"); } -} +} \ No newline at end of file diff --git a/src/test/java/com/techeer/cokkiri/domain/user/service/UserServiceTest.java b/src/test/java/com/techeer/cokkiri/domain/user/service/UserServiceTest.java new file mode 100644 index 0000000..3a8a439 --- /dev/null +++ b/src/test/java/com/techeer/cokkiri/domain/user/service/UserServiceTest.java @@ -0,0 +1,112 @@ +package com.techeer.cokkiri.domain.user.service; + +import com.techeer.cokkiri.domain.user.dto.UserDto; +import com.techeer.cokkiri.domain.user.entity.User; +import com.techeer.cokkiri.domain.user.exception.UserPasswordWrongException; +import com.techeer.cokkiri.domain.user.mapper.UserMapper; +import com.techeer.cokkiri.domain.user.repository.UserRepository; +import com.techeer.cokkiri.global.util.PasswordUtil; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Spy; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.util.Optional; + +import static com.techeer.cokkiri.fixture.UserFixtures.DEFAULT_USER; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +class UserServiceTest { + + @Mock + private UserRepository userRepository; + + @Mock + private UserMapper userMapper; + + @Mock + private PasswordUtil passwordUtil; + + @Mock + private UserService userService; + + @InjectMocks + private LoginService loginService; + + + + private User user; + private UserDto.LoginRequest loginRequest; + + @BeforeEach + void setup() { + user = DEFAULT_USER; + + loginRequest = UserDto.LoginRequest.builder() + .username(user.getUsername()) + .password(user.getPassword()) + .build(); + } + + @Nested + class loginTest { + @Test + @DisplayName("해당 username을 가진 유저가 존재하지 않을 경우 ") + void userNotExist() { + + } + + @Test + @DisplayName("username은 존재하나 비밀번호가 다를 경우") + void wrongPassword() { + //given + when(passwordUtil.isSamePassword(any(), any())).thenReturn(false); + when(userService.findByUsername(any(String.class))).thenReturn(user); + + //then + assertThrows(UserPasswordWrongException.class, () -> { + loginService.isValidUser(loginRequest); + }); + } + + //dto validation 확인로 컨트롤러에서~ + + + } + +// @Nested +// class findByUsername { +// @Test +// @DisplayName("username으로 조회시 default user가 존재") +// void userNameExists() { +// //given +// User user = DEFAULT_USER; +// userRepository.save(user); +// +// //when +// when(userService.findByUsername(user.getUsername()).thenReturn(user)); +// +// //then +// assertThat(findByUsernameUser.equals(user)); +// +// } +// +// @Test +// @DisplayName("username으로 조회시 해당 user가 존재하지 않으면 UserNotFound가 발생함.") +// void userNameNotExists() { +// +// } +// } + + + +} \ No newline at end of file diff --git a/src/test/java/com/techeer/cokkiri/fixture/UserFixtures.java b/src/test/java/com/techeer/cokkiri/fixture/UserFixtures.java index 542ffda..9c9d54b 100644 --- a/src/test/java/com/techeer/cokkiri/fixture/UserFixtures.java +++ b/src/test/java/com/techeer/cokkiri/fixture/UserFixtures.java @@ -13,7 +13,7 @@ public class UserFixtures { public static final User DEFAULT_USER = User.builder() - .username("defaultUser") + .username("DefaultUser1") .bio("테스트용 디폴트 유저") .nickname("default") .password("Test1234!") From 65734dd9252ea380d812b5b68d0a5be670e895dc Mon Sep 17 00:00:00 2001 From: github-actions <> Date: Thu, 22 Dec 2022 13:50:31 +0000 Subject: [PATCH 04/17] style: google-java-format --- .../exception/UserPasswordWrongException.java | 6 +- .../domain/user/service/LoginService.java | 8 +- .../domain/user/service/UserService.java | 1 - .../study/repository/StudyRepositoryTest.java | 1 - .../user/repository/UserRepositoryTest.java | 2 +- .../domain/user/service/UserServiceTest.java | 147 ++++++++---------- 6 files changed, 75 insertions(+), 90 deletions(-) diff --git a/src/main/java/com/techeer/cokkiri/domain/user/exception/UserPasswordWrongException.java b/src/main/java/com/techeer/cokkiri/domain/user/exception/UserPasswordWrongException.java index 961d7a7..b5a363e 100644 --- a/src/main/java/com/techeer/cokkiri/domain/user/exception/UserPasswordWrongException.java +++ b/src/main/java/com/techeer/cokkiri/domain/user/exception/UserPasswordWrongException.java @@ -4,7 +4,7 @@ import com.techeer.cokkiri.global.error.exception.BusinessException; public class UserPasswordWrongException extends BusinessException { - public UserPasswordWrongException() { - super(ErrorCode.USER_PASSWORD_NOT_MATCH); - } + public UserPasswordWrongException() { + super(ErrorCode.USER_PASSWORD_NOT_MATCH); + } } diff --git a/src/main/java/com/techeer/cokkiri/domain/user/service/LoginService.java b/src/main/java/com/techeer/cokkiri/domain/user/service/LoginService.java index 7b40430..8fb0f46 100644 --- a/src/main/java/com/techeer/cokkiri/domain/user/service/LoginService.java +++ b/src/main/java/com/techeer/cokkiri/domain/user/service/LoginService.java @@ -39,10 +39,10 @@ public boolean isUserLogin() { public boolean isValidUser(UserDto.LoginRequest userRequest) { User user = userService.findByUsername(userRequest.getUsername()); - boolean isValidPassword = passwordUtil.isSamePassword(userRequest.getPassword(), user.getPassword()); - if(isValidPassword) { + boolean isValidPassword = + passwordUtil.isSamePassword(userRequest.getPassword(), user.getPassword()); + if (isValidPassword) { return true; - } - else throw new UserPasswordWrongException(); + } else throw new UserPasswordWrongException(); } } diff --git a/src/main/java/com/techeer/cokkiri/domain/user/service/UserService.java b/src/main/java/com/techeer/cokkiri/domain/user/service/UserService.java index 1672e6f..d666db1 100644 --- a/src/main/java/com/techeer/cokkiri/domain/user/service/UserService.java +++ b/src/main/java/com/techeer/cokkiri/domain/user/service/UserService.java @@ -7,7 +7,6 @@ import com.techeer.cokkiri.domain.user.repository.UserRepository; import com.techeer.cokkiri.global.util.PasswordUtil; import lombok.AccessLevel; -import lombok.NoArgsConstructor; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; diff --git a/src/test/java/com/techeer/cokkiri/domain/study/repository/StudyRepositoryTest.java b/src/test/java/com/techeer/cokkiri/domain/study/repository/StudyRepositoryTest.java index fc0a172..6de9f96 100644 --- a/src/test/java/com/techeer/cokkiri/domain/study/repository/StudyRepositoryTest.java +++ b/src/test/java/com/techeer/cokkiri/domain/study/repository/StudyRepositoryTest.java @@ -12,7 +12,6 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; -import org.springframework.test.annotation.Rollback; @DataJpaTest public class StudyRepositoryTest { diff --git a/src/test/java/com/techeer/cokkiri/domain/user/repository/UserRepositoryTest.java b/src/test/java/com/techeer/cokkiri/domain/user/repository/UserRepositoryTest.java index 5c9c4b2..1d8eb6d 100644 --- a/src/test/java/com/techeer/cokkiri/domain/user/repository/UserRepositoryTest.java +++ b/src/test/java/com/techeer/cokkiri/domain/user/repository/UserRepositoryTest.java @@ -23,4 +23,4 @@ void userExists() { assertEquals(user.getUsername(), "defaultUser"); } -} \ No newline at end of file +} diff --git a/src/test/java/com/techeer/cokkiri/domain/user/service/UserServiceTest.java b/src/test/java/com/techeer/cokkiri/domain/user/service/UserServiceTest.java index 3a8a439..616cc31 100644 --- a/src/test/java/com/techeer/cokkiri/domain/user/service/UserServiceTest.java +++ b/src/test/java/com/techeer/cokkiri/domain/user/service/UserServiceTest.java @@ -1,5 +1,10 @@ package com.techeer.cokkiri.domain.user.service; +import static com.techeer.cokkiri.fixture.UserFixtures.DEFAULT_USER; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.when; + import com.techeer.cokkiri.domain.user.dto.UserDto; import com.techeer.cokkiri.domain.user.entity.User; import com.techeer.cokkiri.domain.user.exception.UserPasswordWrongException; @@ -13,100 +18,82 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; import org.mockito.Mock; -import org.mockito.Spy; import org.mockito.junit.jupiter.MockitoExtension; -import java.util.Optional; - -import static com.techeer.cokkiri.fixture.UserFixtures.DEFAULT_USER; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.when; - @ExtendWith(MockitoExtension.class) class UserServiceTest { - @Mock - private UserRepository userRepository; - - @Mock - private UserMapper userMapper; - - @Mock - private PasswordUtil passwordUtil; - - @Mock - private UserService userService; + @Mock private UserRepository userRepository; - @InjectMocks - private LoginService loginService; + @Mock private UserMapper userMapper; + @Mock private PasswordUtil passwordUtil; + @Mock private UserService userService; - private User user; - private UserDto.LoginRequest loginRequest; - - @BeforeEach - void setup() { - user = DEFAULT_USER; - - loginRequest = UserDto.LoginRequest.builder() - .username(user.getUsername()) - .password(user.getPassword()) - .build(); - } - - @Nested - class loginTest { - @Test - @DisplayName("해당 username을 가진 유저가 존재하지 않을 경우 ") - void userNotExist() { + @InjectMocks private LoginService loginService; - } + private User user; + private UserDto.LoginRequest loginRequest; - @Test - @DisplayName("username은 존재하나 비밀번호가 다를 경우") - void wrongPassword() { - //given - when(passwordUtil.isSamePassword(any(), any())).thenReturn(false); - when(userService.findByUsername(any(String.class))).thenReturn(user); + @BeforeEach + void setup() { + user = DEFAULT_USER; - //then - assertThrows(UserPasswordWrongException.class, () -> { - loginService.isValidUser(loginRequest); - }); - } + loginRequest = + UserDto.LoginRequest.builder() + .username(user.getUsername()) + .password(user.getPassword()) + .build(); + } - //dto validation 확인로 컨트롤러에서~ + @Nested + class loginTest { + @Test + @DisplayName("해당 username을 가진 유저가 존재하지 않을 경우 ") + void userNotExist() {} + @Test + @DisplayName("username은 존재하나 비밀번호가 다를 경우") + void wrongPassword() { + // given + when(passwordUtil.isSamePassword(any(), any())).thenReturn(false); + when(userService.findByUsername(any(String.class))).thenReturn(user); + // then + assertThrows( + UserPasswordWrongException.class, + () -> { + loginService.isValidUser(loginRequest); + }); } -// @Nested -// class findByUsername { -// @Test -// @DisplayName("username으로 조회시 default user가 존재") -// void userNameExists() { -// //given -// User user = DEFAULT_USER; -// userRepository.save(user); -// -// //when -// when(userService.findByUsername(user.getUsername()).thenReturn(user)); -// -// //then -// assertThat(findByUsernameUser.equals(user)); -// -// } -// -// @Test -// @DisplayName("username으로 조회시 해당 user가 존재하지 않으면 UserNotFound가 발생함.") -// void userNameNotExists() { -// -// } -// } - - - -} \ No newline at end of file + // dto validation 확인로 컨트롤러에서~ + + } + + // @Nested + // class findByUsername { + // @Test + // @DisplayName("username으로 조회시 default user가 존재") + // void userNameExists() { + // //given + // User user = DEFAULT_USER; + // userRepository.save(user); + // + // //when + // when(userService.findByUsername(user.getUsername()).thenReturn(user)); + // + // //then + // assertThat(findByUsernameUser.equals(user)); + // + // } + // + // @Test + // @DisplayName("username으로 조회시 해당 user가 존재하지 않으면 UserNotFound가 발생함.") + // void userNameNotExists() { + // + // } + // } + +} From 059144fa86b0a4ca40ad09512296091f436b4aa8 Mon Sep 17 00:00:00 2001 From: jhkim Date: Thu, 22 Dec 2022 23:07:03 +0900 Subject: [PATCH 05/17] =?UTF-8?q?fix:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20=EC=BD=94=EB=93=9C=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/user/service/UserServiceTest.java | 35 ------------------- 1 file changed, 35 deletions(-) diff --git a/src/test/java/com/techeer/cokkiri/domain/user/service/UserServiceTest.java b/src/test/java/com/techeer/cokkiri/domain/user/service/UserServiceTest.java index 3a8a439..f50f42b 100644 --- a/src/test/java/com/techeer/cokkiri/domain/user/service/UserServiceTest.java +++ b/src/test/java/com/techeer/cokkiri/domain/user/service/UserServiceTest.java @@ -59,11 +59,7 @@ void setup() { @Nested class loginTest { - @Test - @DisplayName("해당 username을 가진 유저가 존재하지 않을 경우 ") - void userNotExist() { - } @Test @DisplayName("username은 존재하나 비밀번호가 다를 경우") @@ -77,36 +73,5 @@ void wrongPassword() { loginService.isValidUser(loginRequest); }); } - - //dto validation 확인로 컨트롤러에서~ - - } - -// @Nested -// class findByUsername { -// @Test -// @DisplayName("username으로 조회시 default user가 존재") -// void userNameExists() { -// //given -// User user = DEFAULT_USER; -// userRepository.save(user); -// -// //when -// when(userService.findByUsername(user.getUsername()).thenReturn(user)); -// -// //then -// assertThat(findByUsernameUser.equals(user)); -// -// } -// -// @Test -// @DisplayName("username으로 조회시 해당 user가 존재하지 않으면 UserNotFound가 발생함.") -// void userNameNotExists() { -// -// } -// } - - - } \ No newline at end of file From aed3be418879d4da15a5b29fbe6c16cb54083945 Mon Sep 17 00:00:00 2001 From: github-actions <> Date: Thu, 22 Dec 2022 14:21:24 +0000 Subject: [PATCH 06/17] style: google-java-format --- .../domain/user/service/UserServiceTest.java | 67 +++++++++---------- 1 file changed, 32 insertions(+), 35 deletions(-) diff --git a/src/test/java/com/techeer/cokkiri/domain/user/service/UserServiceTest.java b/src/test/java/com/techeer/cokkiri/domain/user/service/UserServiceTest.java index 1a4cc3a..388714f 100644 --- a/src/test/java/com/techeer/cokkiri/domain/user/service/UserServiceTest.java +++ b/src/test/java/com/techeer/cokkiri/domain/user/service/UserServiceTest.java @@ -23,48 +23,45 @@ @ExtendWith(MockitoExtension.class) class UserServiceTest { - @Mock - private UserRepository userRepository; + @Mock private UserRepository userRepository; - @Mock - private UserMapper userMapper; + @Mock private UserMapper userMapper; - @Mock - private PasswordUtil passwordUtil; + @Mock private PasswordUtil passwordUtil; - @Mock - private UserService userService; + @Mock private UserService userService; - @InjectMocks - private LoginService loginService; + @InjectMocks private LoginService loginService; - private User user; - private UserDto.LoginRequest loginRequest; + private User user; + private UserDto.LoginRequest loginRequest; - @BeforeEach - void setup() { - user = DEFAULT_USER; + @BeforeEach + void setup() { + user = DEFAULT_USER; - loginRequest = - UserDto.LoginRequest.builder() - .username(user.getUsername()) - .password(user.getPassword()) - .build(); - } + loginRequest = + UserDto.LoginRequest.builder() + .username(user.getUsername()) + .password(user.getPassword()) + .build(); + } - @Nested - class loginTest { - @Test - @DisplayName("username은 존재하나 비밀번호가 다를 경우") - void wrongPassword() { - //given - when(passwordUtil.isSamePassword(any(), any())).thenReturn(false); - when(userService.findByUsername(any(String.class))).thenReturn(user); + @Nested + class loginTest { + @Test + @DisplayName("username은 존재하나 비밀번호가 다를 경우") + void wrongPassword() { + // given + when(passwordUtil.isSamePassword(any(), any())).thenReturn(false); + when(userService.findByUsername(any(String.class))).thenReturn(user); - //then - assertThrows(UserPasswordWrongException.class, () -> { - loginService.isValidUser(loginRequest); - }); - } + // then + assertThrows( + UserPasswordWrongException.class, + () -> { + loginService.isValidUser(loginRequest); + }); } -} \ No newline at end of file + } +} From 83d025fd2a1f353203cd39d5c42cf9226beed21d Mon Sep 17 00:00:00 2001 From: jhkim Date: Fri, 23 Dec 2022 00:02:53 +0900 Subject: [PATCH 07/17] =?UTF-8?q?test:=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20?= =?UTF-8?q?=EC=84=B1=EA=B3=B5=20service=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/user/service/UserServiceTest.java | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/test/java/com/techeer/cokkiri/domain/user/service/UserServiceTest.java b/src/test/java/com/techeer/cokkiri/domain/user/service/UserServiceTest.java index 388714f..c58a529 100644 --- a/src/test/java/com/techeer/cokkiri/domain/user/service/UserServiceTest.java +++ b/src/test/java/com/techeer/cokkiri/domain/user/service/UserServiceTest.java @@ -2,6 +2,7 @@ import static com.techeer.cokkiri.fixture.UserFixtures.DEFAULT_USER; import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.when; @@ -50,11 +51,11 @@ void setup() { @Nested class loginTest { @Test - @DisplayName("username은 존재하나 비밀번호가 다를 경우") + @DisplayName("username은 존재하나 비밀번호가 다를 경우 로그인 실패한다.") void wrongPassword() { // given + when(userService.findByUsername(any())).thenReturn(user); when(passwordUtil.isSamePassword(any(), any())).thenReturn(false); - when(userService.findByUsername(any(String.class))).thenReturn(user); // then assertThrows( @@ -63,5 +64,21 @@ void wrongPassword() { loginService.isValidUser(loginRequest); }); } + + @Test + @DisplayName("올바른 username과 비밀번호 입력시 로그인 성공한다.") + void loginSuccess() { + //given + when(userService.findByUsername(any())).thenReturn(user); + when(passwordUtil.isSamePassword(any(), any())).thenReturn(true); + + //when + boolean isValid = loginService.isValidUser(loginRequest); + + //then + assertTrue(isValid); + + + } } } From 04aa8ec69a5d0d79f5585ffe3cd4a58836483ddc Mon Sep 17 00:00:00 2001 From: jhkim Date: Fri, 23 Dec 2022 15:19:28 +0900 Subject: [PATCH 08/17] =?UTF-8?q?test:=20login=20=EC=A3=BC=EC=84=9D?= =?UTF-8?q?=EC=B2=98=EB=A6=AC=20=ED=9B=84=20=EC=9E=84=EC=8B=9C=20=EC=BB=A4?= =?UTF-8?q?=EB=B0=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 2 + .../user/controller/UserController.java | 2 +- .../user/Controller/UserControllerTest.java | 67 +++++++++++++++++++ .../domain/user/service/UserServiceTest.java | 2 - .../techeer/cokkiri/fixture/UserFixtures.java | 40 +++++++---- .../techeer/cokkiri/global/util/JsonUtil.java | 14 ++++ src/test/resources/application.yml | 8 ++- 7 files changed, 119 insertions(+), 16 deletions(-) create mode 100644 src/test/java/com/techeer/cokkiri/domain/user/Controller/UserControllerTest.java create mode 100644 src/test/java/com/techeer/cokkiri/global/util/JsonUtil.java diff --git a/build.gradle b/build.gradle index 3160b0c..9ce8cab 100644 --- a/build.gradle +++ b/build.gradle @@ -54,8 +54,10 @@ dependencies { runtimeOnly 'org.postgresql:postgresql' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' + testImplementation 'org.springframework.security:spring-security-test' implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.8.0' + } tasks.named('test') { diff --git a/src/main/java/com/techeer/cokkiri/domain/user/controller/UserController.java b/src/main/java/com/techeer/cokkiri/domain/user/controller/UserController.java index 57f752c..c7a17b0 100644 --- a/src/main/java/com/techeer/cokkiri/domain/user/controller/UserController.java +++ b/src/main/java/com/techeer/cokkiri/domain/user/controller/UserController.java @@ -57,7 +57,7 @@ public ResponseEntity login( if (isValidUser) { User user = userService.findByUsername(userRequest.getUsername()); - loginService.login(user.getId()); + //loginService.login(user.getId()); } return ResponseEntity.ok(ResultResponse.of(USER_LOGIN_SUCCESS)); } diff --git a/src/test/java/com/techeer/cokkiri/domain/user/Controller/UserControllerTest.java b/src/test/java/com/techeer/cokkiri/domain/user/Controller/UserControllerTest.java new file mode 100644 index 0000000..6bc9278 --- /dev/null +++ b/src/test/java/com/techeer/cokkiri/domain/user/Controller/UserControllerTest.java @@ -0,0 +1,67 @@ +package com.techeer.cokkiri.domain.user.Controller; + +import com.techeer.cokkiri.domain.user.controller.UserController; +import com.techeer.cokkiri.domain.user.service.LoginService; +import com.techeer.cokkiri.domain.user.service.UserService; +import com.techeer.cokkiri.global.result.ResultResponse; +import com.techeer.cokkiri.global.util.JsonUtil; +import org.junit.Before; +import org.junit.jupiter.api.BeforeEach; +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.AutoConfigureMockMvc; +import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.http.MediaType; +import org.springframework.security.test.context.support.WithMockUser; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.result.MockMvcResultMatchers; + +import static com.techeer.cokkiri.fixture.UserFixtures.*; +import static com.techeer.cokkiri.global.result.ResultCode.USER_LOGIN_SUCCESS; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.*; +import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf; +import static org.springframework.test.web.client.match.MockRestRequestMatchers.content; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +@WebMvcTest(UserController.class) +@AutoConfigureMockMvc +public class UserControllerTest { + + private final JsonUtil jsonUtil = new JsonUtil(); + + @MockBean + UserService userService; + + @MockBean + LoginService loginService; + + @Autowired + private MockMvc mockMvc; + + @Test + @DisplayName("로그인에 성공할 경우 ResultResponse(") + @WithMockUser + void loginTest() throws Exception { + //given - 회원가입 + when(loginService.isValidUser(any())).thenReturn(true); + when(userService.findByUsername(any())).thenReturn(DEFAULT_USER); + //doNothing().when(loginService).login(anyLong()); + + + mockMvc.perform(post("/api/v1/users/login") + .contentType(MediaType.APPLICATION_JSON) + .content(jsonUtil.toJsonString(USER_LOGIN_REQUEST)) + .with(csrf()) + ) + + .andExpect(status().isOk()) + .andExpect(MockMvcResultMatchers.content().string(jsonUtil.toJsonString(ResultResponse.of(USER_LOGIN_SUCCESS)))) + .andDo(print()); //전체 메시지 확인 + System.out.println(content()); + } +} \ No newline at end of file diff --git a/src/test/java/com/techeer/cokkiri/domain/user/service/UserServiceTest.java b/src/test/java/com/techeer/cokkiri/domain/user/service/UserServiceTest.java index c58a529..099c456 100644 --- a/src/test/java/com/techeer/cokkiri/domain/user/service/UserServiceTest.java +++ b/src/test/java/com/techeer/cokkiri/domain/user/service/UserServiceTest.java @@ -77,8 +77,6 @@ void loginSuccess() { //then assertTrue(isValid); - - } } } diff --git a/src/test/java/com/techeer/cokkiri/fixture/UserFixtures.java b/src/test/java/com/techeer/cokkiri/fixture/UserFixtures.java index 9c9d54b..a41ee1f 100644 --- a/src/test/java/com/techeer/cokkiri/fixture/UserFixtures.java +++ b/src/test/java/com/techeer/cokkiri/fixture/UserFixtures.java @@ -1,21 +1,37 @@ package com.techeer.cokkiri.fixture; +import com.techeer.cokkiri.domain.study.dto.StudyDto; +import com.techeer.cokkiri.domain.user.dto.UserDto; import com.techeer.cokkiri.domain.user.entity.User; public class UserFixtures { public static final User STUDY_MANAGER_FIXTURE = - User.builder() - .username("javaStudyManager") - .bio("자바를 좋아합니다.") - .nickname("javaMania") - .password("qwer123!") - .build(); + User.builder() + .username("javaStudyManager") + .bio("자바를 좋아합니다.") + .nickname("javaMania") + .password("qwer123!") + .build(); public static final User DEFAULT_USER = - User.builder() - .username("DefaultUser1") - .bio("테스트용 디폴트 유저") - .nickname("default") - .password("Test1234!") - .build(); + User.builder() + .username("DefaultUser1") + .bio("테스트용 디폴트 유저") + .nickname("default") + .password("Test1234!") + .build(); + + + public static final UserDto.LoginRequest USER_LOGIN_REQUEST = + UserDto.LoginRequest.builder() + .username(DEFAULT_USER.getUsername()) + .password(DEFAULT_USER.getPassword()) + .build(); + + public static final UserDto.RegisterRequest USER_REGISTER_REQUEST = + UserDto.RegisterRequest.builder() + .username(DEFAULT_USER.getUsername()) + .password(DEFAULT_USER.getPassword()) + .nickname(DEFAULT_USER.getNickname()) + .build(); } diff --git a/src/test/java/com/techeer/cokkiri/global/util/JsonUtil.java b/src/test/java/com/techeer/cokkiri/global/util/JsonUtil.java new file mode 100644 index 0000000..334c6c1 --- /dev/null +++ b/src/test/java/com/techeer/cokkiri/global/util/JsonUtil.java @@ -0,0 +1,14 @@ +package com.techeer.cokkiri.global.util; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +public class JsonUtil { + private final ObjectMapper objectMapper = new ObjectMapper(); + + public String toJsonString(Object object) throws JsonProcessingException { + return objectMapper.writeValueAsString(object); + } + + +} diff --git a/src/test/resources/application.yml b/src/test/resources/application.yml index 62ec3b4..bd1c014 100644 --- a/src/test/resources/application.yml +++ b/src/test/resources/application.yml @@ -17,4 +17,10 @@ spring: generate-ddl: true properties: hibernate: - format_sql: true \ No newline at end of file + format_sql: true + +server: + servlet: + encoding: + charset: UTF-8 + force: true \ No newline at end of file From 6484ec6a184af07663f9514f6d93c83196cee035 Mon Sep 17 00:00:00 2001 From: jhkim Date: Fri, 23 Dec 2022 16:30:28 +0900 Subject: [PATCH 09/17] =?UTF-8?q?fix:=20@Autowired=EB=A1=9C=20Mockmvc=20?= =?UTF-8?q?=EC=A3=BC=EC=9E=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 인코딩 application.yml로 초기화, @Autowired로 Mockmvc주입 security 작동되는 상태 --- .../domain/user/controller/UserController.java | 11 +++++------ .../domain/user/Controller/UserControllerTest.java | 12 ++++++------ 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/techeer/cokkiri/domain/user/controller/UserController.java b/src/main/java/com/techeer/cokkiri/domain/user/controller/UserController.java index c7a17b0..248f21d 100644 --- a/src/main/java/com/techeer/cokkiri/domain/user/controller/UserController.java +++ b/src/main/java/com/techeer/cokkiri/domain/user/controller/UserController.java @@ -1,9 +1,5 @@ package com.techeer.cokkiri.domain.user.controller; -import static com.techeer.cokkiri.global.result.ResultCode.USER_LOGIN_SUCCESS; -import static com.techeer.cokkiri.global.result.ResultCode.USER_REGISTRATION_SUCCESS; -import static com.techeer.cokkiri.global.result.ResultCode.USER_USERNAME_NOT_DUPLICATED; - import com.techeer.cokkiri.domain.user.dto.UserDto; import com.techeer.cokkiri.domain.user.entity.User; import com.techeer.cokkiri.domain.user.exception.UserDuplicatedException; @@ -13,12 +9,15 @@ import com.techeer.cokkiri.global.result.ResultResponse; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import javax.validation.Valid; import lombok.AccessLevel; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import javax.validation.Valid; + +import static com.techeer.cokkiri.global.result.ResultCode.*; + @Api(tags = "회원 인증 API") @RestController @RequiredArgsConstructor(access = AccessLevel.PROTECTED) @@ -61,4 +60,4 @@ public ResponseEntity login( } return ResponseEntity.ok(ResultResponse.of(USER_LOGIN_SUCCESS)); } -} +} \ No newline at end of file diff --git a/src/test/java/com/techeer/cokkiri/domain/user/Controller/UserControllerTest.java b/src/test/java/com/techeer/cokkiri/domain/user/Controller/UserControllerTest.java index 6bc9278..969fbff 100644 --- a/src/test/java/com/techeer/cokkiri/domain/user/Controller/UserControllerTest.java +++ b/src/test/java/com/techeer/cokkiri/domain/user/Controller/UserControllerTest.java @@ -5,8 +5,6 @@ import com.techeer.cokkiri.domain.user.service.UserService; import com.techeer.cokkiri.global.result.ResultResponse; import com.techeer.cokkiri.global.util.JsonUtil; -import org.junit.Before; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -18,18 +16,20 @@ import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.result.MockMvcResultMatchers; -import static com.techeer.cokkiri.fixture.UserFixtures.*; +import static com.techeer.cokkiri.fixture.UserFixtures.DEFAULT_USER; +import static com.techeer.cokkiri.fixture.UserFixtures.USER_LOGIN_REQUEST; import static com.techeer.cokkiri.global.result.ResultCode.USER_LOGIN_SUCCESS; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.*; +import static org.mockito.Mockito.when; import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf; import static org.springframework.test.web.client.match.MockRestRequestMatchers.content; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; -@WebMvcTest(UserController.class) + @AutoConfigureMockMvc +@WebMvcTest(UserController.class) public class UserControllerTest { private final JsonUtil jsonUtil = new JsonUtil(); @@ -50,7 +50,7 @@ void loginTest() throws Exception { //given - 회원가입 when(loginService.isValidUser(any())).thenReturn(true); when(userService.findByUsername(any())).thenReturn(DEFAULT_USER); - //doNothing().when(loginService).login(anyLong()); + //doNothing().when(loginService).login(any(Long.class)); mockMvc.perform(post("/api/v1/users/login") From ba5a76bd03cb1e27da0dab08e4e04f7dfb6e7d76 Mon Sep 17 00:00:00 2001 From: jhkim Date: Fri, 23 Dec 2022 21:04:05 +0900 Subject: [PATCH 10/17] =?UTF-8?q?test:=20Builder=EB=A1=9C=20mockMvc?= =?UTF-8?q?=EC=B4=88=EA=B8=B0=ED=99=94,=20Security=EA=B4=80=EB=A0=A8=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 1 - .../user/Controller/UserControllerTest.java | 25 +++++++++++++------ src/test/resources/application.yml | 6 ----- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/build.gradle b/build.gradle index 9ce8cab..e7f2833 100644 --- a/build.gradle +++ b/build.gradle @@ -54,7 +54,6 @@ dependencies { runtimeOnly 'org.postgresql:postgresql' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' - testImplementation 'org.springframework.security:spring-security-test' implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.8.0' diff --git a/src/test/java/com/techeer/cokkiri/domain/user/Controller/UserControllerTest.java b/src/test/java/com/techeer/cokkiri/domain/user/Controller/UserControllerTest.java index 969fbff..29f8cf2 100644 --- a/src/test/java/com/techeer/cokkiri/domain/user/Controller/UserControllerTest.java +++ b/src/test/java/com/techeer/cokkiri/domain/user/Controller/UserControllerTest.java @@ -5,23 +5,26 @@ import com.techeer.cokkiri.domain.user.service.UserService; import com.techeer.cokkiri.global.result.ResultResponse; import com.techeer.cokkiri.global.util.JsonUtil; +import org.junit.jupiter.api.BeforeEach; 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.AutoConfigureMockMvc; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.http.MediaType; -import org.springframework.security.test.context.support.WithMockUser; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.result.MockMvcResultMatchers; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; +import org.springframework.web.context.WebApplicationContext; +import org.springframework.web.filter.CharacterEncodingFilter; + +import java.nio.charset.StandardCharsets; import static com.techeer.cokkiri.fixture.UserFixtures.DEFAULT_USER; import static com.techeer.cokkiri.fixture.UserFixtures.USER_LOGIN_REQUEST; import static com.techeer.cokkiri.global.result.ResultCode.USER_LOGIN_SUCCESS; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.when; -import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf; import static org.springframework.test.web.client.match.MockRestRequestMatchers.content; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; @@ -40,23 +43,29 @@ public class UserControllerTest { @MockBean LoginService loginService; - @Autowired + private MockMvc mockMvc; + @BeforeEach + void setUp(WebApplicationContext applicationContext) { + mockMvc = + MockMvcBuilders.webAppContextSetup(applicationContext) + .addFilter(new CharacterEncodingFilter(StandardCharsets.UTF_8.name(), true)) + .build(); + } + @Test @DisplayName("로그인에 성공할 경우 ResultResponse(") - @WithMockUser void loginTest() throws Exception { //given - 회원가입 when(loginService.isValidUser(any())).thenReturn(true); when(userService.findByUsername(any())).thenReturn(DEFAULT_USER); //doNothing().when(loginService).login(any(Long.class)); - - + mockMvc.perform(post("/api/v1/users/login") .contentType(MediaType.APPLICATION_JSON) .content(jsonUtil.toJsonString(USER_LOGIN_REQUEST)) - .with(csrf()) + ) .andExpect(status().isOk()) diff --git a/src/test/resources/application.yml b/src/test/resources/application.yml index bd1c014..e51830d 100644 --- a/src/test/resources/application.yml +++ b/src/test/resources/application.yml @@ -18,9 +18,3 @@ spring: properties: hibernate: format_sql: true - -server: - servlet: - encoding: - charset: UTF-8 - force: true \ No newline at end of file From c90b4305cfa4507f98d57041e6766294cd7e66ad Mon Sep 17 00:00:00 2001 From: jhkim Date: Sun, 25 Dec 2022 00:18:08 +0900 Subject: [PATCH 11/17] =?UTF-8?q?fix:=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=EC=A3=BC=EC=84=9D=EC=B2=98=EB=A6=AC=20?= =?UTF-8?q?=ED=95=B4=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../techeer/cokkiri/domain/user/controller/UserController.java | 2 +- .../cokkiri/domain/user/Controller/UserControllerTest.java | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/techeer/cokkiri/domain/user/controller/UserController.java b/src/main/java/com/techeer/cokkiri/domain/user/controller/UserController.java index 248f21d..e0c7b3b 100644 --- a/src/main/java/com/techeer/cokkiri/domain/user/controller/UserController.java +++ b/src/main/java/com/techeer/cokkiri/domain/user/controller/UserController.java @@ -56,7 +56,7 @@ public ResponseEntity login( if (isValidUser) { User user = userService.findByUsername(userRequest.getUsername()); - //loginService.login(user.getId()); + loginService.login(user.getId()); } return ResponseEntity.ok(ResultResponse.of(USER_LOGIN_SUCCESS)); } diff --git a/src/test/java/com/techeer/cokkiri/domain/user/Controller/UserControllerTest.java b/src/test/java/com/techeer/cokkiri/domain/user/Controller/UserControllerTest.java index 29f8cf2..fea8216 100644 --- a/src/test/java/com/techeer/cokkiri/domain/user/Controller/UserControllerTest.java +++ b/src/test/java/com/techeer/cokkiri/domain/user/Controller/UserControllerTest.java @@ -54,6 +54,7 @@ void setUp(WebApplicationContext applicationContext) { .build(); } + //미완성 테스트 - login메소드 오류 @Test @DisplayName("로그인에 성공할 경우 ResultResponse(") void loginTest() throws Exception { From 0ae24036e2fa807ea39342e54a34db3f94ec55d3 Mon Sep 17 00:00:00 2001 From: jhkim Date: Sat, 31 Dec 2022 00:56:28 +0900 Subject: [PATCH 12/17] =?UTF-8?q?test:=20user=20repository=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=EC=BD=94=EB=93=9C=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../user/Controller/UserControllerTest.java | 9 ++++++-- .../user/repository/UserRepositoryTest.java | 22 ++++++++++++++----- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/src/test/java/com/techeer/cokkiri/domain/user/Controller/UserControllerTest.java b/src/test/java/com/techeer/cokkiri/domain/user/Controller/UserControllerTest.java index fea8216..34e9a98 100644 --- a/src/test/java/com/techeer/cokkiri/domain/user/Controller/UserControllerTest.java +++ b/src/test/java/com/techeer/cokkiri/domain/user/Controller/UserControllerTest.java @@ -1,6 +1,7 @@ package com.techeer.cokkiri.domain.user.Controller; import com.techeer.cokkiri.domain.user.controller.UserController; +import com.techeer.cokkiri.domain.user.entity.User; import com.techeer.cokkiri.domain.user.service.LoginService; import com.techeer.cokkiri.domain.user.service.UserService; import com.techeer.cokkiri.global.result.ResultResponse; @@ -8,6 +9,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; +import org.mockito.Mock; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.boot.test.mock.mockito.MockBean; @@ -43,6 +45,9 @@ public class UserControllerTest { @MockBean LoginService loginService; + @Mock + User mockUser; + private MockMvc mockMvc; @@ -60,8 +65,8 @@ void setUp(WebApplicationContext applicationContext) { void loginTest() throws Exception { //given - 회원가입 when(loginService.isValidUser(any())).thenReturn(true); - when(userService.findByUsername(any())).thenReturn(DEFAULT_USER); - //doNothing().when(loginService).login(any(Long.class)); + when(userService.findByUsername(any())).thenReturn(mockUser); + when(mockUser.getId()).thenReturn(1L); mockMvc.perform(post("/api/v1/users/login") .contentType(MediaType.APPLICATION_JSON) diff --git a/src/test/java/com/techeer/cokkiri/domain/user/repository/UserRepositoryTest.java b/src/test/java/com/techeer/cokkiri/domain/user/repository/UserRepositoryTest.java index 1d8eb6d..aa07b23 100644 --- a/src/test/java/com/techeer/cokkiri/domain/user/repository/UserRepositoryTest.java +++ b/src/test/java/com/techeer/cokkiri/domain/user/repository/UserRepositoryTest.java @@ -2,8 +2,10 @@ import static com.techeer.cokkiri.fixture.UserFixtures.DEFAULT_USER; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; import com.techeer.cokkiri.domain.user.entity.User; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -14,13 +16,23 @@ public class UserRepositoryTest { @Autowired private UserRepository userRepository; - @Test - @DisplayName("username으로 user를 조회할 수 있다.") - void userExists() { + private User user; - User user = DEFAULT_USER; + @BeforeEach + void saveUser() { + user = DEFAULT_USER; userRepository.save(user); + } + + @Test + @DisplayName("user의 존재여부를 username으로 확인한다.") + void existsByUsername() { + assertTrue(userRepository.existsByUsername(user.getUsername())); + } - assertEquals(user.getUsername(), "defaultUser"); + @Test + @DisplayName("username으로 user를 찾는다.") + void findByUsername() { + assertEquals(userRepository.findByUsername(user.getUsername()).orElseThrow(),user); } } From 7c677c90a293a09f911f517c1699bd72d12a2122 Mon Sep 17 00:00:00 2001 From: github-actions <> Date: Fri, 30 Dec 2022 15:57:09 +0000 Subject: [PATCH 13/17] style: google-java-format --- .../user/controller/UserController.java | 9 +- .../user/Controller/UserControllerTest.java | 92 +++++++++---------- .../user/repository/UserRepositoryTest.java | 2 +- .../domain/user/service/UserServiceTest.java | 6 +- .../techeer/cokkiri/fixture/UserFixtures.java | 44 +++++---- .../techeer/cokkiri/global/util/JsonUtil.java | 10 +- 6 files changed, 76 insertions(+), 87 deletions(-) diff --git a/src/main/java/com/techeer/cokkiri/domain/user/controller/UserController.java b/src/main/java/com/techeer/cokkiri/domain/user/controller/UserController.java index e0c7b3b..dc54e6e 100644 --- a/src/main/java/com/techeer/cokkiri/domain/user/controller/UserController.java +++ b/src/main/java/com/techeer/cokkiri/domain/user/controller/UserController.java @@ -1,5 +1,7 @@ package com.techeer.cokkiri.domain.user.controller; +import static com.techeer.cokkiri.global.result.ResultCode.*; + import com.techeer.cokkiri.domain.user.dto.UserDto; import com.techeer.cokkiri.domain.user.entity.User; import com.techeer.cokkiri.domain.user.exception.UserDuplicatedException; @@ -9,15 +11,12 @@ import com.techeer.cokkiri.global.result.ResultResponse; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import javax.validation.Valid; import lombok.AccessLevel; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; -import javax.validation.Valid; - -import static com.techeer.cokkiri.global.result.ResultCode.*; - @Api(tags = "회원 인증 API") @RestController @RequiredArgsConstructor(access = AccessLevel.PROTECTED) @@ -60,4 +59,4 @@ public ResponseEntity login( } return ResponseEntity.ok(ResultResponse.of(USER_LOGIN_SUCCESS)); } -} \ No newline at end of file +} diff --git a/src/test/java/com/techeer/cokkiri/domain/user/Controller/UserControllerTest.java b/src/test/java/com/techeer/cokkiri/domain/user/Controller/UserControllerTest.java index 34e9a98..5b47fa6 100644 --- a/src/test/java/com/techeer/cokkiri/domain/user/Controller/UserControllerTest.java +++ b/src/test/java/com/techeer/cokkiri/domain/user/Controller/UserControllerTest.java @@ -1,11 +1,21 @@ package com.techeer.cokkiri.domain.user.Controller; +import static com.techeer.cokkiri.fixture.UserFixtures.USER_LOGIN_REQUEST; +import static com.techeer.cokkiri.global.result.ResultCode.USER_LOGIN_SUCCESS; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.when; +import static org.springframework.test.web.client.match.MockRestRequestMatchers.content; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + import com.techeer.cokkiri.domain.user.controller.UserController; import com.techeer.cokkiri.domain.user.entity.User; import com.techeer.cokkiri.domain.user.service.LoginService; import com.techeer.cokkiri.domain.user.service.UserService; import com.techeer.cokkiri.global.result.ResultResponse; import com.techeer.cokkiri.global.util.JsonUtil; +import java.nio.charset.StandardCharsets; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -20,63 +30,47 @@ import org.springframework.web.context.WebApplicationContext; import org.springframework.web.filter.CharacterEncodingFilter; -import java.nio.charset.StandardCharsets; - -import static com.techeer.cokkiri.fixture.UserFixtures.DEFAULT_USER; -import static com.techeer.cokkiri.fixture.UserFixtures.USER_LOGIN_REQUEST; -import static com.techeer.cokkiri.global.result.ResultCode.USER_LOGIN_SUCCESS; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.when; -import static org.springframework.test.web.client.match.MockRestRequestMatchers.content; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; -import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; - - @AutoConfigureMockMvc @WebMvcTest(UserController.class) public class UserControllerTest { - private final JsonUtil jsonUtil = new JsonUtil(); - - @MockBean - UserService userService; - - @MockBean - LoginService loginService; + private final JsonUtil jsonUtil = new JsonUtil(); - @Mock - User mockUser; + @MockBean UserService userService; + @MockBean LoginService loginService; - private MockMvc mockMvc; + @Mock User mockUser; - @BeforeEach - void setUp(WebApplicationContext applicationContext) { - mockMvc = - MockMvcBuilders.webAppContextSetup(applicationContext) - .addFilter(new CharacterEncodingFilter(StandardCharsets.UTF_8.name(), true)) - .build(); - } + private MockMvc mockMvc; - //미완성 테스트 - login메소드 오류 - @Test - @DisplayName("로그인에 성공할 경우 ResultResponse(") - void loginTest() throws Exception { - //given - 회원가입 - when(loginService.isValidUser(any())).thenReturn(true); - when(userService.findByUsername(any())).thenReturn(mockUser); - when(mockUser.getId()).thenReturn(1L); - - mockMvc.perform(post("/api/v1/users/login") - .contentType(MediaType.APPLICATION_JSON) - .content(jsonUtil.toJsonString(USER_LOGIN_REQUEST)) + @BeforeEach + void setUp(WebApplicationContext applicationContext) { + mockMvc = + MockMvcBuilders.webAppContextSetup(applicationContext) + .addFilter(new CharacterEncodingFilter(StandardCharsets.UTF_8.name(), true)) + .build(); + } - ) + // 미완성 테스트 - login메소드 오류 + @Test + @DisplayName("로그인에 성공할 경우 ResultResponse(") + void loginTest() throws Exception { + // given - 회원가입 + when(loginService.isValidUser(any())).thenReturn(true); + when(userService.findByUsername(any())).thenReturn(mockUser); + when(mockUser.getId()).thenReturn(1L); - .andExpect(status().isOk()) - .andExpect(MockMvcResultMatchers.content().string(jsonUtil.toJsonString(ResultResponse.of(USER_LOGIN_SUCCESS)))) - .andDo(print()); //전체 메시지 확인 - System.out.println(content()); - } -} \ No newline at end of file + mockMvc + .perform( + post("/api/v1/users/login") + .contentType(MediaType.APPLICATION_JSON) + .content(jsonUtil.toJsonString(USER_LOGIN_REQUEST))) + .andExpect(status().isOk()) + .andExpect( + MockMvcResultMatchers.content() + .string(jsonUtil.toJsonString(ResultResponse.of(USER_LOGIN_SUCCESS)))) + .andDo(print()); // 전체 메시지 확인 + System.out.println(content()); + } +} diff --git a/src/test/java/com/techeer/cokkiri/domain/user/repository/UserRepositoryTest.java b/src/test/java/com/techeer/cokkiri/domain/user/repository/UserRepositoryTest.java index aa07b23..8a4e33b 100644 --- a/src/test/java/com/techeer/cokkiri/domain/user/repository/UserRepositoryTest.java +++ b/src/test/java/com/techeer/cokkiri/domain/user/repository/UserRepositoryTest.java @@ -33,6 +33,6 @@ void existsByUsername() { @Test @DisplayName("username으로 user를 찾는다.") void findByUsername() { - assertEquals(userRepository.findByUsername(user.getUsername()).orElseThrow(),user); + assertEquals(userRepository.findByUsername(user.getUsername()).orElseThrow(), user); } } diff --git a/src/test/java/com/techeer/cokkiri/domain/user/service/UserServiceTest.java b/src/test/java/com/techeer/cokkiri/domain/user/service/UserServiceTest.java index 099c456..9155614 100644 --- a/src/test/java/com/techeer/cokkiri/domain/user/service/UserServiceTest.java +++ b/src/test/java/com/techeer/cokkiri/domain/user/service/UserServiceTest.java @@ -68,14 +68,14 @@ void wrongPassword() { @Test @DisplayName("올바른 username과 비밀번호 입력시 로그인 성공한다.") void loginSuccess() { - //given + // given when(userService.findByUsername(any())).thenReturn(user); when(passwordUtil.isSamePassword(any(), any())).thenReturn(true); - //when + // when boolean isValid = loginService.isValidUser(loginRequest); - //then + // then assertTrue(isValid); } } diff --git a/src/test/java/com/techeer/cokkiri/fixture/UserFixtures.java b/src/test/java/com/techeer/cokkiri/fixture/UserFixtures.java index a41ee1f..cafd396 100644 --- a/src/test/java/com/techeer/cokkiri/fixture/UserFixtures.java +++ b/src/test/java/com/techeer/cokkiri/fixture/UserFixtures.java @@ -1,37 +1,35 @@ package com.techeer.cokkiri.fixture; -import com.techeer.cokkiri.domain.study.dto.StudyDto; import com.techeer.cokkiri.domain.user.dto.UserDto; import com.techeer.cokkiri.domain.user.entity.User; public class UserFixtures { public static final User STUDY_MANAGER_FIXTURE = - User.builder() - .username("javaStudyManager") - .bio("자바를 좋아합니다.") - .nickname("javaMania") - .password("qwer123!") - .build(); + User.builder() + .username("javaStudyManager") + .bio("자바를 좋아합니다.") + .nickname("javaMania") + .password("qwer123!") + .build(); public static final User DEFAULT_USER = - User.builder() - .username("DefaultUser1") - .bio("테스트용 디폴트 유저") - .nickname("default") - .password("Test1234!") - .build(); - + User.builder() + .username("DefaultUser1") + .bio("테스트용 디폴트 유저") + .nickname("default") + .password("Test1234!") + .build(); public static final UserDto.LoginRequest USER_LOGIN_REQUEST = - UserDto.LoginRequest.builder() - .username(DEFAULT_USER.getUsername()) - .password(DEFAULT_USER.getPassword()) - .build(); + UserDto.LoginRequest.builder() + .username(DEFAULT_USER.getUsername()) + .password(DEFAULT_USER.getPassword()) + .build(); public static final UserDto.RegisterRequest USER_REGISTER_REQUEST = - UserDto.RegisterRequest.builder() - .username(DEFAULT_USER.getUsername()) - .password(DEFAULT_USER.getPassword()) - .nickname(DEFAULT_USER.getNickname()) - .build(); + UserDto.RegisterRequest.builder() + .username(DEFAULT_USER.getUsername()) + .password(DEFAULT_USER.getPassword()) + .nickname(DEFAULT_USER.getNickname()) + .build(); } diff --git a/src/test/java/com/techeer/cokkiri/global/util/JsonUtil.java b/src/test/java/com/techeer/cokkiri/global/util/JsonUtil.java index 334c6c1..52cc54a 100644 --- a/src/test/java/com/techeer/cokkiri/global/util/JsonUtil.java +++ b/src/test/java/com/techeer/cokkiri/global/util/JsonUtil.java @@ -4,11 +4,9 @@ import com.fasterxml.jackson.databind.ObjectMapper; public class JsonUtil { - private final ObjectMapper objectMapper = new ObjectMapper(); - - public String toJsonString(Object object) throws JsonProcessingException { - return objectMapper.writeValueAsString(object); - } - + private final ObjectMapper objectMapper = new ObjectMapper(); + public String toJsonString(Object object) throws JsonProcessingException { + return objectMapper.writeValueAsString(object); + } } From 2a44d0e799b89fa462a43553d5bd20a24921e910 Mon Sep 17 00:00:00 2001 From: jhkim Date: Sat, 31 Dec 2022 01:27:52 +0900 Subject: [PATCH 14/17] =?UTF-8?q?fix:=20=EB=8B=A8=EC=9C=84=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=EA=B0=84=20=EC=98=81=ED=96=A5=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/user/repository/UserRepositoryTest.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/test/java/com/techeer/cokkiri/domain/user/repository/UserRepositoryTest.java b/src/test/java/com/techeer/cokkiri/domain/user/repository/UserRepositoryTest.java index aa07b23..1e30571 100644 --- a/src/test/java/com/techeer/cokkiri/domain/user/repository/UserRepositoryTest.java +++ b/src/test/java/com/techeer/cokkiri/domain/user/repository/UserRepositoryTest.java @@ -1,6 +1,7 @@ package com.techeer.cokkiri.domain.user.repository; import static com.techeer.cokkiri.fixture.UserFixtures.DEFAULT_USER; +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -20,19 +21,26 @@ public class UserRepositoryTest { @BeforeEach void saveUser() { - user = DEFAULT_USER; - userRepository.save(user); + } @Test @DisplayName("user의 존재여부를 username으로 확인한다.") void existsByUsername() { + user = DEFAULT_USER; + userRepository.save(user); assertTrue(userRepository.existsByUsername(user.getUsername())); } @Test @DisplayName("username으로 user를 찾는다.") void findByUsername() { - assertEquals(userRepository.findByUsername(user.getUsername()).orElseThrow(),user); + //given + user = DEFAULT_USER; + user = userRepository.save(user); + User savedUser = userRepository.findByUsername(user.getUsername()).orElseThrow(); + assertEquals(user, savedUser); + //then + } } From 4aba5e869e36ee705e71fbabfec179b28b9ef099 Mon Sep 17 00:00:00 2001 From: jhkim Date: Sat, 31 Dec 2022 01:35:41 +0900 Subject: [PATCH 15/17] =?UTF-8?q?fix:=20given/then=EB=AC=B8=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cokkiri/domain/user/repository/UserRepositoryTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/com/techeer/cokkiri/domain/user/repository/UserRepositoryTest.java b/src/test/java/com/techeer/cokkiri/domain/user/repository/UserRepositoryTest.java index 1e30571..62919aa 100644 --- a/src/test/java/com/techeer/cokkiri/domain/user/repository/UserRepositoryTest.java +++ b/src/test/java/com/techeer/cokkiri/domain/user/repository/UserRepositoryTest.java @@ -39,8 +39,8 @@ void findByUsername() { user = DEFAULT_USER; user = userRepository.save(user); User savedUser = userRepository.findByUsername(user.getUsername()).orElseThrow(); - assertEquals(user, savedUser); - //then + //then + assertEquals(user, savedUser); } } From da59dcb78311e8821037cc9f2dd9bf1dbc4d72e1 Mon Sep 17 00:00:00 2001 From: jhkim Date: Sat, 31 Dec 2022 01:39:57 +0900 Subject: [PATCH 16/17] =?UTF-8?q?fix:=20=EB=A9=94=EC=86=8C=EB=93=9C?= =?UTF-8?q?=EB=AA=85=20=EC=95=8C=EB=A7=9E=EA=B2=8C=20=EC=88=98=EC=A0=95=20?= =?UTF-8?q?=EB=B0=8F=20=EB=B6=88=ED=95=84=EC=9A=94=20import=EB=AC=B8=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cokkiri/domain/user/controller/UserController.java | 4 ++-- .../com/techeer/cokkiri/domain/user/service/LoginService.java | 2 +- .../cokkiri/domain/user/Controller/UserControllerTest.java | 2 +- .../cokkiri/domain/user/repository/UserRepositoryTest.java | 1 - .../techeer/cokkiri/domain/user/service/UserServiceTest.java | 4 ++-- 5 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/techeer/cokkiri/domain/user/controller/UserController.java b/src/main/java/com/techeer/cokkiri/domain/user/controller/UserController.java index dc54e6e..bef3d72 100644 --- a/src/main/java/com/techeer/cokkiri/domain/user/controller/UserController.java +++ b/src/main/java/com/techeer/cokkiri/domain/user/controller/UserController.java @@ -51,9 +51,9 @@ public ResponseEntity isDuplicatedUsername(@PathVariable String @PostMapping("/login") public ResponseEntity login( @RequestBody @Valid UserDto.LoginRequest userRequest) { - boolean isValidUser = loginService.isValidUser(userRequest); + boolean isValid = loginService.isValidPassword(userRequest); - if (isValidUser) { + if (isValid) { User user = userService.findByUsername(userRequest.getUsername()); loginService.login(user.getId()); } diff --git a/src/main/java/com/techeer/cokkiri/domain/user/service/LoginService.java b/src/main/java/com/techeer/cokkiri/domain/user/service/LoginService.java index 8fb0f46..cbde530 100644 --- a/src/main/java/com/techeer/cokkiri/domain/user/service/LoginService.java +++ b/src/main/java/com/techeer/cokkiri/domain/user/service/LoginService.java @@ -37,7 +37,7 @@ public boolean isUserLogin() { return getLoginUserId() != null; } - public boolean isValidUser(UserDto.LoginRequest userRequest) { + public boolean isValidPassword(UserDto.LoginRequest userRequest) { User user = userService.findByUsername(userRequest.getUsername()); boolean isValidPassword = passwordUtil.isSamePassword(userRequest.getPassword(), user.getPassword()); diff --git a/src/test/java/com/techeer/cokkiri/domain/user/Controller/UserControllerTest.java b/src/test/java/com/techeer/cokkiri/domain/user/Controller/UserControllerTest.java index 5b47fa6..20e4de3 100644 --- a/src/test/java/com/techeer/cokkiri/domain/user/Controller/UserControllerTest.java +++ b/src/test/java/com/techeer/cokkiri/domain/user/Controller/UserControllerTest.java @@ -57,7 +57,7 @@ void setUp(WebApplicationContext applicationContext) { @DisplayName("로그인에 성공할 경우 ResultResponse(") void loginTest() throws Exception { // given - 회원가입 - when(loginService.isValidUser(any())).thenReturn(true); + when(loginService.isValidPassword(any())).thenReturn(true); when(userService.findByUsername(any())).thenReturn(mockUser); when(mockUser.getId()).thenReturn(1L); diff --git a/src/test/java/com/techeer/cokkiri/domain/user/repository/UserRepositoryTest.java b/src/test/java/com/techeer/cokkiri/domain/user/repository/UserRepositoryTest.java index 62919aa..2e1646c 100644 --- a/src/test/java/com/techeer/cokkiri/domain/user/repository/UserRepositoryTest.java +++ b/src/test/java/com/techeer/cokkiri/domain/user/repository/UserRepositoryTest.java @@ -1,7 +1,6 @@ package com.techeer.cokkiri.domain.user.repository; import static com.techeer.cokkiri.fixture.UserFixtures.DEFAULT_USER; -import static org.assertj.core.api.AssertionsForClassTypes.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; diff --git a/src/test/java/com/techeer/cokkiri/domain/user/service/UserServiceTest.java b/src/test/java/com/techeer/cokkiri/domain/user/service/UserServiceTest.java index 9155614..68def21 100644 --- a/src/test/java/com/techeer/cokkiri/domain/user/service/UserServiceTest.java +++ b/src/test/java/com/techeer/cokkiri/domain/user/service/UserServiceTest.java @@ -61,7 +61,7 @@ void wrongPassword() { assertThrows( UserPasswordWrongException.class, () -> { - loginService.isValidUser(loginRequest); + loginService.isValidPassword(loginRequest); }); } @@ -73,7 +73,7 @@ void loginSuccess() { when(passwordUtil.isSamePassword(any(), any())).thenReturn(true); // when - boolean isValid = loginService.isValidUser(loginRequest); + boolean isValid = loginService.isValidPassword(loginRequest); // then assertTrue(isValid); From 926551cdcb2d0472ad53135a1e7333c92d317493 Mon Sep 17 00:00:00 2001 From: github-actions <> Date: Fri, 30 Dec 2022 16:46:16 +0000 Subject: [PATCH 17/17] style: google-java-format --- .../domain/user/repository/UserRepositoryTest.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/test/java/com/techeer/cokkiri/domain/user/repository/UserRepositoryTest.java b/src/test/java/com/techeer/cokkiri/domain/user/repository/UserRepositoryTest.java index 2e1646c..c85266c 100644 --- a/src/test/java/com/techeer/cokkiri/domain/user/repository/UserRepositoryTest.java +++ b/src/test/java/com/techeer/cokkiri/domain/user/repository/UserRepositoryTest.java @@ -19,9 +19,7 @@ public class UserRepositoryTest { private User user; @BeforeEach - void saveUser() { - - } + void saveUser() {} @Test @DisplayName("user의 존재여부를 username으로 확인한다.") @@ -34,12 +32,12 @@ void existsByUsername() { @Test @DisplayName("username으로 user를 찾는다.") void findByUsername() { - //given + // given user = DEFAULT_USER; user = userRepository.save(user); User savedUser = userRepository.findByUsername(user.getUsername()).orElseThrow(); - //then + // then assertEquals(user, savedUser); } }