@Test public void return_project_settings() { ComponentDto project = db.components().insertPrivateProject(); db.properties().insertProperties( newComponentPropertyDto(project).setKey("1").setValue("val1"), newComponentPropertyDto(project).setKey("2").setValue("val2"), newComponentPropertyDto(project).setKey("3").setValue("val3")); Configuration config = underTest.newProjectConfiguration(project.getDbKey(), new DefaultBranchImpl()); assertThat(config.get("1")).hasValue("val1"); assertThat(config.get("2")).hasValue("val2"); assertThat(config.get("3")).hasValue("val3"); }
@Test public void return_values_of_component_even_if_no_property_definition() { logInAsProjectUser(); propertyDb.insertProperties( newComponentPropertyDto(project).setKey("property").setValue("foo")); ValuesWsResponse response = executeRequestForComponentProperties(project, "property"); assertThat(response.getSettingsCount()).isEqualTo(1); assertSetting(response.getSettings(0), "property", "foo", false); }
@Test public void return_secured_and_license_settings_even_if_not_defined_when_project_admin() { logInAsProjectAdmin(); propertyDb.insertProperties(newComponentPropertyDto(project).setKey("not-defined.secured").setValue("123")); ValuesWsResponse result = executeRequestForProjectProperties("not-defined.secured"); assertThat(result.getSettingsList()).extracting(Settings.Setting::getKey).containsOnly("not-defined.secured"); }
@Test public void legacy_branch() { ComponentDto project = db.components().insertMainBranch(); db.properties().insertProperties(newComponentPropertyDto(project).setKey("sonar.leak.period").setValue("1")); Branch branch = createBranch("legacy", true); when(branch.isLegacyFeature()).thenReturn(true); Configuration config = underTest.newProjectConfiguration(project.getKey(), createBranch(branch.getName(), true)); assertThat(config.get("sonar.leak.period")).hasValue("1"); }
@Test public void main_branch() { ComponentDto project = db.components().insertMainBranch(); db.properties().insertProperties(newComponentPropertyDto(project).setKey("sonar.leak.period").setValue("1")); Branch branch = createBranch("master", true); when(branch.isMain()).thenReturn(true); Configuration config = underTest.newProjectConfiguration(project.getKey(), createBranch(branch.getName(), true)); assertThat(config.get("sonar.leak.period")).hasValue("1"); }
@Test public void remove_component_setting_even_if_not_defined() { logInAsProjectAdmin(); propertyDb.insertProperties(newComponentPropertyDto(project).setKey("foo").setValue("value")); executeRequestOnProjectSetting("foo"); assertProjectPropertyDoesNotExist("foo"); }
@Test public void branch_settings_contains_project_settings() { ComponentDto project = db.components().insertMainBranch(); db.properties().insertProperties(newComponentPropertyDto(project).setKey("key").setValue("value")); ComponentDto branch = db.components().insertProjectBranch(project); db.properties().insertProperties(newComponentPropertyDto(branch).setKey("sonar.leak.period").setValue("1")); Configuration config = underTest.newProjectConfiguration(project.getKey(), createBranch(branch.getBranch(), false)); assertThat(config.get("key")).hasValue("value"); assertThat(config.get("sonar.leak.period")).hasValue("1"); }
@Test public void branch_settings_override_project_settings() { ComponentDto project = db.components().insertMainBranch(); db.properties().insertProperties(newComponentPropertyDto(project).setKey("sonar.leak.period").setValue("1")); ComponentDto branch = db.components().insertProjectBranch(project); db.properties().insertProperties(newComponentPropertyDto(branch).setKey("sonar.leak.period").setValue("2")); Configuration config = underTest.newProjectConfiguration(project.getKey(), createBranch(branch.getBranch(), false)); assertThat(config.get("sonar.leak.period")).hasValue("2"); }
@Test public void project_settings_override_global_settings() { settings.setProperty("key", "value"); ComponentDto project = db.components().insertPrivateProject(); db.properties().insertProperties(newComponentPropertyDto(project).setKey("key").setValue("value2")); Configuration projectConfig = underTest.newProjectConfiguration(project.getDbKey(), new DefaultBranchImpl()); assertThat(projectConfig.get("key")).hasValue("value2"); }
@Test public void branch_settings_contains_global_settings() { settings.setProperty("global", "global_value"); ComponentDto project = db.components().insertMainBranch(); ComponentDto branch = db.components().insertProjectBranch(project); db.properties().insertProperties(newComponentPropertyDto(branch).setKey("sonar.leak.period").setValue("1")); Configuration config = underTest.newProjectConfiguration(project.getKey(), createBranch(branch.getBranch(), false)); assertThat(config.get("global")).hasValue("global_value"); assertThat(config.get("sonar.leak.period")).hasValue("1"); }
@Test public void branch_settings() { ComponentDto project = db.components().insertMainBranch(); ComponentDto branch = db.components().insertProjectBranch(project); db.properties().insertProperties(newComponentPropertyDto(branch).setKey("sonar.leak.period").setValue("1")); Configuration config = underTest.newProjectConfiguration(project.getKey(), createBranch(branch.getBranch(), false)); assertThat(config.get("sonar.leak.period")).hasValue("1"); }
@Test public void remove_component_setting() { logInAsProjectAdmin(); definitions.addComponent(PropertyDefinition.builder("foo").onQualifiers(PROJECT).build()); propertyDb.insertProperties(newComponentPropertyDto(project).setKey("foo").setValue("value")); executeRequestOnProjectSetting("foo"); assertProjectPropertyDoesNotExist("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 ignore_project_setting_when_removing_global_setting() { logInAsSystemAdministrator(); propertyDb.insertProperties(newGlobalPropertyDto().setKey("foo").setValue("one")); propertyDb.insertProperties(newComponentPropertyDto(project).setKey("foo").setValue("value")); executeRequestOnGlobalSetting("foo"); assertGlobalPropertyDoesNotExist("foo"); assertProjectPropertyExists("foo"); }
@Test public void ignore_global_setting_when_removing_project_setting() { logInAsProjectAdmin(); propertyDb.insertProperties(newGlobalPropertyDto().setKey("foo").setValue("one")); propertyDb.insertProperties(newComponentPropertyDto(project).setKey("foo").setValue("value")); executeRequestOnProjectSetting("foo"); assertGlobalPropertyExists("foo"); assertProjectPropertyDoesNotExist("foo"); }
@Test public void update_existing_project_setting() { propertyDb.insertProperty(newGlobalPropertyDto("my.key", "my global value")); ComponentDto project = db.components().insertPrivateProject(); propertyDb.insertProperty(newComponentPropertyDto("my.key", "my project value", project)); assertComponentSetting("my.key", "my project value", project.getId()); logInAsProjectAdministrator(project); callForProjectSettingByKey("my.key", "my new project value", project.getDbKey()); assertComponentSetting("my.key", "my new project value", project.getId()); }
@Test public void return_project_values() { logInAsProjectUser(); definitions.addComponent(PropertyDefinition.builder("property").defaultValue("default").build()); propertyDb.insertProperties( newGlobalPropertyDto().setKey("property").setValue("one"), // The property is overriding global value newComponentPropertyDto(project).setKey("property").setValue("two")); executeAndVerify(project.getDbKey(), null, "return_project_values.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 return_parent_value_when_no_definition() { logInAsProjectUser(); ComponentDto module = componentDb.insertComponent(newModuleDto(project)); propertyDb.insertProperties( newGlobalPropertyDto().setKey("foo").setValue("global"), newComponentPropertyDto(project).setKey("foo").setValue("project")); assertParentValue(executeRequestForComponentProperties(module, "foo").getSettings(0), "project"); assertParentValue(executeRequestForComponentProperties(project, "foo").getSettings(0), "global"); assertParentValue(executeRequestForGlobalProperties("foo").getSettings(0), null); }
@Test public void delete_global_settings() { definitions.addComponent(PropertyDefinition.builder("foo").build()); propertyDb.insertProperties(newComponentPropertyDto(project).setKey("foo").setValue("value")); propertyDb.insertProperties(newGlobalPropertyDto().setKey("foo").setValue("one")); propertyDb.insertProperties(newGlobalPropertyDto().setKey("bar").setValue("two")); underTest.deleteGlobalSettings(dbSession, "foo", "bar"); assertGlobalPropertyDoesNotExist("foo"); assertGlobalPropertyDoesNotExist("bar"); assertProjectPropertyExists("foo"); }