Skip to content
This repository was archived by the owner on Jan 12, 2024. It is now read-only.

Commit 746c69f

Browse files
authored
feat: added Junit tests and improved coverage (#100)
1 parent a57f0aa commit 746c69f

7 files changed

+218
-2
lines changed

gradle.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,6 @@
1313
# See the License for the specific language governing permissions and
1414
# limitations under the License.
1515
#
16-
version=7.4.5
16+
version=7.4.6
1717
groupId=com.nike
1818
artifactId=cerberus-client

src/test/java/com/nike/cerberus/client/CerberusClientFactoryTest.java

+28
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import com.nike.cerberus.client.auth.TokenCerberusCredentials;
2020
import com.nike.cerberus.client.auth.CerberusCredentials;
2121
import com.nike.cerberus.client.auth.CerberusCredentialsProvider;
22+
import org.apache.commons.logging.Log;
2223
import org.junit.Test;
2324

2425
import java.util.HashMap;
@@ -52,6 +53,15 @@ public void test_get_client_uses_url_and_creds_provider() {
5253
assertThat(client.getCredentialsProvider().getCredentials().getToken()).isEqualTo(TOKEN);
5354
}
5455

56+
@Test
57+
public void test_get_client_uses_url_and_creds_provider_max_requests_per_host() {
58+
final CerberusClient client = CerberusClientFactory.getClient(url, credentialsProvider, 3);
59+
assertThat(client).isNotNull();
60+
assertThat(client.getCerberusUrl().url().toString()).isEqualTo(url);
61+
assertThat(client.getCredentialsProvider()).isNotNull();
62+
assertThat(client.getCredentialsProvider().getCredentials().getToken()).isEqualTo(TOKEN);
63+
}
64+
5565
@Test
5666
public void test_get_client_uses_default_headers() {
5767
final String headerKey = "HeaderKey";
@@ -67,6 +77,15 @@ public void test_get_client_uses_default_headers() {
6777
assertThat(client.getDefaultHeaders().get(headerKey)).isEqualTo(headerValue);
6878
}
6979

80+
@Test(expected = IllegalArgumentException.class)
81+
public void test_get_client_uses_default_as_null_throws_illegalArgument_exception() {
82+
final String headerKey = "HeaderKey";
83+
final String headerValue = "header value";
84+
final Map<String, String> defaultHeaders = new HashMap<>();
85+
defaultHeaders.put(headerKey, headerValue);
86+
CerberusClientFactory.getClient(url, credentialsProvider, null);
87+
}
88+
7089
@Test
7190
public void test_get_admin_client_uses_all_parameters() {
7291
final String headerKey = "HeaderKey";
@@ -82,4 +101,13 @@ public void test_get_admin_client_uses_all_parameters() {
82101
assertThat(client.getDefaultHeaders().get(headerKey)).isEqualTo(headerValue);
83102
}
84103

104+
@Test(expected = IllegalArgumentException.class)
105+
public void test_get_admin_client_null_default_headers_throws_illegal_argument_exception() {
106+
final String headerKey = "HeaderKey";
107+
final String headerValue = "header value";
108+
final Map<String, String> defaultHeaders = new HashMap<>();
109+
defaultHeaders.put(headerKey, headerValue);
110+
CerberusClientFactory.getClient(url, credentialsProvider, 100, null);
111+
}
112+
85113
}

src/test/java/com/nike/cerberus/client/DefaultCerberusClientFactoryTest.java

+24
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,19 @@
1818

1919
import org.junit.Test;
2020

21+
import javax.net.ssl.SSLSocketFactory;
22+
import javax.net.ssl.TrustManagerFactory;
23+
import javax.net.ssl.X509TrustManager;
24+
import java.security.KeyStore;
25+
import java.security.KeyStoreException;
26+
import java.security.NoSuchAlgorithmException;
27+
2128
import static org.junit.Assert.assertEquals;
2229

2330
/**
2431
* Tests the DefaultCerberusClientFactory class
2532
*/
33+
2634
public class DefaultCerberusClientFactoryTest {
2735

2836
@Test
@@ -35,4 +43,20 @@ public void test_that_getClient_adds_client_version_as_a_default_header() {
3543
result.getDefaultHeaders().get(ClientVersion.CERBERUS_CLIENT_HEADER));
3644
}
3745

46+
@Test
47+
public void test_that_getClient_adds_client_version_as_a_default_header_and_returns_CerberusClientFactory() throws NoSuchAlgorithmException, KeyStoreException {
48+
String region = "us-west-2";
49+
String url = "url";
50+
SSLSocketFactory sslSocketFactory =(SSLSocketFactory) SSLSocketFactory.getDefault();
51+
TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
52+
trustManagerFactory.init((KeyStore) null);
53+
54+
CerberusClient result = DefaultCerberusClientFactory.getClient(url, region, sslSocketFactory, (X509TrustManager)trustManagerFactory.getTrustManagers()[0]);
55+
56+
assertEquals(
57+
ClientVersion.getClientHeaderValue(),
58+
result.getDefaultHeaders().get(ClientVersion.CERBERUS_CLIENT_HEADER));
59+
}
60+
61+
3862
}

src/test/java/com/nike/cerberus/client/auth/DefaultCerberusCredentialsProviderChainTest.java

+18
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
package com.nike.cerberus.client.auth;
1818

19+
import okhttp3.OkHttpClient;
20+
import org.junit.Assert;
1921
import org.junit.Before;
2022
import org.junit.Test;
2123
import org.junit.runner.RunWith;
@@ -43,6 +45,10 @@ public class DefaultCerberusCredentialsProviderChainTest {
4345

4446
private static final String url = "url";
4547

48+
private static final String xCerberusClientOverride = "xCerberusClientOverride";
49+
50+
private static final OkHttpClient httpClient = new OkHttpClient();
51+
4652
private DefaultCerberusCredentialsProviderChain credentialsProviderChain;
4753

4854
@Before
@@ -73,4 +79,16 @@ public void sys_value_set_if_env_is_not_set() {
7379
assertThat(credentials).isNotNull();
7480
assertThat(credentials.getToken()).isEqualTo(SYS_VALUE);
7581
}
82+
83+
@Test
84+
public void testCreatDefaultCerberusCredentialsProviderChainReturnsValidObject() {
85+
DefaultCerberusCredentialsProviderChain credentialsProviderChain = new DefaultCerberusCredentialsProviderChain(url, region, xCerberusClientOverride);
86+
Assert.assertNotNull(credentialsProviderChain);
87+
}
88+
89+
@Test
90+
public void testCreatDefaultCerberusCredentialsProviderChainWithHttpClientReturnsValidObject() {
91+
DefaultCerberusCredentialsProviderChain credentialsProviderChain = new DefaultCerberusCredentialsProviderChain(url, region, httpClient);
92+
Assert.assertNotNull(credentialsProviderChain);
93+
}
7694
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
2+
package com.nike.cerberus.client.auth.aws;
3+
4+
import com.nike.cerberus.client.CerberusServerException;
5+
import com.nike.cerberus.client.auth.CerberusCredentials;
6+
import com.nike.cerberus.client.auth.TokenCerberusCredentials;
7+
import okhttp3.*;
8+
import org.junit.Assert;
9+
import org.junit.Before;
10+
import org.junit.Test;
11+
import org.junit.runner.RunWith;
12+
import org.mockito.Mockito;
13+
import org.powermock.core.classloader.annotations.PowerMockIgnore;
14+
import org.powermock.modules.junit4.PowerMockRunner;
15+
16+
import java.io.IOException;
17+
18+
import static org.assertj.core.api.Assertions.assertThat;
19+
20+
@RunWith(PowerMockRunner.class)
21+
@PowerMockIgnore("javax.net.ssl.*")
22+
public class BaseAwsCredentialsProviderTest {
23+
24+
private TokenCerberusCredentials credentials;
25+
private OkHttpClient httpClient;
26+
private Call call;
27+
28+
29+
@Before
30+
public void setup(){
31+
credentials = Mockito.mock(TokenCerberusCredentials.class);
32+
httpClient = Mockito.mock(OkHttpClient.class);
33+
call = Mockito.mock(Call.class);
34+
}
35+
36+
@Test
37+
public void test_getCredentials(){
38+
BaseAwsCredentialsProvider baseAwsCredentialsProvider = new BaseAwsCredentialsProvider("http://testurl") {
39+
@Override
40+
protected void authenticate() {
41+
this.credentials = new TokenCerberusCredentials("token-value");
42+
}
43+
};
44+
CerberusCredentials credentials = baseAwsCredentialsProvider.getCredentials();
45+
Assert.assertNotNull(credentials);
46+
assertThat(credentials.getToken()).isEqualTo("token-value");
47+
}
48+
@Test
49+
public void test_getCredentials_not_empty(){
50+
Mockito.when(credentials.getToken()).thenReturn("test-token");
51+
BaseAwsCredentialsProvider baseAwsCredentialsProvider = new BaseAwsCredentialsProvider("http://testurl","test-value") {
52+
@Override
53+
protected void authenticate() {
54+
55+
}
56+
};
57+
baseAwsCredentialsProvider.credentials = credentials;
58+
59+
CerberusCredentials credentials = baseAwsCredentialsProvider.getCredentials();
60+
Assert.assertNotNull(credentials);
61+
assertThat(credentials.getToken()).isEqualTo("test-token");
62+
}
63+
64+
@Test
65+
public void test_executeRequestWithRetry() throws Exception{
66+
Mockito.when(httpClient.newCall(Mockito.any())).thenReturn(call);
67+
Request request = new Request.Builder().url("http://testurl").build();
68+
69+
Response response = new Response.Builder().request(request).protocol(Protocol.HTTP_1_0).code(200).message("response").build();
70+
Mockito.when(call.execute()).thenReturn(response);
71+
BaseAwsCredentialsProvider baseAwsCredentialsProvider = new BaseAwsCredentialsProvider("http://testurl",httpClient) {
72+
@Override
73+
protected void authenticate() {
74+
75+
}
76+
};
77+
response = baseAwsCredentialsProvider.executeRequestWithRetry(null, 1,1);
78+
Assert.assertNotNull(response);
79+
}
80+
81+
@Test(expected = IOException.class)
82+
public void test_executeRequestWithRetry_exception() throws Exception{
83+
Mockito.when(httpClient.newCall(Mockito.any())).thenReturn(call);
84+
Request request = new Request.Builder().url("http://testurl").build();
85+
86+
Response response = new Response.Builder().request(request).protocol(Protocol.HTTP_1_0).code(200).message("response").build();
87+
Mockito.doThrow(new IOException()).when(call).execute();
88+
BaseAwsCredentialsProvider baseAwsCredentialsProvider = new BaseAwsCredentialsProvider("http://testurl",httpClient) {
89+
@Override
90+
protected void authenticate() {
91+
92+
}
93+
};
94+
baseAwsCredentialsProvider.executeRequestWithRetry(request, 1,1);
95+
96+
}
97+
@Test(expected = CerberusServerException.class)
98+
public void test_parseAndThrowErrorResponse() throws Exception{
99+
Mockito.when(httpClient.newCall(Mockito.any())).thenReturn(call);
100+
Request request = new Request.Builder().url("http://testurl").build();
101+
102+
Response response = new Response.Builder().request(request).protocol(Protocol.HTTP_1_0).code(200).message("response").build();
103+
//Mockito.doThrow(new IOException()).when(call).execute();
104+
BaseAwsCredentialsProvider baseAwsCredentialsProvider = new BaseAwsCredentialsProvider("http://testurl",httpClient) {
105+
@Override
106+
protected void authenticate() {
107+
108+
}
109+
};
110+
baseAwsCredentialsProvider.parseAndThrowErrorResponse(200,"response");
111+
}
112+
}
113+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.nike.cerberus.client.auth.aws;
2+
3+
import com.amazonaws.auth.EC2ContainerCredentialsProviderWrapper;
4+
import com.amazonaws.auth.EnvironmentVariableCredentialsProvider;
5+
import com.amazonaws.auth.SystemPropertiesCredentialsProvider;
6+
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
7+
import com.nike.cerberus.client.auth.EnvironmentCerberusCredentialsProvider;
8+
import com.nike.cerberus.client.auth.SystemPropertyCerberusCredentialsProvider;
9+
import com.tngtech.java.junit.dataprovider.DataProviderRunner;
10+
import org.junit.Test;
11+
import org.junit.runner.RunWith;
12+
import org.powermock.core.classloader.annotations.PrepareForTest;
13+
import org.powermock.modules.junit4.PowerMockRunner;
14+
15+
import static com.amazonaws.SDKGlobalConfiguration.ACCESS_KEY_ENV_VAR;
16+
import static org.mockito.Mockito.when;
17+
import static org.powermock.api.mockito.PowerMockito.mockStatic;
18+
19+
@RunWith(PowerMockRunner.class)
20+
@PrepareForTest({EnvironmentVariableCredentialsProvider.class, SystemPropertiesCredentialsProvider.class, ProfileCredentialsProvider.class, EC2ContainerCredentialsProviderWrapper.class})
21+
public class DefaultAWSCredentialsProviderChainDebuggerTest {
22+
23+
@Test
24+
public void test_logExtraDebuggingIfAppropriate(){
25+
mockStatic(System.class);
26+
when(System.getenv("AWS_ACCESS_KEY_ID")).thenReturn("TOKEN");
27+
when(System.getenv("AWS_SECRET_KEY")).thenReturn("secretKey");
28+
when(System.getenv("aws.accessKeyId")).thenReturn("accesskey");
29+
when(System.getenv("aws.secretKey")).thenReturn("aws_secretKey");
30+
DefaultAWSCredentialsProviderChainDebugger defaultAWSCredentialsProviderChainDebugger = new DefaultAWSCredentialsProviderChainDebugger();
31+
defaultAWSCredentialsProviderChainDebugger.logExtraDebuggingIfAppropriate("The security token included in the request is expired.");
32+
}
33+
}

src/test/java/com/nike/cerberus/client/auth/aws/StsCerberusCredentialsProviderTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public class StsCerberusCredentialsProviderTest {
5151

5252
private String cerberusUrl;
5353
private AWSCredentialsProviderChain chain;
54-
private AWSCredentials credentials;
54+
private AWSCredentials credentials ;
5555

5656
@Before
5757
public void setUp() {

0 commit comments

Comments
 (0)