static List<PropertyDefinition> all() { return singletonList( PropertyDefinition.builder(CoreProperties.CORE_FORCE_AUTHENTICATION_PROPERTY) .defaultValue(Boolean.toString(CoreProperties.CORE_FORCE_AUTHENTICATION_DEFAULT_VALUE)) .name("Force user authentication") .description( "Forcing user authentication prevents anonymous users from accessing the SonarQube UI, or project data via the Web API. " + "Some specific read-only Web APIs, including those required to prompt authentication, are still available anonymously.") .type(PropertyType.BOOLEAN) .category(CoreProperties.CATEGORY_SECURITY) .build()); } }
@Test public void getDefaultValues() { Configuration config = new DefaultConfiguration(new PropertyDefinitions(Arrays.asList( PropertyDefinition.builder("single").multiValues(false).defaultValue("default").build(), PropertyDefinition.builder("multiA").multiValues(true).defaultValue("foo,bar").build())), new Encryption(null), ImmutableMap.of()) { }; assertThat(config.get("multiA")).hasValue("foo,bar"); assertThat(config.getStringArray("multiA")).containsExactly("foo", "bar"); assertThat(config.get("single")).hasValue("default"); assertThat(config.getStringArray("single")).containsExactly("default"); }
@Test public void return_default_values() { logIn(); definitions.addComponent(PropertyDefinition .builder("foo") .defaultValue("default") .build()); ValuesWsResponse result = executeRequestForGlobalProperties("foo"); assertThat(result.getSettingsList()).hasSize(1); assertSetting(result.getSettings(0), "foo", "default", true); }
@Test public void return_project_values() { logInAsProjectUser(); definitions.addComponent( PropertyDefinition.builder("property").defaultValue("default").onQualifiers(PROJECT).build()); propertyDb.insertProperties( newGlobalPropertyDto().setKey("property").setValue("one"), // The property is overriding global value newComponentPropertyDto(project).setKey("property").setValue("two")); ValuesWsResponse result = executeRequestForProjectProperties("property"); assertThat(result.getSettingsList()).hasSize(1); assertSetting(result.getSettings(0), "property", "two", false); }
@Test public void return_inherited_values_on_global_setting() { logIn(); definitions.addComponents(asList( PropertyDefinition.builder("defaultProperty").defaultValue("default").build(), PropertyDefinition.builder("globalProperty").build())); propertyDb.insertProperties( newGlobalPropertyDto().setKey("globalProperty").setValue("global")); ValuesWsResponse result = executeRequestForGlobalProperties("defaultProperty", "globalProperty"); assertThat(result.getSettingsList()).hasSize(2); assertSetting(result.getSettings(0), "defaultProperty", "default", true); assertSetting(result.getSettings(1), "globalProperty", "global", false); }
@Test public void return_settings_defined_only_at_global_level_when_loading_project_settings() { logInAsProjectUser(); definitions.addComponents(asList( PropertyDefinition.builder("global").build(), PropertyDefinition.builder("global.default").defaultValue("default").build(), PropertyDefinition.builder("project").onQualifiers(PROJECT).build())); propertyDb.insertProperties( newGlobalPropertyDto().setKey("global").setValue("one"), newComponentPropertyDto(project).setKey("project").setValue("two")); ValuesWsResponse result = executeRequestForProjectProperties(); assertThat(result.getSettingsList()).extracting(Settings.Setting::getKey, Settings.Setting::getValue) .containsOnly(tuple("project", "two"), tuple("global.default", "default"), tuple("global", "one")); }
@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 should_inspect_plugin_objects() { PropertyDefinitions def = new PropertyDefinitions( PropertyDefinition.builder("foo").name("Foo").build(), PropertyDefinition.builder("one").name("One").build(), PropertyDefinition.builder("two").name("Two").defaultValue("2").build()); assertProperties(def); }
@Test public void does_not_fail_when_format_is_set_to_json() { logIn(); definitions.addComponent(PropertyDefinition.builder("foo").defaultValue("default").build()); ws.newRequest().setParam("format", "json").execute(); }
@Test public void return_inherited_values_on_global_setting() { logIn(); definitions.addComponents(asList( PropertyDefinition.builder("defaultProperty").defaultValue("default").build(), PropertyDefinition.builder("globalProperty").build())); propertyDb.insertProperties( newGlobalPropertyDto().setKey("globalProperty").setValue("global")); executeAndVerify(null, null, "return_inherited_values_on_global_setting.json"); }
@Test public void return_nothing_when_unknown_key() { logIn(); definitions.addComponent(PropertyDefinition.builder("foo").defaultValue("default").build()); propertyDb.insertProperties(newGlobalPropertyDto().setKey("bar").setValue("")); executeAndVerify(null, "unknown", "empty.json"); }
@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_default_values() { logIn(); definitions.addComponent(PropertyDefinition.builder("foo").defaultValue("default").build()); executeAndVerify(null, null, "return_default_values.json"); }
@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_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_global_values() { logIn(); definitions.addComponent(PropertyDefinition.builder("property").defaultValue("default").build()); propertyDb.insertProperties( // The property is overriding default value newGlobalPropertyDto().setKey("property").setValue("one")); ValuesWsResponse result = executeRequestForGlobalProperties("property"); assertThat(result.getSettingsList()).hasSize(1); assertSetting(result.getSettings(0), "property", "one", false); }
@Test public void return_global_values_when_project_does_not_exist() { logIn(); definitions.addComponent(PropertyDefinition.builder("property").defaultValue("default").build()); propertyDb.insertProperties( newGlobalPropertyDto().setKey("property").setValue("one")); executeAndVerify("unknown", null, "return_global_values.json"); }
@Test public void return_global_values() { logIn(); definitions.addComponent(PropertyDefinition.builder("property").defaultValue("default").build()); propertyDb.insertProperties( // The property is overriding default value newGlobalPropertyDto().setKey("property").setValue("one")); executeAndVerify(null, null, "return_global_values.json"); }
@Test public void should_build_with_predefined_list_of_definitions() { List<PropertyDefinition> list = Arrays.asList( PropertyDefinition.builder("foo").name("Foo").build(), PropertyDefinition.builder("one").name("One").build(), PropertyDefinition.builder("two").name("Two").defaultValue("2").build()); PropertyDefinitions def = new PropertyDefinitions(list); assertProperties(def); }
@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"); }