From 84c18742d3a6406e6c32648bdc656bb040d4f4ca Mon Sep 17 00:00:00 2001 From: Stephane Gamard Date: Thu, 14 Aug 2014 15:18:20 +0200 Subject: [PATCH] fix quality flaw & added test for UpdateListScriptFactory --- .../main/java/org/sonar/process/Props.java | 10 -- .../search/script/UpdateListScriptTest.java | 101 ++++++++++++++++++ .../sonar/application/DefaultSettings.java | 2 +- 3 files changed, 102 insertions(+), 11 deletions(-) create mode 100644 server/sonar-search/src/test/java/org/sonar/search/script/UpdateListScriptTest.java diff --git a/server/process/sonar-process/src/main/java/org/sonar/process/Props.java b/server/process/sonar-process/src/main/java/org/sonar/process/Props.java index 25cec590d57..45a630c365c 100644 --- a/server/process/sonar-process/src/main/java/org/sonar/process/Props.java +++ b/server/process/sonar-process/src/main/java/org/sonar/process/Props.java @@ -19,11 +19,8 @@ */ package org.sonar.process; -import org.apache.commons.lang.StringUtils; - import javax.annotation.CheckForNull; import javax.annotation.Nullable; - import java.io.File; import java.util.Properties; @@ -98,11 +95,4 @@ public class Props { } return this; } - - public void setDefault(String key, String value) { - String s = properties.getProperty(key); - if (StringUtils.isBlank(s)) { - properties.setProperty(key, value); - } - } } diff --git a/server/sonar-search/src/test/java/org/sonar/search/script/UpdateListScriptTest.java b/server/sonar-search/src/test/java/org/sonar/search/script/UpdateListScriptTest.java new file mode 100644 index 00000000000..93cf4216439 --- /dev/null +++ b/server/sonar-search/src/test/java/org/sonar/search/script/UpdateListScriptTest.java @@ -0,0 +1,101 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * SonarQube is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package org.sonar.search.script; + +import org.elasticsearch.common.collect.ImmutableMap; +import org.elasticsearch.script.ExecutableScript; +import org.junit.Before; +import org.junit.Test; + +import java.util.HashMap; +import java.util.Map; + +import static org.fest.assertions.Assertions.assertThat; +import static org.fest.assertions.Fail.fail; + +public class UpdateListScriptTest { + + ListUpdate.UpdateListScriptFactory factory; + + + @Before + public void setUp() throws Exception { + factory = new ListUpdate.UpdateListScriptFactory(); + } + + @Test + public void fail_missing_attributes_field() { + Map params = new HashMap(); + + // Missing everything + try { + factory.newScript(params); + fail(); + } catch (Exception e) { + assertThat(e.getMessage()).isEqualTo("Missing 'idField' parameter"); + } + + // Missing ID_VALUE + params.put(ListUpdate.ID_FIELD, "test"); + try { + factory.newScript(params); + fail(); + } catch (Exception e) { + assertThat(e.getMessage()).isEqualTo("Missing 'idValue' parameter"); + } + + // Missing FIELD + params.put(ListUpdate.ID_VALUE, "test"); + try { + factory.newScript(params); + fail(); + } catch (Exception e) { + assertThat(e.getMessage()).isEqualTo("Missing 'field' parameter"); + } + + // Has all required attributes and Null Value + params.put(ListUpdate.FIELD, "test"); + ExecutableScript script = factory.newScript(params); + assertThat(script).isNotNull(); + + // Has all required attributes and VALUE of wrong type + params.put(ListUpdate.VALUE, new Integer(52)); + try { + factory.newScript(params); + fail(); + } catch (Exception e) { + + } + + // Has all required attributes and Proper VALUE + params.put(ListUpdate.VALUE, ImmutableMap.of("key", "value")); + script = factory.newScript(params); + assertThat(script).isNotNull(); + + // Missing ID_FIELD + params.remove(ListUpdate.ID_FIELD); + try { + factory.newScript(params); + fail(); + } catch (Exception e) { + assertThat(e.getMessage()).isEqualTo("Missing 'idField' parameter"); + } + } +} \ No newline at end of file diff --git a/sonar-application/src/main/java/org/sonar/application/DefaultSettings.java b/sonar-application/src/main/java/org/sonar/application/DefaultSettings.java index e6d737487ac..7a3bca0d100 100644 --- a/sonar-application/src/main/java/org/sonar/application/DefaultSettings.java +++ b/sonar-application/src/main/java/org/sonar/application/DefaultSettings.java @@ -49,7 +49,7 @@ class DefaultSettings { // init string properties for (Map.Entry entry : defaults().entrySet()) { - props.setDefault(entry.getKey(), entry.getValue()); + props.set(entry.getKey(), entry.getValue()); } // init ports -- 2.39.5