diff --git a/restservice/src/main/java/com/plannaplan/controllers/CommisionController.java b/restservice/src/main/java/com/plannaplan/controllers/CommisionController.java index 3af50da..864b8de 100755 --- a/restservice/src/main/java/com/plannaplan/controllers/CommisionController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/CommisionController.java @@ -34,56 +34,64 @@ import org.springframework.web.bind.annotation.RequestMapping; @RequestMapping("/api/" + App.API_VERSION + "/commisions") public class CommisionController extends TokenBasedController { - @Autowired - private CommisionService commisionService; + @Autowired + private CommisionService commisionService; - @Autowired - private GroupService groupServcicxe; + @Autowired + private GroupService groupServcicxe; - @Autowired - private AssignmentService assignmentService; + @Autowired + private AssignmentService assignmentService; - public CommisionController() { - } + public CommisionController() { + } - @PostMapping(value = { "/add", "/add/{id}" }) - public ResponseEntity addCommision(@RequestBody List groups, - @PathVariable(name = "id", required = false) Long userId) - throws UserNotFoundException, IllegalArgumentException { + @PostMapping(value = { "/add", "/add/{id}" }) + public ResponseEntity addCommision(@RequestBody List groups, + @PathVariable(name = "id", required = false) Long userId) { - final User asker = this.getCurrentUser().orElseThrow(() -> new UserNotFoundException("Invalid token")); + try { - final User user = userId != null - ? userService.getById(userId).orElseThrow(() -> new UserNotFoundException("Given user id not exist")) - : asker; + final User asker = this.getCurrentUser() + .orElseThrow(() -> new UserNotFoundException("Invalid token")); - Assert.isTrue( - (asker.getRole() == UserRoles.DEANERY && user.getRole() == UserRoles.STUDENT - || (asker.getId() == user.getId() && user.getRole() == UserRoles.STUDENT)), - "Incorrect attempt to change plan"); + final User user = userId != null + ? userService.getById(userId).orElseThrow( + () -> new UserNotFoundException("Given user id not exist")) + : asker; - Optional notExistingGroup = this.groupServcicxe.findNotExistingGroup(groups); - Assert.isTrue(!notExistingGroup.isPresent(), - "Group " + notExistingGroup.orElse(Long.MIN_VALUE).toString() + "doesn't exist"); + Assert.isTrue((asker.getRole() == UserRoles.DEANERY && user.getRole() == UserRoles.STUDENT + || (asker.getId() == user.getId() && user.getRole() == UserRoles.STUDENT)), + "Incorrect attempt to change plan"); - final Commision com = new Commision(user); - this.commisionService.save(com); + Optional notExistingGroup = this.groupServcicxe.findNotExistingGroup(groups); + Assert.isTrue(!notExistingGroup.isPresent(), "Group " + + notExistingGroup.orElse(Long.MIN_VALUE).toString() + "doesn't exist"); - groups.stream().forEach((groupId) -> { - Groups group = this.groupServcicxe.getGroupById(groupId).orElseThrow(() -> new NullPointerException()); - Assignment a = new Assignment(group, com); - this.assignmentService.save(a); - }); + final Commision com = new Commision(user); + this.commisionService.save(com); - return new ResponseEntity<>("Succes", HttpStatus.OK); - } + groups.stream().forEach((groupId) -> { + Groups group = this.groupServcicxe.getGroupById(groupId) + .orElseThrow(() -> new NullPointerException()); + Assignment a = new Assignment(group, com); + this.assignmentService.save(a); + }); - @GetMapping("/getAllCommisions") - public ResponseEntity> getAlCommisions() throws UserNotFoundException { - User user = this.getCurrentUser().orElseThrow(() -> new NullPointerException()); - List result = CommisionResponseMappers - .mapToResponse(this.commisionService.getUsersCommisions(user)); - return new ResponseEntity<>(result, HttpStatus.OK); - } + return new ResponseEntity<>("Succes", HttpStatus.OK); + } catch (UserNotFoundException exception) { + return new ResponseEntity<>(exception.getMessage(), HttpStatus.NOT_FOUND); + } catch (IllegalArgumentException exception) { + return new ResponseEntity<>(exception.getMessage(), HttpStatus.BAD_REQUEST); + } + } + + @GetMapping("/getAllCommisions") + public ResponseEntity> getAlCommisions() throws UserNotFoundException { + User user = this.getCurrentUser().orElseThrow(() -> new NullPointerException()); + List result = CommisionResponseMappers + .mapToResponse(this.commisionService.getUsersCommisions(user)); + return new ResponseEntity<>(result, HttpStatus.OK); + } } diff --git a/restservice/src/test/java/com/plannaplan/controllers/CommisionControllerTest.java b/restservice/src/test/java/com/plannaplan/controllers/CommisionControllerTest.java index 7b3cf76..ab32320 100755 --- a/restservice/src/test/java/com/plannaplan/controllers/CommisionControllerTest.java +++ b/restservice/src/test/java/com/plannaplan/controllers/CommisionControllerTest.java @@ -19,7 +19,6 @@ import com.plannaplan.entities.User; import com.plannaplan.services.UserService; import com.plannaplan.types.UserRoles; -import static org.junit.jupiter.api.Assertions.assertTrue; import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.*; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; @@ -36,10 +35,18 @@ public class CommisionControllerTest { private UserService service; private static User user; + private static User otherUser; + private static User asker; + private static User otherAsker; + + private static final String TEST_COMMISIONS_STUDENT_EMAIL = "commisions.student@notexisting.domain"; + private static final String TEST_COMMISIONS_OTHER_STUDENT_EMAIL = "commisions.student2@notexisting.domain"; + private static final String TEST_COMMISIONS_DEANERY_EMAIL = "commisions.deanery@notexisting.domain"; + private static final String TEST_COMMISIONS_OTHER_DEANERY_EMAIL = "commisions.deanery2@notexisting.domain"; private static final String ADD_COMMISION_ENDPOINT = "/api/v1/commisions/add"; private static final String GET_COMMISIONS_ENDPOINT = "/api/v1/commisions/getAllCommisions"; - private static final String TEST_COMMISIONS_EMAIL = "commisions@notexisting.domain"; + private static final MediaType APPLICATION_JSON_UTF8 = new MediaType(MediaType.APPLICATION_JSON.getType(), MediaType.APPLICATION_JSON.getSubtype(), Charset.forName("utf8")); @@ -52,8 +59,8 @@ public class CommisionControllerTest { @Test public void shouldFailedAddingCommisionDueToNoArgs() throws Exception { - this.checkUser(); - final String token = this.service.login(TEST_COMMISIONS_EMAIL); + this.checkUsers(); + final String token = this.service.login(TEST_COMMISIONS_STUDENT_EMAIL); MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).apply(springSecurity()).build(); mockMvc.perform(post(ADD_COMMISION_ENDPOINT).header("Authorization", "Bearer " + token)) @@ -62,8 +69,8 @@ public class CommisionControllerTest { @Test public void shouldReturnOkAddingCommision() throws Exception { - this.checkUser(); - final String token = this.service.login(TEST_COMMISIONS_EMAIL); + this.checkUsers(); + final String token = this.service.login(TEST_COMMISIONS_STUDENT_EMAIL); MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).apply(springSecurity()).build(); mockMvc.perform(post(ADD_COMMISION_ENDPOINT).header("Authorization", "Bearer " + token) @@ -78,8 +85,8 @@ public class CommisionControllerTest { @Test public void shouldReturnOkGettingAllCommisions() throws Exception { - this.checkUser(); - final String token = this.service.login(TEST_COMMISIONS_EMAIL); + this.checkUsers(); + final String token = this.service.login(TEST_COMMISIONS_STUDENT_EMAIL); MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).apply(springSecurity()).build(); mockMvc.perform(get(GET_COMMISIONS_ENDPOINT).header("Authorization", "Bearer " + token)) @@ -88,38 +95,90 @@ public class CommisionControllerTest { @Test public void shouldAddCommisionWithSelfIdPrivided() throws Exception { - assertTrue(false); + this.checkUsers(); + final String token = this.service.login(TEST_COMMISIONS_STUDENT_EMAIL); + + MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).apply(springSecurity()).build(); + mockMvc.perform(post(ADD_COMMISION_ENDPOINT + "/" + CommisionControllerTest.user.getId().toString()) + .header("Authorization", "Bearer " + token).contentType(APPLICATION_JSON_UTF8).content("[]")) + .andExpect(status().isOk()); } @Test public void shouldFailCommisionWithSomeoneIdPrividedAsStudent() throws Exception { - assertTrue(false); + this.checkUsers(); + + final String token = this.service.login(TEST_COMMISIONS_STUDENT_EMAIL); + + MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).apply(springSecurity()).build(); + mockMvc.perform(post(ADD_COMMISION_ENDPOINT + "/" + CommisionControllerTest.otherUser.getId().toString()) + .header("Authorization", "Bearer " + token).contentType(APPLICATION_JSON_UTF8).content("[]")) + .andExpect(status().is4xxClientError()); } @Test public void shouldFailCommisionAsDeanaryWithNoId() throws Exception { - assertTrue(false); + this.checkUsers(); + final String token = this.service.login(TEST_COMMISIONS_DEANERY_EMAIL); + + MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).apply(springSecurity()).build(); + mockMvc.perform(post(ADD_COMMISION_ENDPOINT).header("Authorization", "Bearer " + token) + .contentType(APPLICATION_JSON_UTF8).content("[]")).andExpect(status().is4xxClientError()); } @Test public void shouldFailCommisionWithSelfIdPrividedAsDeanary() throws Exception { - assertTrue(false); + this.checkUsers(); + final String token = this.service.login(TEST_COMMISIONS_DEANERY_EMAIL); + + MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).apply(springSecurity()).build(); + mockMvc.perform(post(ADD_COMMISION_ENDPOINT + "/" + CommisionControllerTest.asker.getId().toString()) + .header("Authorization", "Bearer " + token).contentType(APPLICATION_JSON_UTF8).content("[]")) + .andExpect(status().is4xxClientError()); } @Test public void shouldAddCommisionWithSomeoneIdPrividedAsDeanary() throws Exception { - assertTrue(false); + this.checkUsers(); + + final String token = this.service.login(TEST_COMMISIONS_DEANERY_EMAIL); + + MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).apply(springSecurity()).build(); + mockMvc.perform(post(ADD_COMMISION_ENDPOINT + "/" + CommisionControllerTest.otherUser.getId().toString()) + .header("Authorization", "Bearer " + token).contentType(APPLICATION_JSON_UTF8).content("[]")) + .andExpect(status().isOk()); } @Test public void shouldFailCommisionWithOtherDeanaryIdPrividedAsDeanary() throws Exception { - assertTrue(false); + this.checkUsers(); + + final String token = this.service.login(TEST_COMMISIONS_DEANERY_EMAIL); + + MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).apply(springSecurity()).build(); + mockMvc.perform(post(ADD_COMMISION_ENDPOINT + "/" + CommisionControllerTest.otherAsker.getId().toString()) + .header("Authorization", "Bearer " + token).contentType(APPLICATION_JSON_UTF8).content("[]")) + .andExpect(status().is4xxClientError()); } - private void checkUser() { + private void checkUsers() { if (CommisionControllerTest.user == null) { - CommisionControllerTest.user = new User(null, null, TEST_COMMISIONS_EMAIL, UserRoles.TEST_USER); + CommisionControllerTest.user = new User(null, null, TEST_COMMISIONS_STUDENT_EMAIL, UserRoles.STUDENT); this.service.save(user); } + if (CommisionControllerTest.otherUser == null) { + CommisionControllerTest.otherUser = new User(null, null, TEST_COMMISIONS_OTHER_STUDENT_EMAIL, + UserRoles.STUDENT); + this.service.save(otherUser); + } + if (CommisionControllerTest.asker == null) { + CommisionControllerTest.asker = new User(null, null, TEST_COMMISIONS_DEANERY_EMAIL, UserRoles.DEANERY); + this.service.save(asker); + } + if (CommisionControllerTest.otherAsker == null) { + CommisionControllerTest.otherAsker = new User(null, null, TEST_COMMISIONS_OTHER_DEANERY_EMAIL, + UserRoles.DEANERY); + this.service.save(otherAsker); + } } }