Added required parameters to config
This commit is contained in:
		| @@ -1,6 +1,6 @@ | ||||
| package com.plannaplan.models; | ||||
|  | ||||
| import java.util.Date; | ||||
| import java.sql.Date; | ||||
|  | ||||
| public class TourData { | ||||
|  | ||||
| @@ -8,7 +8,7 @@ public class TourData { | ||||
|     private Date end; | ||||
|  | ||||
|     /** | ||||
|      * construcotr | ||||
|      * construcotr for java.sql.Date | ||||
|      *  | ||||
|      * @param start Date when tour start | ||||
|      * @param end   Date when tour end | ||||
| @@ -18,6 +18,17 @@ public class TourData { | ||||
|         this.end = end; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * constructor construcotr for java.util.Date | ||||
|      *  | ||||
|      * @param start Date when tour start | ||||
|      * @param end   Date when tour end | ||||
|      */ | ||||
|     public TourData(java.util.Date start, java.util.Date end) { | ||||
|         this.start = new Date(start.getTime()); | ||||
|         this.end = new Date(end.getTime()); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * tour end getter | ||||
|      *  | ||||
|   | ||||
| @@ -4,12 +4,15 @@ import org.springframework.web.bind.annotation.CrossOrigin; | ||||
| import org.springframework.web.bind.annotation.RestController; | ||||
|  | ||||
| import java.io.IOException; | ||||
| import java.util.Date; | ||||
|  | ||||
| import com.plannaplan.App; | ||||
| import com.plannaplan.models.ConfigData; | ||||
| import com.plannaplan.models.TourData; | ||||
| import com.plannaplan.services.ConfiguratorService; | ||||
|  | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.format.annotation.DateTimeFormat; | ||||
| import org.springframework.http.HttpStatus; | ||||
| import org.springframework.http.ResponseEntity; | ||||
| import org.springframework.security.access.prepost.PreAuthorize; | ||||
| @@ -33,13 +36,27 @@ public class ConfigController { | ||||
|     @Autowired | ||||
|     private ConfiguratorService contrl; | ||||
|  | ||||
|     @PostMapping("/config") | ||||
|     @PostMapping(path = "/config", consumes = { "multipart/form-data" }) | ||||
|     @PreAuthorize("hasRole('ROLE_ADMIN')") | ||||
|     @ApiOperation("Imports data to system. To call you need to provide ADMIN token") | ||||
|     public ResponseEntity<String> configApp( | ||||
|             @RequestParam("file") @ApiParam(value = "file .xlsx that contains courses and groups with apoinnted rules") MultipartFile file) { | ||||
|             @RequestParam("file") @ApiParam(value = "file .xlsx that contains courses and groups with apoinnted rules") MultipartFile file, | ||||
|             @RequestParam("firstTourBegin") @DateTimeFormat(pattern = "dd.MM.yyyy") Date firstTourBegin, | ||||
|             @RequestParam("firstTourEnd") @DateTimeFormat(pattern = "dd.MM.yyyy") Date firstTourEnd, | ||||
|             @RequestParam("secondTourBegin") @DateTimeFormat(pattern = "dd.MM.yyyy") Date secondTourBegin, | ||||
|             @RequestParam("secondTourEnd") @DateTimeFormat(pattern = "dd.MM.yyyy") Date secondTourEnd) { | ||||
|         try { | ||||
|             final ConfigData data = new ConfigData(null, null, file.getInputStream()); | ||||
|             System.out.println(firstTourBegin); | ||||
|             if (!(firstTourBegin.before(firstTourEnd) | ||||
|                     && (firstTourEnd.before(secondTourBegin) || firstTourEnd.equals(secondTourBegin)) | ||||
|                     && secondTourBegin.before(secondTourEnd))) { | ||||
|                 return new ResponseEntity<>("Bad dates", HttpStatus.BAD_REQUEST); | ||||
|             } | ||||
|  | ||||
|             final TourData firstTour = new TourData(firstTourBegin, firstTourEnd); | ||||
|             final TourData secondTour = new TourData(secondTourBegin, secondTourEnd); | ||||
|  | ||||
|             final ConfigData data = new ConfigData(firstTour, secondTour, file.getInputStream()); | ||||
|             this.contrl.config(data); | ||||
|             return new ResponseEntity<>("Sucess", HttpStatus.OK); | ||||
|         } catch (IOException e) { | ||||
|   | ||||
| @@ -28,6 +28,10 @@ public class ConfigControllerTest extends AbstractControllerTest { | ||||
|  | ||||
|     private static final String FILE_NAME = "Zajecia.xlsx"; | ||||
|     private static final String CONFIG_ENDPOINT = "/api/v1/configurator/config"; | ||||
|     private static final String FIRST_TOUR_START = "firstTourBegin"; | ||||
|     private static final String FIRST_TOUR_END = "firstTourEnd"; | ||||
|     private static final String SECOND_TOUR_START = "secondTourBegin"; | ||||
|     private static final String SECOND_TOUR_END = "secondTourEnd"; | ||||
|  | ||||
|     @Autowired | ||||
|     private UserService service; | ||||
| @@ -52,7 +56,9 @@ public class ConfigControllerTest extends AbstractControllerTest { | ||||
|         final String token = this.service.login(usr).getToken(); | ||||
|  | ||||
|         MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).apply(springSecurity()).build(); | ||||
|         mockMvc.perform(multipart(CONFIG_ENDPOINT).file(file).header("Authorization", "Bearer " + token)) | ||||
|         mockMvc.perform(multipart(CONFIG_ENDPOINT).file(file).param(FIRST_TOUR_START, "12.12.2020") | ||||
|                 .param(FIRST_TOUR_END, "14.12.2020").param(SECOND_TOUR_START, "16.12.2020") | ||||
|                 .param(SECOND_TOUR_END, "20.12.2020").header("Authorization", "Bearer " + token)) | ||||
|                 .andExpect(status().isOk()); | ||||
|  | ||||
|     } | ||||
| @@ -72,4 +78,112 @@ public class ConfigControllerTest extends AbstractControllerTest { | ||||
|  | ||||
|     } | ||||
|  | ||||
|     @Test | ||||
|     public void shouldFailDueToWrongFirstTour() throws Exception { | ||||
|         final String mail = "shouldFailDueToWrongFirstTour@ConfigController.test"; | ||||
|         final User usr = this.service.save(new User(null, null, mail, UserRoles.ADMIN)); | ||||
|  | ||||
|         final InputStream inputStream = getClass().getClassLoader().getResourceAsStream(FILE_NAME); | ||||
|         final MockMultipartFile file = new MockMultipartFile("file", inputStream); | ||||
|         final String token = this.service.login(usr).getToken(); | ||||
|  | ||||
|         MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).apply(springSecurity()).build(); | ||||
|         mockMvc.perform(multipart(CONFIG_ENDPOINT).file(file).param(FIRST_TOUR_START, "12.12.2020") | ||||
|                 .param(FIRST_TOUR_END, "12.12.2020").param(SECOND_TOUR_START, "16.12.2020") | ||||
|                 .param(SECOND_TOUR_END, "20.12.2020").header("Authorization", "Bearer " + token)) | ||||
|                 .andExpect(status().is4xxClientError()); | ||||
|     } | ||||
|  | ||||
|     @Test | ||||
|     public void shouldFailDueToWrongSecondTour() throws Exception { | ||||
|         final String mail = "shouldFailDueToWrongSecondTour@ConfigController.test"; | ||||
|         final User usr = this.service.save(new User(null, null, mail, UserRoles.ADMIN)); | ||||
|  | ||||
|         final InputStream inputStream = getClass().getClassLoader().getResourceAsStream(FILE_NAME); | ||||
|         final MockMultipartFile file = new MockMultipartFile("file", inputStream); | ||||
|         final String token = this.service.login(usr).getToken(); | ||||
|  | ||||
|         MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).apply(springSecurity()).build(); | ||||
|         mockMvc.perform(multipart(CONFIG_ENDPOINT).file(file).param(FIRST_TOUR_START, "12.12.2020") | ||||
|                 .param(FIRST_TOUR_END, "14.12.2020").param(SECOND_TOUR_START, "16.12.2020") | ||||
|                 .param(SECOND_TOUR_END, "16.12.2020").header("Authorization", "Bearer " + token)) | ||||
|                 .andExpect(status().is4xxClientError()); | ||||
|     } | ||||
|  | ||||
|     @Test | ||||
|     public void shouldFailDueToWrongBothTour() throws Exception { | ||||
|         final String mail = "shouldFailDueToWrongBothTour@ConfigController.test"; | ||||
|         final User usr = this.service.save(new User(null, null, mail, UserRoles.ADMIN)); | ||||
|  | ||||
|         final InputStream inputStream = getClass().getClassLoader().getResourceAsStream(FILE_NAME); | ||||
|         final MockMultipartFile file = new MockMultipartFile("file", inputStream); | ||||
|         final String token = this.service.login(usr).getToken(); | ||||
|  | ||||
|         MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).apply(springSecurity()).build(); | ||||
|         mockMvc.perform(multipart(CONFIG_ENDPOINT).file(file).param(FIRST_TOUR_START, "12.12.2020") | ||||
|                 .param(FIRST_TOUR_END, "12.12.2020").param(SECOND_TOUR_START, "16.12.2020") | ||||
|                 .param(SECOND_TOUR_END, "16.12.2020").header("Authorization", "Bearer " + token)) | ||||
|                 .andExpect(status().is4xxClientError()); | ||||
|     } | ||||
|  | ||||
|     @Test | ||||
|     public void shouldFailDueToWrongTourTransition() throws Exception { | ||||
|         final String mail = "shouldFailDueToWrongTourTransition@ConfigController.test"; | ||||
|         final User usr = this.service.save(new User(null, null, mail, UserRoles.ADMIN)); | ||||
|  | ||||
|         final InputStream inputStream = getClass().getClassLoader().getResourceAsStream(FILE_NAME); | ||||
|         final MockMultipartFile file = new MockMultipartFile("file", inputStream); | ||||
|         final String token = this.service.login(usr).getToken(); | ||||
|  | ||||
|         MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).apply(springSecurity()).build(); | ||||
|         mockMvc.perform(multipart(CONFIG_ENDPOINT).file(file).param(FIRST_TOUR_START, "12.12.2020") | ||||
|                 .param(FIRST_TOUR_END, "14.12.2020").param(SECOND_TOUR_START, "13.12.2020") | ||||
|                 .param(SECOND_TOUR_END, "16.12.2020").header("Authorization", "Bearer " + token)) | ||||
|                 .andExpect(status().is4xxClientError()); | ||||
|     } | ||||
|  | ||||
|     @Test | ||||
|     public void shouldFailDueToWrongDateFormat() throws Exception { | ||||
|         final String mail = "shouldFailDueToWrongDateFormat@ConfigController.test"; | ||||
|         final User usr = this.service.save(new User(null, null, mail, UserRoles.ADMIN)); | ||||
|  | ||||
|         final InputStream inputStream = getClass().getClassLoader().getResourceAsStream(FILE_NAME); | ||||
|         final MockMultipartFile file = new MockMultipartFile("file", inputStream); | ||||
|         final String token = this.service.login(usr).getToken(); | ||||
|  | ||||
|         MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).apply(springSecurity()).build(); | ||||
|         mockMvc.perform(multipart(CONFIG_ENDPOINT).file(file).param(FIRST_TOUR_START, "12.12.2020") | ||||
|                 .param(FIRST_TOUR_END, "14.12.2020").param(SECOND_TOUR_START, "16.12.2020") | ||||
|                 .param(SECOND_TOUR_END, "20/12/2020").header("Authorization", "Bearer " + token)) | ||||
|                 .andExpect(status().is4xxClientError()); | ||||
|     } | ||||
|  | ||||
|     @Test | ||||
|     public void shouldFailDueToNoDate() throws Exception { | ||||
|         final String mail = "shouldFailDueToNoDate@ConfigController.test"; | ||||
|         final User usr = this.service.save(new User(null, null, mail, UserRoles.ADMIN)); | ||||
|  | ||||
|         final InputStream inputStream = getClass().getClassLoader().getResourceAsStream(FILE_NAME); | ||||
|         final MockMultipartFile file = new MockMultipartFile("file", inputStream); | ||||
|         final String token = this.service.login(usr).getToken(); | ||||
|  | ||||
|         MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).apply(springSecurity()).build(); | ||||
|         mockMvc.perform(multipart(CONFIG_ENDPOINT).file(file).header("Authorization", "Bearer " + token)) | ||||
|                 .andExpect(status().is4xxClientError()); | ||||
|     } | ||||
|  | ||||
|     @Test | ||||
|     public void shouldFailDueToNoFile() throws Exception { | ||||
|         final String mail = "shouldFailDueToNoFile@ConfigController.test"; | ||||
|         final User usr = this.service.save(new User(null, null, mail, UserRoles.ADMIN)); | ||||
|  | ||||
|         final String token = this.service.login(usr).getToken(); | ||||
|  | ||||
|         MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).apply(springSecurity()).build(); | ||||
|         mockMvc.perform(multipart(CONFIG_ENDPOINT).param(FIRST_TOUR_START, "12.12.2020") | ||||
|                 .param(FIRST_TOUR_END, "14.12.2020").param(SECOND_TOUR_START, "16.12.2020") | ||||
|                 .param(SECOND_TOUR_END, "20.12.2020").header("Authorization", "Bearer " + token)) | ||||
|                 .andExpect(status().is4xxClientError()); | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user