Browse Source

SONAR-8004 WS settings/set fails when property set field with a null value

tags/6.1-RC1
Teryk Bellahsene 7 years ago
parent
commit
407d7feead

+ 4
- 1
server/sonar-server/src/main/java/org/sonar/server/setting/ws/SetAction.java View File

@@ -216,7 +216,10 @@ public class SetAction implements SettingsWsAction {
.map(oneFieldValues -> readOneFieldValues(oneFieldValues, request.getKey()))
.flatMap(map -> map.entrySet().stream())
.peek(entry -> valuesByFieldKeys.put(entry.getKey(), entry.getValue()))
.forEach(entry -> checkRequest(fieldKeys.contains(entry.getKey()), "Unknown field key '%s' for setting '%s'", entry.getKey(), request.getKey()));
.forEach(entry -> {
checkRequest(fieldKeys.contains(entry.getKey()), "Unknown field key '%s' for setting '%s'", entry.getKey(), request.getKey());
checkRequest(entry.getValue() != null, "Parameter field '%s' must not be null", entry.getKey());
});

checkFieldType(request, definition, valuesByFieldKeys);
}

+ 23
- 0
server/sonar-server/src/test/java/org/sonar/server/setting/ws/SetActionTest.java View File

@@ -544,6 +544,29 @@ public class SetActionTest {
callForGlobalPropertySet("my.key", newArrayList(GSON.toJson(ImmutableMap.of("field", "notAnInt"))));
}

@Test
public void fail_when_property_set_has_a_null_field_value() {
propertyDefinitions.addComponent(PropertyDefinition
.builder("my.key")
.name("foo")
.description("desc")
.category("cat")
.subCategory("subCat")
.type(PropertyType.PROPERTY_SET)
.defaultValue("default")
.fields(newArrayList(
PropertyFieldDefinition.build("field")
.name("Field")
.type(PropertyType.STRING)
.build()))
.build());

expectedException.expect(BadRequestException.class);
expectedException.expectMessage("Parameter field 'field' must not be null");

callForGlobalPropertySet("my.key", newArrayList("{\"field\": null}"));
}

@Test
public void fail_when_property_set_with_invalid_json() {
propertyDefinitions.addComponent(PropertyDefinition

Loading…
Cancel
Save