From 7f647f9b8af2b169fcccd1720f8ab087707d860c Mon Sep 17 00:00:00 2001 From: Filip Izydorczyk Date: Tue, 19 Jan 2021 12:05:31 +0100 Subject: [PATCH] Added call perform algorythm enpoint --- .../java/com/plannaplan/types/UserRoles.java | 6 +- .../controllers/DeveloperController.java | 39 ++++++++++++ .../plannaplan/security/AuthorityRoles.java | 5 +- .../controllers/DeveloperControllerTest.java | 60 +++++++++++++++++++ 4 files changed, 106 insertions(+), 4 deletions(-) create mode 100755 restservice/src/main/java/com/plannaplan/controllers/DeveloperController.java create mode 100755 restservice/src/test/java/com/plannaplan/controllers/DeveloperControllerTest.java diff --git a/buisnesslogic/src/main/java/com/plannaplan/types/UserRoles.java b/buisnesslogic/src/main/java/com/plannaplan/types/UserRoles.java index 402bc2d..e3a7ff6 100755 --- a/buisnesslogic/src/main/java/com/plannaplan/types/UserRoles.java +++ b/buisnesslogic/src/main/java/com/plannaplan/types/UserRoles.java @@ -1,9 +1,9 @@ package com.plannaplan.types; /** - * UserRoles contains types: STUDENT, DEANERY, ADMIN, TEST_USER + * UserRoles contains types: STUDENT, DEANERY, ADMIN, TEST_USER */ - + public enum UserRoles { - STUDENT, DEANERY, ADMIN, TEST_USER + STUDENT, DEANERY, ADMIN, TEST_USER, DEVELOPER } \ No newline at end of file diff --git a/restservice/src/main/java/com/plannaplan/controllers/DeveloperController.java b/restservice/src/main/java/com/plannaplan/controllers/DeveloperController.java new file mode 100755 index 0000000..cced224 --- /dev/null +++ b/restservice/src/main/java/com/plannaplan/controllers/DeveloperController.java @@ -0,0 +1,39 @@ +package com.plannaplan.controllers; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import io.swagger.annotations.Api; + +import com.plannaplan.App; +import com.plannaplan.services.AssignmentService; + +/** + * Rest controller to enpoint that help deveopler test the app + */ +@RestController +@CrossOrigin +@RequestMapping("/api/" + App.API_VERSION + "/developer") +@Api(tags = { + "DeveloperController" }, value = "DeveloperController", description = "All endpoints to use in development time to help app testing") +public class DeveloperController { + + @Autowired + private AssignmentService assignmentService; + + /** + * @return if accept algoythm was perfomed + */ + @PreAuthorize("hasRole('ROLE_DEVELOPER')") + @PostMapping(path = "/algoythm/accept") + public ResponseEntity performAcceptAlgorythm() { + this.assignmentService.callAcceptAlgorythm(); + return new ResponseEntity<>("Success", HttpStatus.OK); + } +} diff --git a/restservice/src/main/java/com/plannaplan/security/AuthorityRoles.java b/restservice/src/main/java/com/plannaplan/security/AuthorityRoles.java index ead5811..8ea4849 100755 --- a/restservice/src/main/java/com/plannaplan/security/AuthorityRoles.java +++ b/restservice/src/main/java/com/plannaplan/security/AuthorityRoles.java @@ -10,7 +10,8 @@ import org.springframework.security.core.GrantedAuthority; * Users Roles for spring app */ public enum AuthorityRoles implements GrantedAuthority { - STUDENT("ROLE_STUDENT"), DEANERY("ROLE_DEANERY"), ADMIN("ROLE_ADMIN"), TEST_USER("ROLE_TESTUSER"); + STUDENT("ROLE_STUDENT"), DEANERY("ROLE_DEANERY"), ADMIN("ROLE_ADMIN"), TEST_USER("ROLE_TESTUSER"), + DEVELOPER("ROLE_DEVELOPER"); private String role; @@ -39,6 +40,8 @@ public enum AuthorityRoles implements GrantedAuthority { return Optional.of(AuthorityRoles.STUDENT); case TEST_USER: return Optional.of(AuthorityRoles.TEST_USER); + case DEVELOPER: + return Optional.of(AuthorityRoles.DEVELOPER); default: return Optional.empty(); } diff --git a/restservice/src/test/java/com/plannaplan/controllers/DeveloperControllerTest.java b/restservice/src/test/java/com/plannaplan/controllers/DeveloperControllerTest.java new file mode 100755 index 0000000..e47527e --- /dev/null +++ b/restservice/src/test/java/com/plannaplan/controllers/DeveloperControllerTest.java @@ -0,0 +1,60 @@ +package com.plannaplan.controllers; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; +import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.*; + +import com.plannaplan.entities.User; +import com.plannaplan.services.UserService; +import com.plannaplan.types.UserRoles; + +@RunWith(SpringRunner.class) +@SpringBootTest +@ContextConfiguration +public class DeveloperControllerTest extends AbstractControllerTest { + private static final String ACCEPT_ENDPOINT = "/api/v1/developer/algoythm/accept"; + + @Autowired + private UserService userService; + + @Test + public void shouldFailWithWrongAcces() throws Exception { + final String mail = "shouldFailWithWrongAcces@ConfigController.test"; + final User usr = this.userService.save(new User(null, null, mail, UserRoles.TEST_USER)); + + final String token = this.userService.login(usr).getToken(); + + MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).apply(springSecurity()).build(); + mockMvc.perform(post(ACCEPT_ENDPOINT).header("Authorization", "Bearer " + token)) + .andExpect(status().is4xxClientError()); + + } + + @Test + public void shouldOkPerformingAcceptAlgotyrhm() throws Exception { + final String mail = "shouldOkPerformingAcceptAlgotyrhm@ConfigController.test"; + final User usr = this.userService.save(new User(null, null, mail, UserRoles.DEVELOPER)); + + final String token = this.userService.login(usr).getToken(); + + MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).apply(springSecurity()).build(); + mockMvc.perform(post(ACCEPT_ENDPOINT).header("Authorization", "Bearer " + token)).andExpect(status().isOk()); + + } + + @Test + public void shouldFailWithNoToken() throws Exception { + MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).apply(springSecurity()).build(); + mockMvc.perform(post(ACCEPT_ENDPOINT)).andExpect(status().is4xxClientError()); + + } +}