public PropertyDefinitions addComponents(Collection components, String defaultCategory) { for (Object component : components) { addComponent(component, defaultCategory); } return this; }
@Test public void test_default_category_on_annotation_plugin() { PropertyDefinitions def = new PropertyDefinitions(); def.addComponent(Categories.class, "default"); assertThat(def.getCategory("inCateg")).isEqualTo("categ"); assertThat(def.getCategory("noCateg")).isEqualTo("default"); }
@Before public void init_definitions() { definitions = new PropertyDefinitions(); definitions.addComponent(Init.class); }
@Test public void return_default_category() { logIn(); propertyDefinitions.addComponent(PropertyDefinition.builder("foo").build(), "default"); propertyDefinitions.addComponent(PropertyDefinition.builder("foo").category("").build(), "default"); ListDefinitionsWsResponse result = executeRequest(); assertThat(result.getDefinitionsList()).hasSize(1); assertThat(result.getDefinitions(0).getCategory()).isEqualTo("default"); assertThat(result.getDefinitions(0).getSubCategory()).isEqualTo("default"); }
@Test public void return_global_settings_definitions() { logIn(); propertyDefinitions.addComponent(PropertyDefinition.builder("foo").build()); ListDefinitionsWsResponse result = executeRequest(); assertThat(result.getDefinitionsList()).hasSize(1); }
@Test public void return_project_settings_def_by_project_key() { logInAsProjectUser(); propertyDefinitions.addComponent(PropertyDefinition .builder("foo") .onQualifiers(PROJECT) .build()); ListDefinitionsWsResponse result = executeRequest(project.getDbKey()); assertThat(result.getDefinitionsList()).hasSize(1); }
@Test public void does_not_return_hidden_properties() { logInAsAdmin(db.getDefaultOrganization()); propertyDefinitions.addComponent(PropertyDefinition.builder("foo").hidden().build()); ListDefinitionsWsResponse result = executeRequest(); assertThat(result.getDefinitionsList()).isEmpty(); }
@Test public void return_nothing_when_unknown_keys() { logIn(); definitions.addComponent(PropertyDefinition .builder("foo") .defaultValue("default") .build()); propertyDb.insertProperties(newGlobalPropertyDto().setKey("bar").setValue("")); ValuesWsResponse result = executeRequestForGlobalProperties("unknown"); assertThat(result.getSettingsList()).isEmpty(); }
@Test public void return_simple_value_with_non_ascii_characters() { logIn(); definitions.addComponent(PropertyDefinition .builder("foo") .build()); propertyDb.insertProperties(newGlobalPropertyDto().setKey("foo").setValue("fi±∞…")); ValuesWsResponse result = executeRequestForGlobalProperties("foo"); assertThat(result.getSettings(0).getValue()).isEqualTo("fi±∞…"); }
@Test public void return_is_inherited_to_true_when_property_is_defined_only_at_global_level() { logInAsProjectUser(); definitions.addComponent(PropertyDefinition.builder("property").defaultValue("default").onQualifiers(PROJECT).build()); // The property is not defined on project propertyDb.insertProperties(newGlobalPropertyDto().setKey("property").setValue("one")); ValuesWsResponse result = executeRequestForProjectProperties("property"); assertThat(result.getSettingsList()).hasSize(1); assertSetting(result.getSettings(0), "property", "one", true); }
@Test public void fail_when_not_global_and_no_component() { logInAsSystemAdministrator(); definitions.addComponent(PropertyDefinition.builder("foo") .onlyOnQualifiers(VIEW) .build()); expectedException.expect(BadRequestException.class); expectedException.expectMessage("Setting 'foo' cannot be global"); executeRequestOnGlobalSetting("foo"); }
@Test public void fail_when_user_has_not_project_browse_permission() { userSession.logIn("project-admin").addProjectPermission(CODEVIEWER, project); definitions.addComponent(PropertyDefinition.builder("foo").build()); expectedException.expect(ForbiddenException.class); executeRequest(project.getDbKey(), "foo"); }
@Test public void fail_when_qualifier_not_included() { userSession.logIn().setRoot(); definitions.addComponent(PropertyDefinition.builder("foo") .onQualifiers(VIEW) .build()); i18n.put("qualifier." + PROJECT, "project"); expectedException.expect(BadRequestException.class); expectedException.expectMessage("Setting 'foo' cannot be set on a project"); executeRequestOnComponentSetting("foo", project); }
@Test public void return_multi_value_with_coma() { logIn(); definitions.addComponent(PropertyDefinition.builder("global").multiValues(true).build()); propertyDb.insertProperties(newGlobalPropertyDto().setKey("global").setValue("three,four%2Cfive")); executeAndVerify(null, null, "return_multi_value_with_coma.json"); }
@Test public void fail_when_format_is_set_to_xml() { logIn(); definitions.addComponent(PropertyDefinition.builder("foo").defaultValue("default").build()); expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("Value of parameter 'format' (xml) must be one of: [json]"); ws.newRequest().setParam("format", "xml").execute(); }
@Test public void return_additional_settings_specific_for_scanner_when_no_keys() { logInAsAdmin(); definitions.addComponent(PropertyDefinition.builder("plugin.license.secured").type(LICENSE).build()); propertyDb.insertProperties( newGlobalPropertyDto().setKey("sonar.core.id").setValue("ID"), newGlobalPropertyDto().setKey("sonar.core.startTime").setValue("2017-01-01")); ValuesWsResponse result = executeRequestForGlobalProperties(); assertThat(result.getSettingsList()).extracting(Settings.Setting::getKey).containsOnly("sonar.core.id", "sonar.core.startTime"); }
@Test public void remove_setting_by_deprecated_key() { logInAsSystemAdministrator(); definitions.addComponent(PropertyDefinition.builder("foo").deprecatedKey("old").build()); propertyDb.insertProperties(newGlobalPropertyDto().setKey("foo").setValue("one")); executeRequestOnGlobalSetting("old"); assertGlobalPropertyDoesNotExist("foo"); }
@Test public void does_not_fail_when_user_has_not_project_browse_permission() { userSession.logIn("project-admin").addProjectPermission(CODEVIEWER, project); definitions.addComponent(PropertyDefinition.builder("foo").build()); propertyDb.insertProperties(newComponentPropertyDto(project).setKey("foo").setValue("one")); executeAndVerify(project.getDbKey(), null, "does_not_fail_when_user_has_not_project_browse_permission.json"); }
@Test public void return_module_values() { logInAsProjectUser(); ComponentDto module = componentDb.insertComponent(newModuleDto(project)); definitions.addComponent(PropertyDefinition.builder("property").defaultValue("default").build()); propertyDb.insertProperties( newGlobalPropertyDto().setKey("property").setValue("one"), // The property is overriding global value newComponentPropertyDto(module).setKey("property").setValue("two")); executeAndVerify(module.getDbKey(), "property", "return_module_values.json"); }
@Test public void delete_component_settings() { definitions.addComponent(PropertyDefinition.builder("foo").build()); propertyDb.insertProperties(newGlobalPropertyDto().setKey("foo").setValue("value")); propertyDb.insertProperties(newComponentPropertyDto(project).setKey("foo").setValue("one")); propertyDb.insertProperties(newComponentPropertyDto(project).setKey("bar").setValue("two")); underTest.deleteComponentSettings(dbSession, project, "foo", "bar"); assertProjectPropertyDoesNotExist("foo"); assertProjectPropertyDoesNotExist("bar"); assertGlobalPropertyExists("foo"); }