From 3df1abd46edd5683c031e2e98bdcc76428ff2672 Mon Sep 17 00:00:00 2001 From: Fabio Formosa Date: Tue, 9 Nov 2021 00:14:49 +0100 Subject: [PATCH] #37 added input validation to the trigger rescheduling --- .../quartzmanager/controllers/TriggerController.java | 2 +- .../controllers/TriggerControllerTest.java | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/controllers/TriggerController.java b/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/controllers/TriggerController.java index d2ea4f1..03583ce 100644 --- a/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/controllers/TriggerController.java +++ b/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/controllers/TriggerController.java @@ -44,7 +44,7 @@ public class TriggerController { } @PutMapping("/{name}") - public TriggerDTO rescheduleTrigger(@PathVariable String name, @RequestBody SchedulerConfigParam config) throws SchedulerException { + public TriggerDTO rescheduleTrigger(@PathVariable String name, @Valid @RequestBody SchedulerConfigParam config) throws SchedulerException { log.info("TRIGGER - RESCHEDULING the trigger {} {}", name, config); TriggerDTO triggerDTO = schedulerService.rescheduleTrigger(name, config); log.info("TRIGGER - RESCHEDULED the trigger {}", triggerDTO); diff --git a/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/controllers/TriggerControllerTest.java b/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/controllers/TriggerControllerTest.java index c0e33ec..85ec109 100644 --- a/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/controllers/TriggerControllerTest.java +++ b/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/controllers/TriggerControllerTest.java @@ -57,7 +57,7 @@ class TriggerControllerTest { @ParameterizedTest @ArgumentsSource(InvalidSchedulerConfigParamProvider.class) - void givenAnInvalidSchedulerConfigParam_whenPosted_thenAnErrorIsReturned(SchedulerConfigParam invalidSchedulerConfigParam) throws Exception { + void givenAnInvalidSchedulerConfigParam_whenRequestedANewTrigger_thenAnErrorIsReturned(SchedulerConfigParam invalidSchedulerConfigParam) throws Exception { mockMvc.perform(post(TriggerController.TRIGGER_CONTROLLER_BASE_URL + "/mytrigger") .contentType(MediaType.APPLICATION_JSON) .content(TestUtils.toJson(invalidSchedulerConfigParam))) @@ -87,6 +87,15 @@ class TriggerControllerTest { .andExpect(MockMvcResultMatchers.content().json(TestUtils.toJson(expectedTriggerDTO))); } + @ParameterizedTest + @ArgumentsSource(InvalidSchedulerConfigParamProvider.class) + void givenAnInvalidSchedulerConfigParam_whenATriggerIsRescheduled_thenAnErrorIsReturned(SchedulerConfigParam invalidSchedulerConfigParam) throws Exception { + mockMvc.perform(put(TriggerController.TRIGGER_CONTROLLER_BASE_URL + "/mytrigger") + .contentType(MediaType.APPLICATION_JSON) + .content(TestUtils.toJson(invalidSchedulerConfigParam))) + .andExpect(MockMvcResultMatchers.status().is4xxClientError()); + } + private SchedulerConfigParam buildSimpleSchedulerConfigParam() { return SchedulerConfigParam.builder().maxCount(20).triggerPerDay(20000L).build(); }