package com.thoughtworks.go.plugin.access.authorization; import com.thoughtworks.go.plugin.api.info.PluginDescriptor; import com.thoughtworks.go.plugin.domain.authorization.AuthorizationPluginInfo; import com.thoughtworks.go.plugin.domain.authorization.Capabilities; import com.thoughtworks.go.plugin.domain.authorization.SupportedAuthType; import org.junit.Before; import org.junit.Test; import java.util.Set; import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; public class AuthorizationMetadataStoreTest { private AuthorizationMetadataStore store; private AuthorizationPluginInfo plugin1; private AuthorizationPluginInfo plugin2; private AuthorizationPluginInfo plugin3; @Before public void setUp() throws Exception { store = new AuthorizationMetadataStore(); plugin1 = pluginInfo("plugin-1", SupportedAuthType.Web); plugin2 = pluginInfo("plugin-2", SupportedAuthType.Password); plugin3 = pluginInfo("plugin-3", SupportedAuthType.Web); store.setPluginInfo(plugin1); store.setPluginInfo(plugin2); store.setPluginInfo(plugin3); } @Test public void shouldGetPluginsThatSupportWebBasedAuthorization() { Set<AuthorizationPluginInfo> pluginsThatSupportsWebBasedAuthentication = store.getPluginsThatSupportsWebBasedAuthentication(); assertThat(pluginsThatSupportsWebBasedAuthentication.size(), is(2)); assertThat(pluginsThatSupportsWebBasedAuthentication.contains(plugin1), is(true)); assertThat(pluginsThatSupportsWebBasedAuthentication.contains(plugin3), is(true)); } @Test public void shouldGetPluginsThatSupportPasswordBasedAuthorization() { Set<AuthorizationPluginInfo> pluginsThatSupportsWebBasedAuthentication = store.getPluginsThatSupportsPasswordBasedAuthentication(); assertThat(pluginsThatSupportsWebBasedAuthentication.size(), is(1)); assertThat(pluginsThatSupportsWebBasedAuthentication.contains(plugin2), is(true)); } private AuthorizationPluginInfo pluginInfo(String pluginId, SupportedAuthType supportedAuthType) { AuthorizationPluginInfo pluginInfo = mock(AuthorizationPluginInfo.class); PluginDescriptor pluginDescriptor = mock(PluginDescriptor.class); when(pluginDescriptor.id()).thenReturn(pluginId); when(pluginInfo.getDescriptor()).thenReturn(pluginDescriptor); Capabilities capabilities = mock(Capabilities.class); when(capabilities.getSupportedAuthType()).thenReturn(supportedAuthType); when(pluginInfo.getCapabilities()).thenReturn(capabilities); return pluginInfo; } }