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 }