View Javadoc

1   package com.atlassian.asap.service.core.service;
2   
3   import com.atlassian.asap.service.core.spi.AsapConfiguration;
4   import com.google.common.collect.ImmutableMap;
5   import org.junit.Test;
6   
7   import java.util.Map;
8   import java.util.Optional;
9   
10  import static com.atlassian.asap.service.core.service.EnvVarAsapConfiguration.ASAP_AUDIENCE;
11  import static com.atlassian.asap.service.core.service.EnvVarAsapConfiguration.ASAP_ISSUER;
12  import static com.atlassian.asap.service.core.service.EnvVarAsapConfiguration.ASAP_KEY_ID;
13  import static com.atlassian.asap.service.core.service.EnvVarAsapConfiguration.ASAP_PRIVATE_KEY;
14  import static com.atlassian.asap.service.core.service.EnvVarAsapConfiguration.ASAP_PUBLIC_KEY_REPOSITORY_URL;
15  import static org.hamcrest.Matchers.is;
16  import static org.junit.Assert.assertThat;
17  
18  public class EnvVarAsapConfigurationTest {
19      private static final String ISSUER = "micros/refapp";
20      private static final String KEY_ID = "micros/refapp/key";
21      private static final String AUDIENCE = "refapp";
22  
23      @Test
24      public void constructWithEmptyEnv() {
25          AsapConfiguration config = newConfig(ImmutableMap.of());
26          assertThat(config.issuer(), is(ISSUER));
27          assertThat(config.keyId(), is(KEY_ID));
28          assertThat(config.audience(), is(AUDIENCE));
29          assertThat(config.publicKeyRepositoryUrl(), is(""));
30          assertThat(config.privateKeyUrl(), is(""));
31      }
32  
33      @Test
34      public void constructWithSettingsInEnv() {
35          final String issuer = "fred";
36          final String keyId = issuer + "/shhh";
37          final String audience = "ginger";
38          final String publicUrl = "http://public.example.com/";
39          final String privateUrl = "http://private.example.com/";
40  
41          AsapConfiguration config = newConfig(ImmutableMap.of(
42                  ASAP_ISSUER, issuer,
43                  ASAP_KEY_ID, keyId,
44                  ASAP_AUDIENCE, audience,
45                  ASAP_PUBLIC_KEY_REPOSITORY_URL, publicUrl,
46                  ASAP_PRIVATE_KEY, privateUrl));
47  
48          assertThat(config.issuer(), is(issuer));
49          assertThat(config.keyId(), is(keyId));
50          assertThat(config.audience(), is(audience));
51          assertThat(config.publicKeyRepositoryUrl(), is(publicUrl));
52          assertThat(config.privateKeyUrl(), is(privateUrl));
53      }
54  
55      @Test(expected = IllegalStateException.class)
56      public void issuerMustMatchKeyIdWithEmptyEnv() {
57          newConfig(ISSUER, "something/else", AUDIENCE);
58      }
59  
60      @Test(expected = IllegalStateException.class)
61      public void issuerMustMatchKeyIdWithOverrides() {
62          newConfig(ISSUER, KEY_ID, AUDIENCE, ImmutableMap.of(ASAP_KEY_ID, "fred/shhh"));
63      }
64  
65  
66      private EnvVarAsapConfiguration newConfig(Map<String, String> env) {
67          return newConfig(ISSUER, KEY_ID, AUDIENCE, env);
68      }
69  
70      private EnvVarAsapConfiguration newConfig(String defaultIssuer, String defaultKeyId,
71                                                String defaultAudience) {
72          return newConfig(defaultIssuer, defaultKeyId, defaultAudience, ImmutableMap.of());
73      }
74  
75      private EnvVarAsapConfiguration newConfig(String defaultIssuer, String defaultKeyId, String defaultAudience,
76                                                Map<String, String> env) {
77          return new EnvVarAsapConfiguration(defaultIssuer, defaultKeyId, defaultAudience,
78                  varName -> Optional.ofNullable(env.get(varName)));
79      }
80  }