Skip to content

Commit aac8a1b

Browse files
author
Bilal Al
committed
added tests for httpmodule
1 parent cfdc429 commit aac8a1b

File tree

11 files changed

+712
-473
lines changed

11 files changed

+712
-473
lines changed

okhttp-modules/pom.xml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,6 @@
4343
<artifactId>logging-interceptor</artifactId>
4444
<version>4.12.0</version>
4545
</dependency>
46-
<dependency>
47-
<groupId>org.apache.httpcomponents.client5</groupId>
48-
<artifactId>httpclient5</artifactId>
49-
<version>5.0.3</version>
50-
</dependency>
5146
<dependency>
5247
<groupId>io.split.client</groupId>
5348
<artifactId>java-client</artifactId>

okhttp-modules/src/main/java/io/split/httpmodules/okhttp/OkHttpClientImpl.java

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import io.split.service.SplitHttpClient;
88

99
import okhttp3.*;
10-
import okhttp3.OkHttpClient.Builder;
10+
import okhttp3.OkHttpClient.*;
1111
import okhttp3.Request.*;
1212
import okhttp3.logging.HttpLoggingInterceptor;
1313
import org.slf4j.Logger;
@@ -31,7 +31,7 @@
3131
import java.util.concurrent.TimeUnit;
3232

3333
public class OkHttpClientImpl implements SplitHttpClient {
34-
public final OkHttpClient httpClient;
34+
protected OkHttpClient httpClient;
3535
private static final Logger _log = LoggerFactory.getLogger(OkHttpClientImpl.class);
3636
private static final String HEADER_CACHE_CONTROL_NAME = "Cache-Control";
3737
private static final String HEADER_CACHE_CONTROL_VALUE = "no-cache";
@@ -42,15 +42,26 @@ public class OkHttpClientImpl implements SplitHttpClient {
4242
private static final String HEADER_CLIENT_VERSION = "SplitSDKVersion";
4343
private RequestDecorator _requestDecorator;
4444
private String _apikey;
45-
private SDKMetadata _metadata;
45+
protected SDKMetadata _metadata;
4646

4747
public OkHttpClientImpl(String apiToken, SDKMetadata sdkMetadata, RequestDecorator requestDecorator,
4848
Proxy proxy, String proxyAuthKerberosPrincipalName, boolean debugEnabled,
4949
int readTimeout, int connectionTimeout) throws IOException {
5050
_apikey = apiToken;
5151
_metadata = sdkMetadata;
5252
_requestDecorator = requestDecorator;
53+
setHttpClient(proxy, proxyAuthKerberosPrincipalName, debugEnabled,
54+
readTimeout, connectionTimeout);
55+
}
56+
57+
protected void setHttpClient(Proxy proxy, String proxyAuthKerberosPrincipalName, boolean debugEnabled,
58+
int readTimeout, int connectionTimeout) throws IOException {
59+
httpClient = initializeClient(proxy, proxyAuthKerberosPrincipalName, debugEnabled,
60+
readTimeout, connectionTimeout);
61+
}
5362

63+
protected OkHttpClient initializeClient(Proxy proxy, String proxyAuthKerberosPrincipalName, boolean debugEnabled,
64+
int readTimeout, int connectionTimeout) throws IOException {
5465
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
5566
if (debugEnabled) {
5667
logging.setLevel(HttpLoggingInterceptor.Level.HEADERS);
@@ -66,7 +77,7 @@ public OkHttpClientImpl(String apiToken, SDKMetadata sdkMetadata, RequestDecorat
6677

6778
Authenticator proxyAuthenticator = getProxyAuthenticator(proxyAuthKerberosPrincipalName, kerberosOptions);
6879

69-
httpClient = new okhttp3.OkHttpClient.Builder()
80+
return new okhttp3.OkHttpClient.Builder()
7081
.proxy(proxy)
7182
.readTimeout(readTimeout, TimeUnit.MILLISECONDS)
7283
.connectTimeout(connectionTimeout, TimeUnit.MILLISECONDS)
@@ -83,7 +94,7 @@ public HTTPKerberosAuthInterceptor getProxyAuthenticator(String proxyKerberosPri
8394
@Override
8495
public SplitHttpResponse get(URI uri, FetchOptions options, Map<String, List<String>> additionalHeaders) {
8596
try {
86-
okhttp3.Request.Builder requestBuilder = new okhttp3.Request.Builder();
97+
okhttp3.Request.Builder requestBuilder = getRequestBuilder();
8798
requestBuilder.url(uri.toString());
8899
setBasicHeaders(requestBuilder);
89100
setAdditionalAndDecoratedHeaders(requestBuilder, additionalHeaders);
@@ -135,7 +146,8 @@ public SplitHttpResponse post(URI url, HttpEntity entity,
135146
RequestBody postBody = RequestBody.create(post.getBytes());
136147
requestBuilder.post(postBody);
137148

138-
Request request = getRequest(requestBuilder);
149+
Request request = requestBuilder.build();
150+
System.out.println(request);
139151
_log.debug(String.format("Request Headers: %s", request.headers()));
140152

141153
Response response = httpClient.newCall(request).execute();

okhttp-modules/src/main/java/io/split/httpmodules/okhttp/OkHttpModule.java

Lines changed: 38 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@
1212
import org.slf4j.LoggerFactory;
1313

1414
public class OkHttpModule implements CustomHttpModule {
15-
private static final int DEFAULT_CONNECTION_TIMEOUT = 10000;
16-
private static final int DEFAULT_READ_TIMEOUT = 10000;
17-
private final boolean _debugEnabled;
18-
private final int _connectionTimeout;
19-
private final int _readTimeout;
15+
private static final int DEFAULT_CONNECTION_TIMEOUT = 15000;
16+
private static final int DEFAULT_READ_TIMEOUT = 15000;
17+
private final Boolean _debugEnabled;
18+
private final Integer _connectionTimeout;
19+
private final Integer _readTimeout;
2020
private final Proxy _proxy;
2121
private final ProxyAuthScheme _proxyAuthScheme;
2222
private final String _proxyAuthKerberosPrincipalName;
@@ -29,9 +29,9 @@ public static Builder builder() {
2929
private OkHttpModule(ProxyAuthScheme proxyAuthScheme,
3030
String proxyAuthKerberosPrincipalName,
3131
Proxy proxy,
32-
int connectionTimeout,
33-
int readTimeout,
34-
boolean debugEnabled) {
32+
Integer connectionTimeout,
33+
Integer readTimeout,
34+
Boolean debugEnabled) {
3535
_proxyAuthScheme = proxyAuthScheme;
3636
_proxyAuthKerberosPrincipalName = proxyAuthKerberosPrincipalName;
3737
_proxy = proxy;
@@ -54,24 +54,24 @@ public ProxyAuthScheme proxyAuthScheme() {
5454
return _proxyAuthScheme;
5555
}
5656
public String proxyKerberosPrincipalName() { return _proxyAuthKerberosPrincipalName; }
57-
public int connectionTimeout() {
57+
public Integer connectionTimeout() {
5858
return _connectionTimeout;
5959
}
60-
public boolean debugEnabled() {
60+
public Boolean debugEnabled() {
6161
return _debugEnabled;
6262
}
63-
public int readTimeout() {
63+
public Integer readTimeout() {
6464
return _readTimeout;
6565
}
6666

6767
public static final class Builder {
68-
private int _connectionTimeout = 15000;
69-
private int _readTimeout = 15000;
68+
private Integer _connectionTimeout = DEFAULT_CONNECTION_TIMEOUT;
69+
private Integer _readTimeout = DEFAULT_READ_TIMEOUT;
7070
private String _proxyHost = "localhost";
7171
private int _proxyPort = -1;
7272
private ProxyAuthScheme _proxyAuthScheme = null;
7373
private String _proxyAuthKerberosPrincipalName = null;
74-
private boolean _debugEnabled = false;
74+
private Boolean _debugEnabled = false;
7575

7676
public Builder() {
7777
}
@@ -133,6 +133,28 @@ public Builder proxyAuthKerberosPrincipalName(String proxyAuthKerberosPrincipalN
133133
return this;
134134
}
135135

136+
/**
137+
* HTTP Connection Timeout
138+
*
139+
* @param connectionTimeout
140+
* @return this builder
141+
*/
142+
public Builder connectionTimeout(int connectionTimeout) {
143+
_connectionTimeout = connectionTimeout;
144+
return this;
145+
}
146+
147+
/**
148+
* HTTP Read Timeout
149+
*
150+
* @param readTimeout
151+
* @return this builder
152+
*/
153+
public Builder readTimeout(int readTimeout) {
154+
_readTimeout = readTimeout;
155+
return this;
156+
}
157+
136158
private void verifyAuthScheme() {
137159
if (_proxyAuthScheme == ProxyAuthScheme.KERBEROS) {
138160
if (proxy() == null) {
@@ -145,10 +167,10 @@ private void verifyAuthScheme() {
145167
}
146168

147169
private void verifyTimeouts() {
148-
if (_connectionTimeout <= 0 || _connectionTimeout > DEFAULT_CONNECTION_TIMEOUT) {
170+
if (_connectionTimeout <= 0) {
149171
_connectionTimeout = DEFAULT_CONNECTION_TIMEOUT;
150172
}
151-
if (_readTimeout <= 0 || _readTimeout > DEFAULT_READ_TIMEOUT) {
173+
if (_readTimeout <= 0) {
152174
_readTimeout = DEFAULT_READ_TIMEOUT;
153175
}
154176
}

okhttp-modules/src/test/java/io/split/httpmodules/okhttp/HTTPKerberosAuthIntercepterTest.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package io.split.httpmodules.okhttp;
22

3-
import io.split.httpmodules.okhttp.HTTPKerberosAuthInterceptor;
43
import org.junit.Test;
54
import org.junit.runner.RunWith;
65
import org.powermock.api.mockito.PowerMockito;
@@ -29,7 +28,6 @@
2928
@RunWith(PowerMockRunner.class)
3029
@PrepareForTest(HTTPKerberosAuthInterceptor.class)
3130
public class HTTPKerberosAuthIntercepterTest {
32-
/*
3331
@Test
3432
public void testBasicFlow() throws Exception {
3533
System.setProperty("java.security.krb5.conf", "src/test/resources/krb5.conf");
@@ -64,7 +62,7 @@ public void testBasicFlow() throws Exception {
6462
okhttp3.Request request = kerberosAuthInterceptor.authenticate(null, response);
6563
assertThat(request.headers("Proxy-authorization"), is(equalTo(Arrays.asList("Negotiate secured-token"))));
6664
}
67-
65+
/*
6866
@Test
6967
public void testKerberosLoginConfiguration() {
7068
Map<String, String> kerberosOptions = new HashMap<String, String>();
@@ -84,7 +82,7 @@ public void testKerberosLoginConfigurationException() {
8482
HTTPKerberosAuthInterceptor.KerberosLoginConfiguration kerberosConfig = new HTTPKerberosAuthInterceptor.KerberosLoginConfiguration();
8583
AppConfigurationEntry[] appConfig = kerberosConfig.getAppConfigurationEntry("");
8684
}
87-
85+
*/
8886
@Test
8987
public void testBuildAuthorizationHeader() throws LoginException, PrivilegedActionException {
9088
System.setProperty("java.security.krb5.conf", "src/test/resources/krb5.conf");
@@ -110,6 +108,4 @@ public void testBuildAuthorizationHeader() throws LoginException, PrivilegedActi
110108

111109
assertThat("secret-token", is(equalTo(kerberosAuthInterceptor.buildAuthorizationHeader("bilal"))));
112110
}
113-
114-
*/
115111
}

0 commit comments

Comments
 (0)