public void insertPropertySet(String settingBaseKey, @Nullable ComponentDto componentDto, Map<String, String>... fieldValues) { int index = 1; List<PropertyDto> propertyDtos = new ArrayList<>(); List<String> ids = new ArrayList<>(); for (Map<String, String> fieldValue : fieldValues) { for (Map.Entry<String, String> entry : fieldValue.entrySet()) { String key = settingBaseKey + "." + index + "." + entry.getKey(); if (componentDto != null) { propertyDtos.add(newComponentPropertyDto(componentDto).setKey(key).setValue(entry.getValue())); } else { propertyDtos.add(newGlobalPropertyDto().setKey(key).setValue(entry.getValue())); } } ids.add(Integer.toString(index)); index++; } String idsValue = Joiner.on(",").join(ids); if (componentDto != null) { propertyDtos.add(newComponentPropertyDto(componentDto).setKey(settingBaseKey).setValue(idsValue)); } else { propertyDtos.add(newGlobalPropertyDto().setKey(settingBaseKey).setValue(idsValue)); } insertProperties(propertyDtos); }
public static PropertyDto newGlobalPropertyDto(String key, String value) { return newPropertyDto(key, value, (Long) null, null); }
@Test public void select_properties_by_keys_and_component_ids() { ComponentDto project = db.components().insertPrivateProject(); ComponentDto project2 = db.components().insertPrivateProject(); UserDto user = db.users().insertUser(); String key = "key"; String anotherKey = "anotherKey"; insertProperties( newGlobalPropertyDto().setKey(key), newComponentPropertyDto(project).setKey(key), newComponentPropertyDto(project2).setKey(key), newComponentPropertyDto(project2).setKey(anotherKey), newUserPropertyDto(user).setKey(key)); assertThat(underTest.selectPropertiesByKeysAndComponentIds(session, newHashSet(key), newHashSet(project.getId()))) .extracting("key", "resourceId").containsOnly(tuple(key, project.getId())); assertThat(underTest.selectPropertiesByKeysAndComponentIds(session, newHashSet(key), newHashSet(project.getId(), project2.getId()))) .extracting("key", "resourceId").containsOnly( tuple(key, project.getId()), tuple(key, project2.getId())); assertThat(underTest.selectPropertiesByKeysAndComponentIds(session, newHashSet(key, anotherKey), newHashSet(project.getId(), project2.getId()))) .extracting("key", "resourceId").containsOnly( tuple(key, project.getId()), tuple(key, project2.getId()), tuple(anotherKey, project2.getId())); assertThat(underTest.selectPropertiesByKeysAndComponentIds(session, newHashSet("unknown"), newHashSet(project.getId()))).isEmpty(); assertThat(underTest.selectPropertiesByKeysAndComponentIds(session, newHashSet("key"), newHashSet(123456789L))).isEmpty(); assertThat(underTest.selectPropertiesByKeysAndComponentIds(session, newHashSet("unknown"), newHashSet(123456789L))).isEmpty(); }
@Test public void does_not_delete_user_settings() { UserDto user = dbClient.userDao().insert(dbSession, UserTesting.newUserDto()); propertyDb.insertProperties(newUserPropertyDto("foo", "one", user)); propertyDb.insertProperties(newGlobalPropertyDto().setKey("foo").setValue("one")); underTest.deleteGlobalSettings(dbSession, "foo"); assertUserPropertyExists("foo", user); }
@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 update_existing_global_setting() { propertyDb.insertProperty(newGlobalPropertyDto("my.key", "my value")); assertGlobalSetting("my.key", "my value"); callForGlobalSetting("my.key", "my new value"); assertGlobalSetting("my.key", "my new value"); assertThat(settingsChangeNotifier.wasCalled).isTrue(); }
@Test public void deactivate_user_deletes_his_properties() { logInAsSystemAdministrator(); UserDto user = db.users().insertUser(); ComponentDto project = db.components().insertPrivateProject(); db.properties().insertProperty(newUserPropertyDto(user)); db.properties().insertProperty(newUserPropertyDto(user)); db.properties().insertProperty(newUserPropertyDto(user).setResourceId(project.getId())); deactivate(user.getLogin()); assertThat(db.getDbClient().propertiesDao().selectByQuery(PropertyQuery.builder().setUserId(user.getId()).build(), dbSession)).isEmpty(); assertThat(db.getDbClient().propertiesDao().selectByQuery(PropertyQuery.builder().setUserId(user.getId()).setComponentId(project.getId()).build(), dbSession)).isEmpty(); }
@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_values_even_if_no_property_definition() { logIn(); propertyDb.insertProperties(newGlobalPropertyDto().setKey("globalPropertyWithoutDefinition").setValue("value")); ValuesWsResponse result = executeRequestForGlobalProperties("globalPropertyWithoutDefinition"); Settings.Setting globalPropertyWithoutDefinitionValue = result.getSettings(0); assertThat(globalPropertyWithoutDefinitionValue.getKey()).isEqualTo("globalPropertyWithoutDefinition"); assertThat(globalPropertyWithoutDefinitionValue.getValue()).isEqualTo("value"); assertThat(globalPropertyWithoutDefinitionValue.getInherited()).isFalse(); }
@Test public void ignore_user_setting_when_removing_global_setting() { logInAsSystemAdministrator(); UserDto user = dbClient.userDao().insert(dbSession, UserTesting.newUserDto()); propertyDb.insertProperties(newUserPropertyDto("foo", "one", user)); executeRequestOnGlobalSetting("foo"); assertUserPropertyExists("foo", user); }
@Test public void select_by_key_and_matching_value() { ComponentDto project1 = db.components().insertPrivateProject(); ComponentDto project2 = db.components().insertPrivateProject(); db.properties().insertProperties( newComponentPropertyDto("key", "value", project1), newComponentPropertyDto("key", "value", project2), newGlobalPropertyDto("key", "value"), newComponentPropertyDto("another key", "value", project1)); assertThat(underTest.selectByKeyAndMatchingValue(db.getSession(), "key", "value")) .extracting(PropertyDto::getValue, PropertyDto::getResourceId) .containsExactlyInAnyOrder( tuple("value", project1.getId()), tuple("value", project2.getId()), tuple("value", null) ); }
@Test public void return_secured_and_license_settings_when_project_admin() { logInAsProjectAdmin(); definitions.addComponents(asList( PropertyDefinition.builder("foo").build(), PropertyDefinition.builder("secret.secured").build(), PropertyDefinition.builder("plugin.license.secured").type(LICENSE).build())); propertyDb.insertProperties( newComponentPropertyDto(project).setKey("foo").setValue("one"), newComponentPropertyDto(project).setKey("secret.secured").setValue("password"), newComponentPropertyDto(project).setKey("plugin.license.secured").setValue("ABCD"), newComponentPropertyDto(project).setKey("plugin.licenseHash.secured").setValue("987654321")); executeAndVerify(project.getDbKey(), null, "return_secured_and_license_settings_when_project_admin.json"); }
@Test public void user_setting_is_not_updated() { propertyDb.insertProperty(newGlobalPropertyDto("my.key", "my user value").setUserId(42)); propertyDb.insertProperty(newGlobalPropertyDto("my.key", "my global value")); callForGlobalSetting("my.key", "my new global value"); assertGlobalSetting("my.key", "my new global value"); assertUserSetting("my.key", "my user value", 42); }
@Test public void select_component_properties_by_ids() { ComponentDto project = db.components().insertPrivateProject(); ComponentDto project2 = db.components().insertPrivateProject(); UserDto user = db.users().insertUser(); String key = "key"; String anotherKey = "anotherKey"; insertProperties( newGlobalPropertyDto().setKey(key), newComponentPropertyDto(project).setKey(key), newComponentPropertyDto(project2).setKey(key), newComponentPropertyDto(project2).setKey(anotherKey), newUserPropertyDto(user).setKey(key)); assertThat(underTest.selectPropertiesByComponentIds(session, newHashSet(project.getId()))) .extracting("key", "resourceId").containsOnly(tuple(key, project.getId())); assertThat(underTest.selectPropertiesByComponentIds(session, newHashSet(project.getId(), project2.getId()))) .extracting("key", "resourceId").containsOnly( tuple(key, project.getId()), tuple(key, project2.getId()), tuple(anotherKey, project2.getId())); assertThat(underTest.selectPropertiesByComponentIds(session, newHashSet(123456789L))).isEmpty(); }
public static PropertyDto newGlobalPropertyDto() { return newPropertyDto((Long) null, null); }
@Test public void ignore_user_setting_when_removing_project_setting() { logInAsProjectAdmin(); UserDto user = dbClient.userDao().insert(dbSession, UserTesting.newUserDto()); propertyDb.insertProperties(newUserPropertyDto("foo", "one", user)); executeRequestOnProjectSetting("foo"); assertUserPropertyExists("foo", user); }
@Test public void return_all_project_settings_when_component_and_no_key() { logInAsProjectAdmin(); definitions.addComponents(asList( PropertyDefinition.builder("foo").build(), PropertyDefinition.builder("secret.secured").build(), PropertyDefinition.builder("plugin.license.secured").type(LICENSE).build())); propertyDb.insertProperties( newComponentPropertyDto(project).setKey("foo").setValue("one"), newComponentPropertyDto(project).setKey("secret.secured").setValue("password"), newComponentPropertyDto(project).setKey("plugin.license.secured").setValue("ABCD"), newComponentPropertyDto(project).setKey("not_defined").setValue("ABCD"), newGlobalPropertyDto().setKey("global_not_defined").setValue("ABCD")); executeAndVerify(project.getDbKey(), null, "return_all_project_settings_when_component_and_no_key.json"); }
@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 return_simple_value() { logIn(); definitions.addComponent(PropertyDefinition .builder("foo") .build()); propertyDb.insertProperties(newGlobalPropertyDto().setKey("foo").setValue("one")); ValuesWsResponse result = executeRequestForGlobalProperties("foo"); assertThat(result.getSettingsList()).hasSize(1); Settings.Setting value = result.getSettings(0); assertThat(value.getKey()).isEqualTo("foo"); assertThat(value.getValue()).isEqualTo("one"); assertThat(value.getInherited()).isFalse(); }
private static PropertyDto newPropertyDto(@Nullable Long componentId, @Nullable Integer userId) { String key = String.valueOf(cursor); cursor++; String value = String.valueOf(cursor); cursor++; return newPropertyDto(key, value, componentId, userId); }