From 43f3322089f1dcc1f7d35f20c7dd742a515c7fc1 Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Wed, 5 Jun 2019 18:37:09 +0200 Subject: [PATCH] proper status code is returned when trying to update configuration option with invalid data --- .../ConfigurationController.java | 2 +- .../configuration/AllConfigurationTests.java | 4 +- .../ConfigurationControllerTest.java | 56 +++++++++++++++++++ .../services/impl/ConfigurationService.java | 1 + 4 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 rest-api/src/test/java/lcsb/mapviewer/api/configuration/ConfigurationControllerTest.java diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/configuration/ConfigurationController.java b/rest-api/src/main/java/lcsb/mapviewer/api/configuration/ConfigurationController.java index e9a8bf9d2f..949e03b593 100644 --- a/rest-api/src/main/java/lcsb/mapviewer/api/configuration/ConfigurationController.java +++ b/rest-api/src/main/java/lcsb/mapviewer/api/configuration/ConfigurationController.java @@ -73,7 +73,7 @@ public class ConfigurationController extends BaseController { @RequestMapping(value = "/configuration/options/{option}", method = { RequestMethod.PATCH }, produces = { MediaType.APPLICATION_JSON_VALUE }) - public Map<String, Object> getOption( + public Map<String, Object> updateOption( @RequestBody String body, @CookieValue(value = Configuration.AUTH_TOKEN) String token, @PathVariable(value = "option") String option diff --git a/rest-api/src/test/java/lcsb/mapviewer/api/configuration/AllConfigurationTests.java b/rest-api/src/test/java/lcsb/mapviewer/api/configuration/AllConfigurationTests.java index 14956fb65e..1a95c60136 100644 --- a/rest-api/src/test/java/lcsb/mapviewer/api/configuration/AllConfigurationTests.java +++ b/rest-api/src/test/java/lcsb/mapviewer/api/configuration/AllConfigurationTests.java @@ -5,7 +5,9 @@ import org.junit.runners.Suite; import org.junit.runners.Suite.SuiteClasses; @RunWith(Suite.class) -@SuiteClasses({ ConfigurationRestImplTest.class }) +@SuiteClasses({ + ConfigurationControllerTest.class, + ConfigurationRestImplTest.class }) public class AllConfigurationTests { } diff --git a/rest-api/src/test/java/lcsb/mapviewer/api/configuration/ConfigurationControllerTest.java b/rest-api/src/test/java/lcsb/mapviewer/api/configuration/ConfigurationControllerTest.java new file mode 100644 index 0000000000..40eee3082b --- /dev/null +++ b/rest-api/src/test/java/lcsb/mapviewer/api/configuration/ConfigurationControllerTest.java @@ -0,0 +1,56 @@ +package lcsb.mapviewer.api.configuration; + +import static org.junit.Assert.fail; + +import java.util.HashMap; +import java.util.Map; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.web.WebAppConfiguration; + +import com.google.gson.Gson; + +import lcsb.mapviewer.api.QueryException; +import lcsb.mapviewer.api.SpringRestApiTestConfig; +import lcsb.mapviewer.model.user.ConfigurationElementType; +import lcsb.mapviewer.services.interfaces.IUserService; + +@ContextConfiguration(classes = SpringRestApiTestConfig.class) +@WebAppConfiguration +@RunWith(SpringJUnit4ClassRunner.class) +public class ConfigurationControllerTest { + + @Autowired + ConfigurationController configurationController; + + @Autowired + IUserService userService; + + @Test + public void testSetSmtpPortToInvalid() throws Exception { + try { + // assume that we have admin account with all the privileges + String adminToken = userService.login("admin", "admin"); + + Map<String, Object> option= new HashMap<>(); + option.put("value", "not a number"); + option.put("type", "not a number"); + Map<String, Object> data= new HashMap<>(); + data.put("option", option); + + String body = new Gson().toJson(data); + configurationController.updateOption(body, adminToken, ConfigurationElementType.MAX_NUMBER_OF_MAP_LEVELS.name()); + fail("Exception expected"); + } catch (QueryException e) { + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + } + + +} diff --git a/service/src/main/java/lcsb/mapviewer/services/impl/ConfigurationService.java b/service/src/main/java/lcsb/mapviewer/services/impl/ConfigurationService.java index 14141d92d1..336ddc20c7 100644 --- a/service/src/main/java/lcsb/mapviewer/services/impl/ConfigurationService.java +++ b/service/src/main/java/lcsb/mapviewer/services/impl/ConfigurationService.java @@ -65,6 +65,7 @@ public class ConfigurationService implements IConfigurationService { } @Override + @Transactional(noRollbackFor = InvalidArgumentException.class) public void setConfigurationValue(ConfigurationElementType type, String value) { if (value == null) { throw new InvalidArgumentException("null is not a proper value"); -- GitLab