From 4d1cc27c39acd47fbaba9e4a071c26ff26b99c4d Mon Sep 17 00:00:00 2001 From: Shaun Ford Date: Wed, 19 Jul 2017 12:08:41 -0700 Subject: [PATCH] Add client version header to all HTTP calls --- gradle.properties | 2 +- gradle/dependencies.gradle | 2 +- .../client/DefaultCerberusClientFactory.java | 21 +++++++++++--- .../DefaultCerberusClientFactoryTest.java | 29 +++++++++++++++++++ 4 files changed, 48 insertions(+), 6 deletions(-) create mode 100644 src/test/java/com/nike/cerberus/client/DefaultCerberusClientFactoryTest.java diff --git a/gradle.properties b/gradle.properties index 4b06440..cab3a17 100644 --- a/gradle.properties +++ b/gradle.properties @@ -13,6 +13,6 @@ # See the License for the specific language governing permissions and # limitations under the License. # -version=2.3.0 +version=2.4.0 groupId=com.nike artifactId=cerberus-client diff --git a/gradle/dependencies.gradle b/gradle/dependencies.gradle index 0177919..53e4187 100644 --- a/gradle/dependencies.gradle +++ b/gradle/dependencies.gradle @@ -19,7 +19,7 @@ repositories { } def AWS_SDK_VERSION = '1.11.123' -def VAULT_CLIENT_COORDINATES = "com.nike:vault-client:1.3.0" +def VAULT_CLIENT_COORDINATES = "com.nike:vault-client:1.5.0" //noinspection GroovyAssignabilityCheck dependencies { diff --git a/src/main/java/com/nike/cerberus/client/DefaultCerberusClientFactory.java b/src/main/java/com/nike/cerberus/client/DefaultCerberusClientFactory.java index 447814d..75c841e 100644 --- a/src/main/java/com/nike/cerberus/client/DefaultCerberusClientFactory.java +++ b/src/main/java/com/nike/cerberus/client/DefaultCerberusClientFactory.java @@ -24,6 +24,9 @@ import com.nike.vault.client.VaultClientFactory; import com.nike.vault.client.auth.VaultCredentialsProviderChain; +import java.util.HashMap; +import java.util.Map; + /** * Client factory for creating a Vault client with a URL resolver and credentials provider specific to Cerberus. */ @@ -36,8 +39,13 @@ public final class DefaultCerberusClientFactory { * @return Vault client */ public static VaultClient getClient() { - return VaultClientFactory.getClient(new DefaultCerberusUrlResolver(), - new DefaultCerberusCredentialsProviderChain()); + final Map defaultHeaders = new HashMap<>(); + defaultHeaders.put(ClientVersion.CERBERUS_CLIENT_HEADER, ClientVersion.getClientHeaderValue()); + + return VaultClientFactory.getClient( + new DefaultCerberusUrlResolver(), + new DefaultCerberusCredentialsProviderChain(), + defaultHeaders); } /** @@ -49,11 +57,16 @@ public static VaultClient getClient() { * @return Vault client */ public static VaultClient getClientForLambda(final String invokedFunctionArn) { + final Map defaultHeaders = new HashMap<>(); + defaultHeaders.put(ClientVersion.CERBERUS_CLIENT_HEADER, ClientVersion.getClientHeaderValue()); + final DefaultCerberusUrlResolver urlResolver = new DefaultCerberusUrlResolver(); - return VaultClientFactory.getClient(urlResolver, + return VaultClientFactory.getClient( + urlResolver, new VaultCredentialsProviderChain( new EnvironmentCerberusCredentialsProvider(), new SystemPropertyCerberusCredentialsProvider(), - new LambdaRoleVaultCredentialsProvider(urlResolver, invokedFunctionArn))); + new LambdaRoleVaultCredentialsProvider(urlResolver, invokedFunctionArn)), + defaultHeaders); } } diff --git a/src/test/java/com/nike/cerberus/client/DefaultCerberusClientFactoryTest.java b/src/test/java/com/nike/cerberus/client/DefaultCerberusClientFactoryTest.java new file mode 100644 index 0000000..55421d6 --- /dev/null +++ b/src/test/java/com/nike/cerberus/client/DefaultCerberusClientFactoryTest.java @@ -0,0 +1,29 @@ +package com.nike.cerberus.client; + +import com.nike.vault.client.VaultClient; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +/** + * Tests the DefaultCerberusClientFactory class + */ +public class DefaultCerberusClientFactoryTest { + + @Test + public void test_that_getClient_adds_client_version_as_a_default_header() { + VaultClient result = DefaultCerberusClientFactory.getClient(); + assertEquals( + ClientVersion.getClientHeaderValue(), + result.getDefaultHeaders().get(ClientVersion.CERBERUS_CLIENT_HEADER)); + } + + @Test + public void test_that_getClientForLambda_adds_client_version_as_a_default_header() { + VaultClient result = DefaultCerberusClientFactory.getClientForLambda("arn:aws:lambda:us-west-2:000000000000:function:name:qualifier"); + assertEquals( + ClientVersion.getClientHeaderValue(), + result.getDefaultHeaders().get(ClientVersion.CERBERUS_CLIENT_HEADER)); + } + +} \ No newline at end of file