Search in sources :

Example 1 with SelfServiceConfig

use of uk.gov.ida.hub.config.configuration.SelfServiceConfig in project verify-hub by alphagov.

the class S3ConfigSourceTest method getRemoteConfigOnlyRetrievesNewContentWhenLastModifiedChanges.

@Test
public void getRemoteConfigOnlyRetrievesNewContentWhenLastModifiedChanges() throws Exception {
    SelfServiceConfig selfServiceConfig = objectMapper.readValue(selfServiceConfigShortCacheJson, SelfServiceConfig.class);
    when(s3Client.getObject(new GetObjectRequest(BUCKET_NAME, OBJECT_KEY))).thenReturn(s3Object);
    when(s3Object.getObjectContent()).thenReturn(getObjectStream("/remote-test-config.json"));
    when(s3Object.getObjectMetadata()).thenReturn(objectMetadata);
    when(objectMetadata.getLastModified()).thenReturn(Date.from(Instant.now().minusMillis(10000)));
    S3ConfigSource testSource = new S3ConfigSource(selfServiceConfig, s3Client, objectMapper);
    var testCacheLoader = testSource.getCacheLoader();
    RemoteConfigCollection result1 = testSource.getRemoteConfig();
    ListenableFuture<RemoteConfigCollection> task = testCacheLoader.reload("test", result1);
    while (!task.isDone()) {
        Thread.yield();
    }
    RemoteConfigCollection result2 = task.get();
    assertThat((result1 == result2)).isTrue();
    verify(s3Object, times(1)).getObjectContent();
    when(s3Client.getObject(any(GetObjectRequest.class))).thenReturn(s3Object2);
    when(s3Object2.getObjectMetadata()).thenReturn(objectMetadata2);
    when(s3Object2.getObjectContent()).thenReturn(getObjectStream("/remote-test-config.json"));
    when(objectMetadata2.getLastModified()).thenReturn(Date.from(Instant.now()));
    ListenableFuture<RemoteConfigCollection> task2 = testCacheLoader.reload("test", result1);
    while (!task2.isDone()) {
        Thread.yield();
    }
    verify(s3Object2, times(1)).getObjectContent();
    verify(objectMetadata2, times(1)).getLastModified();
}
Also used : RemoteConfigCollection(uk.gov.ida.hub.config.domain.remoteconfig.RemoteConfigCollection) SelfServiceConfig(uk.gov.ida.hub.config.configuration.SelfServiceConfig) GetObjectRequest(com.amazonaws.services.s3.model.GetObjectRequest) Test(org.junit.jupiter.api.Test)

Example 2 with SelfServiceConfig

use of uk.gov.ida.hub.config.configuration.SelfServiceConfig in project verify-hub by alphagov.

the class S3ConfigSourceTest method getRemoteConfigReturnsRemoteConfigCollection.

@Test
public /**
 * Tests to make sure we can process the JSON to an object
 */
void getRemoteConfigReturnsRemoteConfigCollection() throws Exception {
    SelfServiceConfig selfServiceConfig = objectMapper.readValue(selfServiceConfigEnabledJson, SelfServiceConfig.class);
    when(s3Client.getObject(new GetObjectRequest(BUCKET_NAME, OBJECT_KEY))).thenReturn(s3Object);
    when(s3Object.getObjectContent()).thenReturn(getObjectStream("/remote-test-config.json"));
    when(s3Object.getObjectMetadata()).thenReturn(objectMetadata);
    when(objectMetadata.getLastModified()).thenReturn(new Date());
    S3ConfigSource testSource = new S3ConfigSource(selfServiceConfig, s3Client, objectMapper);
    RemoteConfigCollection result = testSource.getRemoteConfig();
    Map<String, RemoteMatchingServiceConfig> msConfigs = result.getMatchingServiceAdapters();
    assertThat(msConfigs.size()).isEqualTo(3);
    assertThat(msConfigs.get("https://msa.bananaregistry.test.com").getName()).isEqualTo("Banana Registry MSA");
    assertThat(msConfigs.get("https://msa.bananaregistry.test.com").getEncryptionCertificate()).contains(CERT_MSA_BANANA_ENCRYPTION);
    assertThat(msConfigs.get("https://msa.bananaregistry.test.com").getSignatureVerificationCertificates().size()).isEqualTo(1);
    assertThat(msConfigs.get("https://msa.bananaregistry.test.com").getSignatureVerificationCertificates().get(0)).contains(CERT_MSA_BANANA_SIGNING);
    Map<String, RemoteServiceProviderConfig> spConfigs = result.getServiceProviders();
    assertThat(spConfigs.size()).isEqualTo(3);
    RemoteServiceProviderConfig spConfig2 = spConfigs.get("2");
    assertThat(spConfig2.getName()).isEqualTo("Apple Registry VSP");
    assertThat(spConfig2.getSignatureVerificationCertificates().size()).isEqualTo(1);
    assertThat(spConfig2.getSignatureVerificationCertificates().get(0)).contains(CERT_VSP_APPLE_SIGNING);
    RemoteServiceProviderConfig spConfig3 = spConfigs.get("3");
    assertThat(spConfig3.getName()).isEqualTo("Banana Registry VSP");
    assertThat(spConfig3.getSignatureVerificationCertificates().size()).isEqualTo(1);
    assertThat(spConfig3.getSignatureVerificationCertificates().get(0)).contains(CERT_VSP_BANANA_SIGNING);
}
Also used : RemoteConfigCollection(uk.gov.ida.hub.config.domain.remoteconfig.RemoteConfigCollection) SelfServiceConfig(uk.gov.ida.hub.config.configuration.SelfServiceConfig) RemoteMatchingServiceConfig(uk.gov.ida.hub.config.domain.remoteconfig.RemoteMatchingServiceConfig) RemoteServiceProviderConfig(uk.gov.ida.hub.config.domain.remoteconfig.RemoteServiceProviderConfig) GetObjectRequest(com.amazonaws.services.s3.model.GetObjectRequest) Date(java.util.Date) Test(org.junit.jupiter.api.Test)

Example 3 with SelfServiceConfig

use of uk.gov.ida.hub.config.configuration.SelfServiceConfig in project verify-hub by alphagov.

the class S3ConfigSourceTest method getRemoteConfigReturnsCachedConfigWhenRepeatedlyCalled.

@Test
public void getRemoteConfigReturnsCachedConfigWhenRepeatedlyCalled() throws IOException {
    SelfServiceConfig selfServiceConfig = objectMapper.readValue(selfServiceConfigEnabledJson, SelfServiceConfig.class);
    when(s3Client.getObject(new GetObjectRequest(BUCKET_NAME, OBJECT_KEY))).thenReturn(s3Object);
    when(s3Object.getObjectContent()).thenReturn(getObjectStream("/remote-test-config.json"));
    when(s3Object.getObjectMetadata()).thenReturn(objectMetadata);
    when(objectMetadata.getLastModified()).thenReturn(new Date());
    S3ConfigSource testSource = new S3ConfigSource(selfServiceConfig, s3Client, objectMapper);
    RemoteConfigCollection result1 = testSource.getRemoteConfig();
    RemoteConfigCollection result2 = testSource.getRemoteConfig();
    verify(s3Object, times(1)).getObjectContent();
    assertThat(result1 == result2);
}
Also used : RemoteConfigCollection(uk.gov.ida.hub.config.domain.remoteconfig.RemoteConfigCollection) SelfServiceConfig(uk.gov.ida.hub.config.configuration.SelfServiceConfig) GetObjectRequest(com.amazonaws.services.s3.model.GetObjectRequest) Date(java.util.Date) Test(org.junit.jupiter.api.Test)

Example 4 with SelfServiceConfig

use of uk.gov.ida.hub.config.configuration.SelfServiceConfig in project verify-hub by alphagov.

the class S3ConfigSourceTest method getRemoteConfigReturnsEmptyRemoteConfigWhenSelfServiceDisabled.

@Test
public void getRemoteConfigReturnsEmptyRemoteConfigWhenSelfServiceDisabled() throws IOException {
    SelfServiceConfig selfServiceConfig = objectMapper.readValue(selfServiceConfigDisabledJson, SelfServiceConfig.class);
    S3ConfigSource testSource = new S3ConfigSource(selfServiceConfig, null, objectMapper);
    RemoteConfigCollection result = testSource.getRemoteConfig();
    assertThat(result).isNotNull();
    assertThat(result.getServiceProviders().size()).isEqualTo(0);
    assertThat(result.getMatchingServiceAdapters().size()).isEqualTo(0);
    assertThat(result.getConnectedServices().size()).isEqualTo(0);
}
Also used : RemoteConfigCollection(uk.gov.ida.hub.config.domain.remoteconfig.RemoteConfigCollection) SelfServiceConfig(uk.gov.ida.hub.config.configuration.SelfServiceConfig) Test(org.junit.jupiter.api.Test)

Aggregations

Test (org.junit.jupiter.api.Test)4 SelfServiceConfig (uk.gov.ida.hub.config.configuration.SelfServiceConfig)4 RemoteConfigCollection (uk.gov.ida.hub.config.domain.remoteconfig.RemoteConfigCollection)4 GetObjectRequest (com.amazonaws.services.s3.model.GetObjectRequest)3 Date (java.util.Date)2 RemoteMatchingServiceConfig (uk.gov.ida.hub.config.domain.remoteconfig.RemoteMatchingServiceConfig)1 RemoteServiceProviderConfig (uk.gov.ida.hub.config.domain.remoteconfig.RemoteServiceProviderConfig)1