Skip to content
Snippets Groups Projects
Commit 35bbc134 authored by abdu's avatar abdu
Browse files

move authentication check to userservice, add test for usercontroller, add...

move authentication check to userservice, add test for usercontroller, add login method to userservice
parent 994277cf
No related branches found
No related tags found
No related merge requests found
...@@ -30,10 +30,9 @@ public class UserController { ...@@ -30,10 +30,9 @@ public class UserController {
@PostMapping("/login") @PostMapping("/login")
public ResponseEntity<String> login(HttpSession session, @RequestBody UserDTO user) { public ResponseEntity<String> login(HttpSession session, @RequestBody UserDTO user) {
if(customAuthenticator.authenticate(user)){ boolean loginSuccessful = userService.login(session, user);
session.setAttribute("currentUser", user); if(loginSuccessful){
System.out.println(session.getId()); return new ResponseEntity<>("login successful", HttpStatus.OK);
return ResponseEntity.ok("login successful");
} }
return new ResponseEntity<>("login failed", HttpStatus.UNAUTHORIZED); return new ResponseEntity<>("login failed", HttpStatus.UNAUTHORIZED);
......
...@@ -4,6 +4,8 @@ import com.cloudcomputing.todo.dto.UserDTO; ...@@ -4,6 +4,8 @@ import com.cloudcomputing.todo.dto.UserDTO;
import com.cloudcomputing.todo.entity.User; import com.cloudcomputing.todo.entity.User;
import com.cloudcomputing.todo.mapper.UserMapper; import com.cloudcomputing.todo.mapper.UserMapper;
import com.cloudcomputing.todo.repository.UserRepository; import com.cloudcomputing.todo.repository.UserRepository;
import com.cloudcomputing.todo.util.CustomAuthenticator;
import jakarta.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -12,9 +14,13 @@ public class UserService { ...@@ -12,9 +14,13 @@ public class UserService {
@Autowired @Autowired
private UserMapper userMapper; private UserMapper userMapper;
@Autowired @Autowired
private UserRepository userRepository; private UserRepository userRepository;
@Autowired
private CustomAuthenticator customAuthenticator;
public UserDTO createUser(UserDTO userDTO) { public UserDTO createUser(UserDTO userDTO) {
User newUser; User newUser;
...@@ -24,6 +30,16 @@ public class UserService { ...@@ -24,6 +30,16 @@ public class UserService {
newUser = userMapper.dtoToEntity(userDTO); newUser = userMapper.dtoToEntity(userDTO);
} }
return userMapper.entityToDto(userRepository.save(newUser)); User createdUser = userRepository.save(newUser);
return userMapper.entityToDto(createdUser);
}
public boolean login(HttpSession session, UserDTO userDTO) {
if(customAuthenticator.authenticate(userDTO)){
session.setAttribute("currentUser", userDTO);
return true;
}
return false;
} }
} }
package com.cloudcomputing.todo.service;
import com.cloudcomputing.todo.dto.UserDTO;
import com.cloudcomputing.todo.mapper.UserMapper;
import com.cloudcomputing.todo.repository.UserRepository;
import com.fasterxml.jackson.databind.ObjectMapper;
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.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.mock.web.MockHttpSession;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@SpringBootTest
@AutoConfigureMockMvc
public class UserControllerTest {
@Autowired
private MockMvc mockMvc;
@Autowired
private ObjectMapper objectMapper;
@Autowired
private UserRepository userRepository;
@Autowired
private UserMapper userMapper;
@Autowired
private UserService userService;
@Test
public void testCreateUser() throws Exception {
UserDTO userToCreate = new UserDTO();
userToCreate.setUserName("abdu");
userToCreate.setPassword("abdus_secret_password");
String jsonValue = objectMapper.writeValueAsString(userToCreate);
MvcResult result = mockMvc.perform(MockMvcRequestBuilders
.post("/user/signup")
.contentType(MediaType.APPLICATION_JSON)
.content(jsonValue))
.andExpect(status().isCreated())
.andReturn();
UserDTO resultUser = objectMapper.readValue(result.getResponse().getContentAsString(), UserDTO.class);
assertEquals(userToCreate.getUserName(), resultUser.getUserName());
}
@Test
public void testLogin() throws Exception {
MockHttpSession session = new MockHttpSession();
UserDTO userToLogin = new UserDTO();
userToLogin.setUserName("abdu");
userToLogin.setPassword("abdus_secret_password");
String userJson = objectMapper.writeValueAsString(userToLogin);
MvcResult result = mockMvc.perform(MockMvcRequestBuilders
.post("/user/login")
.session(session)
.contentType(MediaType.APPLICATION_JSON)
.content(userJson))
.andExpect(status().isOk())
.andReturn();
String response = result.getResponse().getContentAsString();
assertEquals("login successful", response);
}
}
package com.cloudcomputing.todo.service; package com.cloudcomputing.todo.service;
import com.cloudcomputing.todo.dto.UserDTO; import com.cloudcomputing.todo.dto.UserDTO;
import com.cloudcomputing.todo.entity.User;
import com.cloudcomputing.todo.repository.UserRepository;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
import java.util.List; import static org.junit.jupiter.api.Assertions.*;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
@SpringBootTest @SpringBootTest
public class UserServiceTest { public class UserServiceTest {
@Autowired @Autowired
private UserService userService; private UserService userService;
@Autowired
private UserRepository userRepository;
@BeforeEach
public void setup(){
User testUser_1 = new User();
testUser_1.setUserName("testUser_1");
testUser_1.setPasswordHash("");
User testUser_2 = new User();
testUser_2.setUserName("testUser_2");
testUser_2.setPasswordHash("");
User testUser_3 = new User();
testUser_3.setUserName("testUser_3");
testUser_3.setPasswordHash("");
User testUser_4 = new User();
testUser_4.setUserName("testUser_4");
testUser_4.setPasswordHash("");
userRepository.saveAll(List.of(testUser_1, testUser_2, testUser_3, testUser_4));
}
@AfterEach
public void tearDown(){
userRepository.deleteAll();
}
@Test @Test
public void testCreateUser(){ public void testCreateUser(){
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment