/* * Copyright 2017 ThoughtWorks, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.thoughtworks.go.server.domain; import com.google.gson.GsonBuilder; import com.thoughtworks.go.domain.Plugin; import com.thoughtworks.go.plugin.access.common.settings.PluginSettingsConfiguration; import com.thoughtworks.go.plugin.access.common.settings.PluginSettingsProperty; import org.junit.Test; import java.util.HashMap; import java.util.Map; import static org.hamcrest.CoreMatchers.nullValue; import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertThat; public class PluginSettingsTest { public static final String PLUGIN_ID = "plugin-id"; @Test public void shouldPopulateSettingsMapFromPluginFromDB() { Map<String, String> configuration = new HashMap<>(); configuration.put("k1", "v1"); configuration.put("k2", ""); configuration.put("k3", null); Plugin plugin = new Plugin(PLUGIN_ID, toJSON(configuration)); PluginSettings pluginSettings = new PluginSettings(PLUGIN_ID); pluginSettings.populateSettingsMap(plugin); assertThat(pluginSettings.getPluginSettingsKeys().size(), is(3)); assertThat(pluginSettings.getValueFor("k1"), is("v1")); assertThat(pluginSettings.getValueFor("k2"), is("")); assertThat(pluginSettings.getValueFor("k3"), is(nullValue())); } @Test public void shouldPopulateSettingsMapFromPluginFromConfiguration() { PluginSettingsConfiguration configuration = new PluginSettingsConfiguration(); configuration.add(new PluginSettingsProperty("k1", "v1")); configuration.add(new PluginSettingsProperty("k2", "")); configuration.add(new PluginSettingsProperty("k3", null)); PluginSettings pluginSettings = new PluginSettings(PLUGIN_ID); pluginSettings.populateSettingsMap(configuration); assertThat(pluginSettings.getPluginSettingsKeys().size(), is(3)); assertThat(pluginSettings.getValueFor("k1"), is("")); assertThat(pluginSettings.getValueFor("k2"), is("")); assertThat(pluginSettings.getValueFor("k3"), is("")); } @Test public void shouldPopulateSettingsMapFromKeyValueMap() { Map<String, String> parameterMap = new HashMap<>(); parameterMap.put("k1", "v1"); parameterMap.put("k2", ""); parameterMap.put("k3", null); PluginSettings pluginSettings = new PluginSettings(PLUGIN_ID); pluginSettings.populateSettingsMap(parameterMap); assertThat(pluginSettings.getPluginSettingsKeys().size(), is(3)); assertThat(pluginSettings.getValueFor("k1"), is("v1")); assertThat(pluginSettings.getValueFor("k2"), is("")); assertThat(pluginSettings.getValueFor("k3"), is(nullValue())); } @Test public void shouldGetSettingsMapAsKeyValueMap() { Map<String, String> parameterMap = new HashMap<>(); parameterMap.put("k1", "v1"); parameterMap.put("k2", ""); parameterMap.put("k3", null); PluginSettings pluginSettings = new PluginSettings(PLUGIN_ID); pluginSettings.populateSettingsMap(parameterMap); Map<String, String> settingsAsKeyValuePair = pluginSettings.getSettingsAsKeyValuePair(); assertThat(settingsAsKeyValuePair.size(), is(3)); assertThat(settingsAsKeyValuePair.get("k1"), is("v1")); assertThat(settingsAsKeyValuePair.get("k2"), is("")); assertThat(settingsAsKeyValuePair.get("k3"), is(nullValue())); } @Test public void shouldPopulateSettingsMapWithErrorsCorrectly() { PluginSettings pluginSettings = new PluginSettings(PLUGIN_ID); pluginSettings.populateErrorMessageFor("k1", "e1"); pluginSettings.populateErrorMessageFor("k2", ""); pluginSettings.populateErrorMessageFor("k3", null); assertThat(pluginSettings.getPluginSettingsKeys().size(), is(3)); assertThat(pluginSettings.getErrorFor("k1"), is("e1")); assertThat(pluginSettings.getErrorFor("k2"), is("")); assertThat(pluginSettings.getErrorFor("k3"), is(nullValue())); } @Test public void shouldPopulateHasErrorsCorrectly() { PluginSettings pluginSettings = new PluginSettings(PLUGIN_ID); assertThat(pluginSettings.hasErrors(), is(false)); pluginSettings.populateErrorMessageFor("k1", "e1"); assertThat(pluginSettings.hasErrors(), is(true)); } @Test public void shouldCreatePluginFromConfigurationCorrectly() { Map<String, String> parameterMap = new HashMap<>(); parameterMap.put("k1", "v1"); parameterMap.put("k2", ""); parameterMap.put("k3", null); PluginSettings pluginSettings = new PluginSettings(PLUGIN_ID); pluginSettings.populateSettingsMap(parameterMap); PluginSettingsConfiguration configuration = pluginSettings.toPluginSettingsConfiguration(); assertThat(configuration.size(), is(3)); assertThat(configuration.get("k1").getValue(), is("v1")); assertThat(configuration.get("k2").getValue(), is("")); assertThat(configuration.get("k3").getValue(), is(nullValue())); } private String toJSON(Map<String, String> map) { return new GsonBuilder().serializeNulls().create().toJson(map); } }