diff --git a/build.gradle b/build.gradle index b3b525f0..a3dd9d8b 100644 --- a/build.gradle +++ b/build.gradle @@ -24,6 +24,9 @@ dependencies { // mysql implementation group: 'com.mysql', name: 'mysql-connector-j', version: '8.0.32' + + // jdbc + implementation 'org.springframework.boot:spring-boot-starter-jdbc' } tasks.named('test') { diff --git a/src/main/java/bejavawebserver/SpringConfig.java b/src/main/java/bejavawebserver/SpringConfig.java new file mode 100644 index 00000000..f397209d --- /dev/null +++ b/src/main/java/bejavawebserver/SpringConfig.java @@ -0,0 +1,24 @@ +//package bejavawebserver; +// +//import bejavawebserver.repository.JdbcRepository; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +// +//import javax.sql.DataSource; +// +// +//@Configuration +//public class SpringConfig { +// private DataSource dataSource; +// +// @Autowired +// public SpringConfig(DataSource dataSource){ +// this.dataSource = dataSource; +// } +// +// @Bean +// public JdbcRepository jdbcRepository(){ +// return new JdbcRepository(dataSource); +// } +//} diff --git a/src/main/java/bejavawebserver/WebserverApplication.java b/src/main/java/bejavawebserver/WebserverApplication.java index e15e927b..794dacbd 100644 --- a/src/main/java/bejavawebserver/WebserverApplication.java +++ b/src/main/java/bejavawebserver/WebserverApplication.java @@ -6,8 +6,8 @@ @SpringBootApplication public class WebserverApplication { - public static void main(String[] args) { - SpringApplication.run(WebserverApplication.class, args); - } + public static void main(String[] args) { + SpringApplication.run(WebserverApplication.class, args); + } } diff --git a/src/main/java/bejavawebserver/controller/HomeController.java b/src/main/java/bejavawebserver/controller/HomeController.java index 285db67f..0b6d6ce3 100644 --- a/src/main/java/bejavawebserver/controller/HomeController.java +++ b/src/main/java/bejavawebserver/controller/HomeController.java @@ -2,12 +2,11 @@ import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.SessionAttribute; @Controller public class HomeController { @GetMapping("/") - public String home(){ - return "index"; + public String home() { + return "redirect:/index.html"; } } diff --git a/src/main/java/bejavawebserver/controller/HtmlController.java b/src/main/java/bejavawebserver/controller/HtmlController.java index 471cc3d3..11a9a6ce 100644 --- a/src/main/java/bejavawebserver/controller/HtmlController.java +++ b/src/main/java/bejavawebserver/controller/HtmlController.java @@ -1,23 +1,26 @@ package bejavawebserver.controller; import bejavawebserver.model.User; -import bejavawebserver.repository.memoryRepository; import bejavawebserver.service.HtmlService; import bejavawebserver.service.ListService; import bejavawebserver.service.LoginService; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import bejavawebserver.service.QnaService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; @Controller public class HtmlController { - //@GetMapping("/index.html") + @Autowired + HtmlService htmlService; + @Autowired + ListService listService; + @Autowired + QnaService qnaService; @GetMapping(value = { "/index.html", @@ -27,25 +30,31 @@ public class HtmlController { "/user/login.html", "/user/login_failed.html", "/user/profile.html"}) - public String indexHtml(HttpServletRequest httpServletRequest, Model model){ + public String indexHtml(HttpServletRequest httpServletRequest, Model model) { HttpSession session = httpServletRequest.getSession(false); String uri = httpServletRequest.getRequestURI(); + if (uri.equals("/index.html")) qnaService.makeQnaList(model); + // 로그인 상태인 경우 - if(LoginService.isLogin(session)) { - return HtmlService.makeLoginView(model, uri, (User)session.getAttribute("user")); + if (LoginService.isLogin(session)) { + return htmlService.makeLoginView(model, uri, (User) session.getAttribute(session.getId())); } // 로그인 상태가 아닌 경우 - return HtmlService.makeNotLoginView(model, uri); + if (uri.equals("/qna/form.html")) return "redirect:/user/login.html"; + return htmlService.makeNotLoginView(model, uri); } @GetMapping("/user/list.html") - public String listHtml(HttpServletRequest httpServletRequest, Model model){ + public String listHtml(HttpServletRequest httpServletRequest, Model model) { HttpSession session = httpServletRequest.getSession(false); String uri = httpServletRequest.getRequestURI(); // 로그인 상태인 경우 - if(LoginService.isLogin(session)) return ListService.makeUserList(model, uri, (User)session.getAttribute("user")); + if (LoginService.isLogin(session)) { + listService.makeUserList(model); + return htmlService.makeLoginView(model, uri, (User) session.getAttribute("user")); + } // 로그인 상태가 아닌 경우 return "redirect:/user/login.html"; diff --git a/src/main/java/bejavawebserver/controller/QnaController.java b/src/main/java/bejavawebserver/controller/QnaController.java new file mode 100644 index 00000000..7a7af659 --- /dev/null +++ b/src/main/java/bejavawebserver/controller/QnaController.java @@ -0,0 +1,25 @@ +package bejavawebserver.controller; + +import bejavawebserver.model.Qna; +import bejavawebserver.model.QnaForm; +import bejavawebserver.service.QnaService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PostMapping; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@Controller +public class QnaController { + @Autowired + QnaService qnaService; + + @PostMapping("/qna/form") + public String writeQna(QnaForm qnaForm) { + String time = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")); + qnaService.addQna(new Qna(qnaForm, time)); + return "redirect:/index.html"; + } + +} diff --git a/src/main/java/bejavawebserver/controller/UserController.java b/src/main/java/bejavawebserver/controller/UserController.java index fc2cfb1c..a0beb714 100644 --- a/src/main/java/bejavawebserver/controller/UserController.java +++ b/src/main/java/bejavawebserver/controller/UserController.java @@ -3,30 +3,52 @@ import bejavawebserver.model.LoginForm; import bejavawebserver.model.User; import bejavawebserver.service.LoginService; +import bejavawebserver.service.LogoutService; import bejavawebserver.service.SignUpService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; +import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; @Controller public class UserController { + private static final Logger logger = LoggerFactory.getLogger(UserController.class); + @Autowired + SignUpService signUpService; + @Autowired + LoginService loginService; + @Autowired + LogoutService logoutService; + @PostMapping("/user/create") - public String signUp(User user){ - try{ - SignUpService.addDatabase(user); - }catch (RuntimeException r){ + public String signUp(User user) { + try { + signUpService.addDatabase(user); + } catch (RuntimeException r) { + logger.debug(r.getMessage()); return "redirect:/user/form.html"; } return "redirect:/"; } @PostMapping("/user/login") - public String login(LoginForm loginForm, HttpSession session){ - if(LoginService.isLoginSuccess(loginForm, session)){ + public String login(LoginForm loginForm, HttpSession session) { + if (loginService.isLoginSuccess(loginForm, session)) { return "redirect:/index.html"; } return "redirect:/user/login_failed.html"; } + @GetMapping("/user/logout") + public String logout(HttpServletRequest httpServletRequest) { + HttpSession session = httpServletRequest.getSession(); + logoutService.removeSession(session); + return "redirect:/"; + } + } diff --git a/src/main/java/bejavawebserver/model/Qna.java b/src/main/java/bejavawebserver/model/Qna.java new file mode 100644 index 00000000..2ee03f3f --- /dev/null +++ b/src/main/java/bejavawebserver/model/Qna.java @@ -0,0 +1,22 @@ +package bejavawebserver.model; + +import lombok.Data; + +@Data +public class Qna { + private String writer; + private String contents; + private String time; + + public Qna(QnaForm qnaForm, String time) { + this.writer = qnaForm.getWriter(); + this.contents = qnaForm.getContents(); + this.time = time; + } + + public Qna(String writer, String contents, String time) { + this.writer = writer; + this.contents = contents; + this.time = time; + } +} diff --git a/src/main/java/bejavawebserver/model/QnaForm.java b/src/main/java/bejavawebserver/model/QnaForm.java new file mode 100644 index 00000000..f3aac0a5 --- /dev/null +++ b/src/main/java/bejavawebserver/model/QnaForm.java @@ -0,0 +1,17 @@ +package bejavawebserver.model; + +import lombok.Data; +import lombok.NonNull; + +@Data +public class QnaForm { + @NonNull + private String writer; + @NonNull + private String contents; + + public QnaForm(@NonNull String writer, @NonNull String contents) { + this.writer = writer; + this.contents = contents; + } +} diff --git a/src/main/java/bejavawebserver/repository/JdbcRepository.java b/src/main/java/bejavawebserver/repository/JdbcRepository.java new file mode 100644 index 00000000..ea850e27 --- /dev/null +++ b/src/main/java/bejavawebserver/repository/JdbcRepository.java @@ -0,0 +1,191 @@ +package bejavawebserver.repository; + +import bejavawebserver.model.Qna; +import bejavawebserver.model.User; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.jdbc.datasource.DataSourceUtils; +import org.springframework.stereotype.Repository; + +import javax.sql.DataSource; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +@Repository +public class JdbcRepository { + private static final Logger logger = LoggerFactory.getLogger(JdbcRepository.class); + private final DataSource dataSource; + + public JdbcRepository(DataSource dataSource) { + this.dataSource = dataSource; + } + + public boolean checkDuplicate(User user) { + return findUserById(user.getUserId()) != null; + } + + public void addUser(User user) { + String sql = "insert into User values(?, ?, ?, ?)"; + Connection conn = null; + PreparedStatement pstmt = null; + ResultSet rs = null; + + try { + conn = getConnection(); + pstmt = conn.prepareStatement(sql); + pstmt.setString(1, user.getUserId()); + pstmt.setString(2, user.getPassword()); + pstmt.setString(3, user.getName()); + pstmt.setString(4, user.getEmail()); + pstmt.executeUpdate(); + + } catch (Exception e) { + throw new IllegalStateException(e); + } finally { + close(conn, pstmt, rs); + } + } + + public User findUserById(String userId) { + String sql = "select * from User where user_id = ?"; + Connection conn = null; + PreparedStatement pstmt = null; + ResultSet rs = null; + User findUser = null; + try { + conn = getConnection(); + pstmt = conn.prepareStatement(sql); + pstmt.setString(1, userId); + + rs = pstmt.executeQuery(); + while (rs.next()) { + findUser = new User( + rs.getString("user_id"), + rs.getString("password"), + rs.getString("name"), + rs.getString("email") + ); + } + return findUser; + + } catch (Exception e) { + logger.debug("error : {}", e.getMessage()); + return null; + } finally { + close(conn, pstmt, rs); + } + } + + public List findUserAll() { + String sql = "select * from User"; + Connection conn = null; + PreparedStatement pstmt = null; + ResultSet rs = null; + + try { + conn = getConnection(); + pstmt = conn.prepareStatement(sql); + + rs = pstmt.executeQuery(); + + List userList = new ArrayList<>(); + while (rs.next()) { + User user = new User( + rs.getString("user_id"), + rs.getString("password"), + rs.getString("name"), + rs.getString("email") + ); + userList.add(user); + } + return userList; + + } catch (Exception e) { + logger.debug("error : {}", e.getMessage()); + + return null; + } finally { + close(conn, pstmt, rs); + } + } + + public List findQnaAll() { + String sql = "select * from qna order by time desc"; + Connection conn = null; + PreparedStatement pstmt = null; + ResultSet rs = null; + + try { + conn = getConnection(); + pstmt = conn.prepareStatement(sql); + + rs = pstmt.executeQuery(); + + List qnaList = new ArrayList<>(); + while (rs.next()) { + Qna qna = new Qna( + rs.getString("writer"), + rs.getString("contents"), + rs.getString("time") + ); + qnaList.add(qna); + } + return qnaList; + + } catch (Exception e) { + logger.debug("error : {}", e.getMessage()); + + return null; + } finally { + close(conn, pstmt, rs); + } + } + + public void addQna(Qna qna) { + String sql = "insert into qna values(?, ?, ?)"; + Connection conn = null; + PreparedStatement pstmt = null; + ResultSet rs = null; + + try { + conn = getConnection(); + pstmt = conn.prepareStatement(sql); + pstmt.setString(1, qna.getWriter()); + pstmt.setString(2, qna.getContents()); + pstmt.setString(3, qna.getTime()); + pstmt.executeUpdate(); + + } catch (Exception e) { + throw new IllegalStateException(e); + } finally { + close(conn, pstmt, rs); + } + } + + private Connection getConnection() { + return DataSourceUtils.getConnection(dataSource); + } + + private void close(Connection conn, PreparedStatement pstmt, ResultSet rs) { + // 역순으로 닫아주어야 한다 + try { + if (pstmt != null) { + pstmt.close(); + } + if (conn != null) { + conn.close(); + } + if (rs != null) { + rs.close(); + } + } catch (SQLException e) { + e.printStackTrace(); + } + } + + +} diff --git a/src/main/java/bejavawebserver/repository/memoryRepository.java b/src/main/java/bejavawebserver/repository/MemoryRepository.java similarity index 93% rename from src/main/java/bejavawebserver/repository/memoryRepository.java rename to src/main/java/bejavawebserver/repository/MemoryRepository.java index 565cfa78..c3884b9d 100644 --- a/src/main/java/bejavawebserver/repository/memoryRepository.java +++ b/src/main/java/bejavawebserver/repository/MemoryRepository.java @@ -8,8 +8,8 @@ import java.util.HashMap; import java.util.Map; -public class memoryRepository { - private static final Logger logger = LoggerFactory.getLogger(memoryRepository.class); +public class MemoryRepository { + private static final Logger logger = LoggerFactory.getLogger(MemoryRepository.class); private static final Map users = new HashMap<>(); public static void addUser(User user) { diff --git a/src/main/java/bejavawebserver/service/HtmlService.java b/src/main/java/bejavawebserver/service/HtmlService.java index 69c94d3b..3577723b 100644 --- a/src/main/java/bejavawebserver/service/HtmlService.java +++ b/src/main/java/bejavawebserver/service/HtmlService.java @@ -2,24 +2,22 @@ import bejavawebserver.controller.HtmlController; import bejavawebserver.model.User; -import org.springframework.stereotype.Service; -import org.springframework.ui.Model; import org.slf4j.Logger; import org.slf4j.LoggerFactory; - -import javax.servlet.http.HttpSession; +import org.springframework.stereotype.Service; +import org.springframework.ui.Model; @Service public class HtmlService { private static final Logger logger = LoggerFactory.getLogger(HtmlController.class); - public static String makeNotLoginView(Model model, String uri){ + + public String makeNotLoginView(Model model, String uri) { logger.debug("현재 로그인 상태 아님"); model.addAttribute("isLogin", false); return uri; } - - public static String makeLoginView(Model model, String uri, User loginUser) { + public String makeLoginView(Model model, String uri, User loginUser) { logger.debug("현재 로그인 상태임"); model.addAttribute("userName", loginUser.getName()); model.addAttribute("isLogin", true); diff --git a/src/main/java/bejavawebserver/service/ListService.java b/src/main/java/bejavawebserver/service/ListService.java index eed17d5a..e9f4ce63 100644 --- a/src/main/java/bejavawebserver/service/ListService.java +++ b/src/main/java/bejavawebserver/service/ListService.java @@ -1,20 +1,20 @@ package bejavawebserver.service; import bejavawebserver.model.User; -import bejavawebserver.repository.memoryRepository; +import bejavawebserver.repository.JdbcRepository; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.ui.Model; -import javax.servlet.http.HttpSession; -import java.util.ArrayList; -import java.util.Collection; import java.util.List; @Service public class ListService { - public static String makeUserList(Model model, String uri, User loginUser){ - List userList = new ArrayList<>(memoryRepository.findAll()); + @Autowired + JdbcRepository jdbcRepository; + + public void makeUserList(Model model) { + List userList = jdbcRepository.findUserAll(); model.addAttribute("userList", userList); - return HtmlService.makeLoginView(model, uri, loginUser); } } diff --git a/src/main/java/bejavawebserver/service/LoginService.java b/src/main/java/bejavawebserver/service/LoginService.java index 2e7a9b69..6a584994 100644 --- a/src/main/java/bejavawebserver/service/LoginService.java +++ b/src/main/java/bejavawebserver/service/LoginService.java @@ -2,20 +2,28 @@ import bejavawebserver.model.LoginForm; import bejavawebserver.model.User; -import bejavawebserver.repository.memoryRepository; +import bejavawebserver.repository.JdbcRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; import javax.servlet.http.HttpSession; import java.util.Objects; +@Service public class LoginService { - public static boolean isLoginSuccess(LoginForm loginForm, HttpSession session) { - User user = memoryRepository.findUserById(loginForm.getUserId()); - session.setAttribute("user", user); - return Objects.equals(user.getPassword(), loginForm.getPassword()); - } + @Autowired + JdbcRepository jdbcRepository; public static boolean isLogin(HttpSession session) { - return session != null; + if (session == null) return false; + return session.getAttribute(session.getId()) != null; + } + + public boolean isLoginSuccess(LoginForm loginForm, HttpSession session) { + User user = jdbcRepository.findUserById(loginForm.getUserId()); + boolean isSuccess = Objects.equals(user.getPassword(), loginForm.getPassword()); + if (isSuccess) session.setAttribute(session.getId(), user); + return isSuccess; } diff --git a/src/main/java/bejavawebserver/service/LogoutService.java b/src/main/java/bejavawebserver/service/LogoutService.java new file mode 100644 index 00000000..eefb9508 --- /dev/null +++ b/src/main/java/bejavawebserver/service/LogoutService.java @@ -0,0 +1,12 @@ +package bejavawebserver.service; + +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpSession; + +@Service +public class LogoutService { + public void removeSession(HttpSession session) { + session.removeAttribute(session.getId()); + } +} diff --git a/src/main/java/bejavawebserver/service/QnaService.java b/src/main/java/bejavawebserver/service/QnaService.java new file mode 100644 index 00000000..c07f1d3c --- /dev/null +++ b/src/main/java/bejavawebserver/service/QnaService.java @@ -0,0 +1,24 @@ +package bejavawebserver.service; + +import bejavawebserver.model.Qna; +import bejavawebserver.repository.JdbcRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.ui.Model; + +import java.util.List; + +@Service +public class QnaService { + @Autowired + JdbcRepository jdbcRepository; + + public void addQna(Qna qna) { + jdbcRepository.addQna(qna); + } + + public void makeQnaList(Model model) { + List qnaList = jdbcRepository.findQnaAll(); + model.addAttribute("qnaList", qnaList); + } +} diff --git a/src/main/java/bejavawebserver/service/SignUpService.java b/src/main/java/bejavawebserver/service/SignUpService.java index fa60818c..ecee3511 100644 --- a/src/main/java/bejavawebserver/service/SignUpService.java +++ b/src/main/java/bejavawebserver/service/SignUpService.java @@ -1,13 +1,17 @@ package bejavawebserver.service; -import bejavawebserver.repository.memoryRepository; import bejavawebserver.model.User; +import bejavawebserver.repository.JdbcRepository; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class SignUpService { - public static void addDatabase(User user) { - if(memoryRepository.checkDuplicate(user)) throw new RuntimeException("중복된 사용자가 있습니다."); - memoryRepository.addUser(user); + @Autowired + JdbcRepository jdbcRepository; + + public void addDatabase(User user) { + if (jdbcRepository.checkDuplicate(user)) throw new RuntimeException("중복된 사용자가 있습니다."); + jdbcRepository.addUser(user); } } diff --git a/src/main/resources/logback.xml b/src/main/resources/logback-spring.xml similarity index 100% rename from src/main/resources/logback.xml rename to src/main/resources/logback-spring.xml diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html index 1615d17c..69c149d4 100644 --- a/src/main/resources/templates/index.html +++ b/src/main/resources/templates/index.html @@ -77,7 +77,7 @@
  • 로그인
  • 회원가입
  • --> -
  • 로그아웃
  • +
  • 로그아웃
  • 개인정보수정
  • @@ -88,38 +88,21 @@
    @@ -82,19 +82,23 @@
    -
    +
    + +
    +
    diff --git a/src/main/resources/templates/qna/show.html b/src/main/resources/templates/qna/show.html index a045d94d..2c7a5329 100644 --- a/src/main/resources/templates/qna/show.html +++ b/src/main/resources/templates/qna/show.html @@ -72,7 +72,7 @@
  • 로그인
  • 회원가입
  • -
  • 로그아웃
  • +
  • 로그아웃
  • 개인정보수정
  • diff --git a/src/main/resources/templates/user/form.html b/src/main/resources/templates/user/form.html index bf3b0c97..0244618d 100644 --- a/src/main/resources/templates/user/form.html +++ b/src/main/resources/templates/user/form.html @@ -71,7 +71,7 @@
  • 로그인
  • 회원가입
  • -
  • 로그아웃
  • +
  • 로그아웃
  • 개인정보수정
  • diff --git a/src/main/resources/templates/user/list.html b/src/main/resources/templates/user/list.html index bfd689bb..e6a0536a 100644 --- a/src/main/resources/templates/user/list.html +++ b/src/main/resources/templates/user/list.html @@ -72,7 +72,7 @@
  • 로그인
  • 회원가입
  • -
  • 로그아웃
  • +
  • 로그아웃
  • 개인정보수정
  • @@ -98,7 +98,7 @@ - 수정 + 수정 diff --git a/src/main/resources/templates/user/login.html b/src/main/resources/templates/user/login.html index 98b95047..5cb8a852 100644 --- a/src/main/resources/templates/user/login.html +++ b/src/main/resources/templates/user/login.html @@ -72,7 +72,7 @@
  • 로그인
  • 회원가입
  • -
  • 로그아웃
  • +
  • 로그아웃
  • 개인정보수정
  • diff --git a/src/main/resources/templates/user/login_failed.html b/src/main/resources/templates/user/login_failed.html index 488abb41..ea79c6e2 100644 --- a/src/main/resources/templates/user/login_failed.html +++ b/src/main/resources/templates/user/login_failed.html @@ -72,7 +72,7 @@
  • 로그인
  • 회원가입
  • -
  • 로그아웃
  • +
  • 로그아웃
  • 개인정보수정
  • diff --git a/src/main/resources/templates/user/profile.html b/src/main/resources/templates/user/profile.html index ef024bd6..ffa84b2e 100644 --- a/src/main/resources/templates/user/profile.html +++ b/src/main/resources/templates/user/profile.html @@ -72,7 +72,7 @@
  • 로그인
  • 회원가입
  • -
  • 로그아웃
  • +
  • 로그아웃
  • 개인정보수정
  • diff --git a/src/test/java/bejavawebserver/repository/JdbcRepositoryTest.java b/src/test/java/bejavawebserver/repository/JdbcRepositoryTest.java new file mode 100644 index 00000000..ffed4a42 --- /dev/null +++ b/src/test/java/bejavawebserver/repository/JdbcRepositoryTest.java @@ -0,0 +1,28 @@ +package bejavawebserver.repository; + +import bejavawebserver.model.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.context.SpringBootTest; + +import javax.sql.DataSource; +import java.sql.SQLException; + +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; +import static org.junit.jupiter.api.Assertions.*; + +@SpringBootTest +class JdbcRepositoryTest { + @Autowired JdbcRepository jdbcRepository; + @Test + @DisplayName("데이터베이스에 유저 추가 테스트") + void addUser() throws SQLException { + // given + User user = new User("testid", "testpassword", "주형", "test@gmail.com"); + // when + jdbcRepository.addUser(user); + // then + assertThat(jdbcRepository.findUserById(user.getUserId())).usingRecursiveComparison().isEqualTo(user); + } +} \ No newline at end of file