@Test public void shouldFetchProvidersFromDataManager() { final DataManager dataManager = mock(DataManager.class); final CredentialProviderRegistry registry = new CredentialProviderRegistry(dataManager); final Connector connector = new Connector.Builder().id("test-provider") .putProperty("clientId", new ConfigurationProperty.Builder().addTag(Credentials.CLIENT_ID_TAG).build()) .putProperty("clientSecret", new ConfigurationProperty.Builder().addTag(Credentials.CLIENT_SECRET_TAG).build()) .putConfiguredProperty("clientId", "a-client-id").putConfiguredProperty("clientSecret", "a-client-secret") .build(); when(dataManager.fetch(Connector.class, "test-provider")).thenReturn(connector); assertThat(registry.providerWithId("test-provider")).isInstanceOfSatisfying(TestCredentialProvider.class, p -> { assertThat(p.getProperties().getAppId()).isEqualTo("a-client-id"); assertThat(p.getProperties().getAppSecret()).isEqualTo("a-client-secret"); }); } }
@Test public void shouldFilterOutNonOAuthConnectors() { final Connector connector1 = new Connector.Builder().build(); final Connector connector2 = new Connector.Builder() .putProperty("clientId", new ConfigurationProperty.Builder().addTag(Credentials.CLIENT_ID_TAG).build()) .putConfiguredProperty("clientId", "my-client-id").build(); final Connector connector3 = new Connector.Builder() .putProperty("clientId", new ConfigurationProperty.Builder().addTag(Credentials.CLIENT_ID_TAG).build()).build(); final ListResult<Connector> result = ListResult.of(connector1, connector2, connector3); assertThat(OAuthConnectorFilter.INSTANCE.apply(result)).containsOnly(connector2, connector3); } }
@Test public void shouldOmitHiddenProperties() { final Connector withHiddenProperty = new Connector.Builder().createFrom(connector) .putProperty("theHiddenOne", new ConfigurationProperty.Builder().type("hidden").addTag(Credentials.AUTHENTICATION_URL_TAG).build()) .build(); final OAuthApp oauthApp = OAuthApp.fromConnector(withHiddenProperty); final OAuthApp expected = new OAuthApp.Builder()// .id("connector-id")// .name("Connector")// .icon("svg-icon")// .putProperty("clientId", CLIENT_ID_PROPERTY)// .putProperty("clientSecret", CLIENT_SECRET_PROPERTY)// .putConfiguredProperty("clientId", "client-id")// .putConfiguredProperty("clientSecret", "client-secret")// .build(); assertThat(oauthApp).isEqualTo(expected); }
static Connector mockConnector(final String id) { return new Connector.Builder().id(id) .putProperty("clientId", new ConfigurationProperty.Builder().addTag(Credentials.CLIENT_ID_TAG).build()) .putProperty("clientSecret", new ConfigurationProperty.Builder().addTag(Credentials.CLIENT_SECRET_TAG).build()) .putConfiguredProperty("clientId", "a-client-id") .putConfiguredProperty("clientSecret", "a-client-secret").build(); } }
@Test public void shouldUpdateConnectorWithDefaultValuesIfNoneGiven() { final Connector withHiddenProperty = new Connector.Builder().createFrom(connector) .putProperty("defaulted", new ConfigurationProperty.Builder().type("hidden") .addTag(Credentials.AUTHENTICATION_URL_TAG).defaultValue("I'm a default").build()) .build(); final Connector updated = OAuthApp.fromConnector(withHiddenProperty).update(withHiddenProperty); assertThat(updated.getConfiguredProperties()).containsEntry("defaulted", "I'm a default"); }
@Test public void shouldKeepConnectorConfiguredPropertiesIfNoneGiven() { final Connector withConfiguredProperty = new Connector.Builder().createFrom(connector) .putProperty("configured", new ConfigurationProperty.Builder().type("hidden").addTag(Credentials.AUTHENTICATION_URL_TAG).build()) .putConfiguredProperty("configured", "initial").build(); final Connector updated = OAuthApp.fromConnector(withConfiguredProperty).update(withConfiguredProperty); assertThat(updated.getConfiguredProperties()).containsEntry("configured", "initial"); }
@Test public void shouldSetConfiguredPropertyIfGivenEvenIfConfiguredPropertyOrDefaultExists() { final Connector withHiddenProperty = new Connector.Builder().createFrom(connector) .putProperty("prop", new ConfigurationProperty.Builder().type("hidden") .addTag(Credentials.AUTHENTICATION_URL_TAG).defaultValue("I'm a default").build()) .putConfiguredProperty("prop", "initial").build(); final Connector updated = OAuthApp.fromConnector(withHiddenProperty).update( new Connector.Builder().createFrom(withHiddenProperty).putConfiguredProperty("prop", "new-value").build()); assertThat(updated.getConfiguredProperties()).containsEntry("prop", "new-value"); }