From 84c9dded9eedd846e44f324ebce4a81adf2f0f55 Mon Sep 17 00:00:00 2001 From: jsy3831 Date: Mon, 23 Aug 2021 13:16:15 +0900 Subject: [PATCH] #2 0823 --- build.gradle | 3 ++ .../com/sns/untitled/UntitledApplication.java | 2 + .../user/controller/UserController.java | 31 ++++++------ .../{model/User.java => dto/UserDto.java} | 10 ++-- .../sns/untitled/user/mapper/UserMapper.java | 7 ++- .../untitled/user/service/UserService.java | 6 ++- .../user/service/impl/UserServiceImpl.java | 17 ++++--- src/main/resources/application.properties | 5 ++ src/main/resources/mapper/UserMapper.xml | 30 +++++++++-- .../user/controller/UserControllerTest.java | 33 ------------ .../service/impl/UserServiceImplTest.java | 50 +++++++++++++++++++ 11 files changed, 130 insertions(+), 64 deletions(-) rename src/main/java/com/sns/untitled/user/{model/User.java => dto/UserDto.java} (71%) delete mode 100644 src/test/java/com/sns/untitled/user/controller/UserControllerTest.java create mode 100644 src/test/java/com/sns/untitled/user/service/impl/UserServiceImplTest.java diff --git a/build.gradle b/build.gradle index a46dbe5..4c385a7 100644 --- a/build.gradle +++ b/build.gradle @@ -25,6 +25,9 @@ dependencies { implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.0' implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16' implementation 'junit:junit:4.13.1' + implementation("org.springframework.boot:spring-boot-starter-redis") + implementation("org.springframework.session:spring-session-data-redis") + compileOnly 'org.projectlombok:lombok' runtimeOnly 'mysql:mysql-connector-java' annotationProcessor 'org.projectlombok:lombok' diff --git a/src/main/java/com/sns/untitled/UntitledApplication.java b/src/main/java/com/sns/untitled/UntitledApplication.java index 6e138d7..e53f93c 100644 --- a/src/main/java/com/sns/untitled/UntitledApplication.java +++ b/src/main/java/com/sns/untitled/UntitledApplication.java @@ -2,8 +2,10 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession; @SpringBootApplication +//@EnableRedisHttpSession public class UntitledApplication { public static void main(String[] args) { diff --git a/src/main/java/com/sns/untitled/user/controller/UserController.java b/src/main/java/com/sns/untitled/user/controller/UserController.java index 52ff737..f2a9eea 100644 --- a/src/main/java/com/sns/untitled/user/controller/UserController.java +++ b/src/main/java/com/sns/untitled/user/controller/UserController.java @@ -1,29 +1,32 @@ package com.sns.untitled.user.controller; +import com.sns.untitled.user.dto.UserDto; import com.sns.untitled.user.service.UserService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RestController; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpSession; @RestController +@RequestMapping("/user") +@RequiredArgsConstructor public class UserController { private final UserService userService; - @Autowired - public UserController(UserService userService){ - this.userService = userService; + @PostMapping("/login") + public void login(@RequestParam String id, @RequestParam String password, HttpSession httpSession) { + UserDto user = userService.login(id, password); + httpSession.setAttribute("userInfo", user); } - @PostMapping("/hello/{name}") - public String hello(@PathVariable String name){ - return userService.hello(name); + @PostMapping("/logout") + public void logout() { } - @GetMapping("/login") - public String login(){ - return "test"; + @GetMapping("/{id}") + public UserDto getUserInfo(@PathVariable String id) { + UserDto user = userService.getUserInfo(id); + return user; } } diff --git a/src/main/java/com/sns/untitled/user/model/User.java b/src/main/java/com/sns/untitled/user/dto/UserDto.java similarity index 71% rename from src/main/java/com/sns/untitled/user/model/User.java rename to src/main/java/com/sns/untitled/user/dto/UserDto.java index 94e978f..74bba37 100644 --- a/src/main/java/com/sns/untitled/user/model/User.java +++ b/src/main/java/com/sns/untitled/user/dto/UserDto.java @@ -1,13 +1,13 @@ -package com.sns.untitled.user.model; +package com.sns.untitled.user.dto; import lombok.Getter; import lombok.Setter; -import java.util.Date; +import java.time.LocalDateTime; @Getter @Setter -public class User { +public class UserDto { private int userId; @@ -19,10 +19,12 @@ public class User { private String email; - private Date birth; + private LocalDateTime birth; private String profileImageName; + private String profileImagePath; + private String profileMessage; } diff --git a/src/main/java/com/sns/untitled/user/mapper/UserMapper.java b/src/main/java/com/sns/untitled/user/mapper/UserMapper.java index 4fa2c87..e17f63a 100644 --- a/src/main/java/com/sns/untitled/user/mapper/UserMapper.java +++ b/src/main/java/com/sns/untitled/user/mapper/UserMapper.java @@ -1,9 +1,14 @@ package com.sns.untitled.user.mapper; +import com.sns.untitled.user.dto.UserDto; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; @Mapper public interface UserMapper { -// void insertName(String name); + UserDto findUserByIdAndPassword(@Param("id") String id, @Param("password") String password); + + UserDto findUserById(@Param("id") String id); + } diff --git a/src/main/java/com/sns/untitled/user/service/UserService.java b/src/main/java/com/sns/untitled/user/service/UserService.java index 9e5fee7..0d6f8e5 100644 --- a/src/main/java/com/sns/untitled/user/service/UserService.java +++ b/src/main/java/com/sns/untitled/user/service/UserService.java @@ -1,7 +1,11 @@ package com.sns.untitled.user.service; +import com.sns.untitled.user.dto.UserDto; + public interface UserService { - public String hello(String name); + UserDto login(String id, String password); + + UserDto getUserInfo(String id); } diff --git a/src/main/java/com/sns/untitled/user/service/impl/UserServiceImpl.java b/src/main/java/com/sns/untitled/user/service/impl/UserServiceImpl.java index 0fd4e3c..6b0cbe6 100644 --- a/src/main/java/com/sns/untitled/user/service/impl/UserServiceImpl.java +++ b/src/main/java/com/sns/untitled/user/service/impl/UserServiceImpl.java @@ -1,23 +1,26 @@ package com.sns.untitled.user.service.impl; import com.sns.untitled.user.mapper.UserMapper; +import com.sns.untitled.user.dto.UserDto; import com.sns.untitled.user.service.UserService; -import org.springframework.beans.factory.annotation.Autowired; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @Service +@RequiredArgsConstructor public class UserServiceImpl implements UserService { private final UserMapper userMapper; - @Autowired - public UserServiceImpl(UserMapper userMapper){ - this.userMapper = userMapper; + @Override + public UserDto login(String id, String password) { + UserDto userInfo = userMapper.findUserByIdAndPassword(id, password); + return userInfo; } @Override - public String hello(String name) { -// userMapper.insertName(name); - return "Hello " + name + " Success Insert"; + public UserDto getUserInfo(String id) { + UserDto userInfo = userMapper.findUserById(id); + return userInfo; } } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index ea8c1ef..3ffdda7 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -3,3 +3,8 @@ spring.datasource.username=root spring.datasource.password=nzpen030# spring.datasource.driver-class-name=net.sf.log4jdbc.sql.jdbcapi.DriverSpy +#spring.session.store-type=redis +#spring.redis.host=localhost +#spring.redis.password= +#spring.redis.port=6379 + diff --git a/src/main/resources/mapper/UserMapper.xml b/src/main/resources/mapper/UserMapper.xml index 0676fd4..92db849 100644 --- a/src/main/resources/mapper/UserMapper.xml +++ b/src/main/resources/mapper/UserMapper.xml @@ -2,8 +2,30 @@ - - - - + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/test/java/com/sns/untitled/user/controller/UserControllerTest.java b/src/test/java/com/sns/untitled/user/controller/UserControllerTest.java deleted file mode 100644 index 507240e..0000000 --- a/src/test/java/com/sns/untitled/user/controller/UserControllerTest.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.sns.untitled.user.controller; - -import com.sns.untitled.user.service.UserService; -import org.junit.jupiter.api.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.test.context.junit4.SpringRunner; -import org.springframework.test.web.servlet.MockMvc; - -import static org.junit.jupiter.api.Assertions.*; -import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; - -@RunWith(SpringRunner.class) -@WebMvcTest -class UserControllerTest { - - @Autowired - MockMvc mockMvc; - - @MockBean - UserService userService; - - @Test - public void hello() throws Exception { - mockMvc.perform(get("/hello/test")) - .andDo(print()) - .andExpect(status().isOk()); - } -} \ No newline at end of file diff --git a/src/test/java/com/sns/untitled/user/service/impl/UserServiceImplTest.java b/src/test/java/com/sns/untitled/user/service/impl/UserServiceImplTest.java new file mode 100644 index 0000000..a37e3e9 --- /dev/null +++ b/src/test/java/com/sns/untitled/user/service/impl/UserServiceImplTest.java @@ -0,0 +1,50 @@ +package com.sns.untitled.user.service.impl; + +import com.sns.untitled.user.mapper.UserMapper; +import com.sns.untitled.user.dto.UserDto; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.Mockito.*; + +@ExtendWith(MockitoExtension.class) +class UserServiceImplTest { + + @InjectMocks + UserServiceImpl userServiceImpl; + + @Mock + UserMapper userMapper; + + public UserDto userDto() { + UserDto user = new UserDto(); + user.setUserId(1); + user.setId("admin"); + user.setPassword("1234"); + user.setName("관리자"); + user.setEmail("admin@gmail.com"); + user.setProfileImageName("프로필사진1"); + user.setProfileImagePath("이미지경로"); + user.setProfileMessage("상태메세지"); + return user; + } + + @Test + @DisplayName("로그인 성공") + public void successLogin() throws Exception { + //given + UserDto userDto = userDto(); + when(userMapper.findUserByIdAndPassword("admin", "1234")).thenReturn(userDto); + + //when + UserDto result = userServiceImpl.login("admin", "1234"); + + //then + assertEquals(result, userDto); + } +} \ No newline at end of file