11package io .split .httpmodules .okhttp ;
22
3- import com .sun .tools .javac .util .StringUtils ;
43import org .powermock .api .mockito .PowerMockito ;
54import org .powermock .reflect .Whitebox ;
65
109import io .split .client .impressions .Impression ;
1110import io .split .client .utils .Json ;
1211import io .split .client .utils .SDKMetadata ;
13- import io .split .client .utils .Utils ;
1412import io .split .client .dtos .SplitHttpResponse .Header ;
1513import io .split .engine .common .FetchOptions ;
1614
@@ -58,7 +56,7 @@ public void testGetWithSpecialCharacters() throws IOException, InterruptedExcept
5856 } finally {
5957 br .close ();
6058 }
61- /*
59+
6260 server .enqueue (new MockResponse ().setBody (body ).addHeader ("via" , "HTTP/1.1 s_proxy_rio1" ));
6361 server .start ();
6462 HttpUrl baseUrl = server .url ("/v1/" );
@@ -76,16 +74,16 @@ public void testGetWithSpecialCharacters() throws IOException, InterruptedExcept
7674 Map <String , List <String >> additionalHeaders = Collections .singletonMap ("AdditionalHeader" ,
7775 Collections .singletonList ("add" ));
7876 FetchOptions fetchOptions = new FetchOptions .Builder ().cacheControlHeaders (true ).build ();
77+ RequestDecorator requestDecorator = new RequestDecorator (null );
7978 PowerMockito .doCallRealMethod ().when (okHttpClientImpl ).get (rootTarget , fetchOptions , additionalHeaders );
8079 okhttp3 .Request .Builder requestBuilder = new okhttp3 .Request .Builder ();
8180 requestBuilder .url (rootTarget .toString ());
8281 PowerMockito .doReturn (requestBuilder ).when (okHttpClientImpl ).getRequestBuilder ();
83- PowerMockito.doCallRealMethod().when(okHttpClientImpl).setBasicHeaders(requestBuilder );
82+ PowerMockito .doCallRealMethod ().when (okHttpClientImpl ).buildBasicHeaders ( );
8483 Whitebox .setInternalState (okHttpClientImpl , "_metadata" , metadata ());
8584 Whitebox .setInternalState (okHttpClientImpl , "_apikey" , "qwerty" );
86- PowerMockito.doCallRealMethod().when(okHttpClientImpl).setAdditionalAndDecoratedHeaders(requestBuilder, additionalHeaders);
87- RequestDecorator requestDecorator = new RequestDecorator(null);
88- // Whitebox.setInternalState(okHttpClientImpl, "_requestDecorator", requestDecorator);
85+ Whitebox .setInternalState (okHttpClientImpl , "_decorator" , requestDecorator );
86+ PowerMockito .doCallRealMethod ().when (okHttpClientImpl ).mergeHeaders (buildBasicHeaders (), additionalHeaders );
8987 PowerMockito .doCallRealMethod ().when (okHttpClientImpl ).getResponseHeaders (any ());
9088 PowerMockito .doReturn (requestBuilder .build ()).when (okHttpClientImpl ).getRequest (requestBuilder );
9189 PowerMockito .doCallRealMethod ().when (okHttpClientImpl ).getRequest (requestBuilder );
@@ -148,12 +146,12 @@ public void testGetErrors() throws IOException, InterruptedException {
148146 okhttp3 .Request .Builder requestBuilder = new okhttp3 .Request .Builder ();
149147 requestBuilder .url (rootTarget .toString ());
150148 PowerMockito .doReturn (requestBuilder ).when (okHttpClientImpl ).getRequestBuilder ();
151- PowerMockito.doCallRealMethod().when(okHttpClientImpl).setBasicHeaders(requestBuilder );
149+ PowerMockito .doCallRealMethod ().when (okHttpClientImpl ).buildBasicHeaders ( );
152150 Whitebox .setInternalState (okHttpClientImpl , "_metadata" , metadata ());
153151 Whitebox .setInternalState (okHttpClientImpl , "_apikey" , "qwerty" );
154- PowerMockito.doCallRealMethod().when(okHttpClientImpl).setAdditionalAndDecoratedHeaders(requestBuilder , additionalHeaders);
152+ PowerMockito .doCallRealMethod ().when (okHttpClientImpl ).mergeHeaders ( buildBasicHeaders () , additionalHeaders );
155153 RequestDecorator requestDecorator = new RequestDecorator (null );
156- // Whitebox.setInternalState(okHttpClientImpl, "_requestDecorator ", requestDecorator);
154+ Whitebox .setInternalState (okHttpClientImpl , "_decorator " , requestDecorator );
157155 PowerMockito .doCallRealMethod ().when (okHttpClientImpl ).getResponseHeaders (any ());
158156
159157 SplitHttpResponse splitHttpResponse = okHttpClientImpl .get (rootTarget ,
@@ -215,11 +213,11 @@ public Map<String, List<String>> getHeaderOverrides(RequestContext context) {
215213 okhttp3 .Request .Builder requestBuilder = new okhttp3 .Request .Builder ();
216214 requestBuilder .url (rootTarget .toString ());
217215 PowerMockito .doReturn (requestBuilder ).when (okHttpClientImpl ).getRequestBuilder ();
218- PowerMockito.doCallRealMethod().when(okHttpClientImpl).setBasicHeaders(requestBuilder );
216+ PowerMockito .doCallRealMethod ().when (okHttpClientImpl ).buildBasicHeaders ( );
219217 Whitebox .setInternalState (okHttpClientImpl , "_metadata" , metadata ());
220218 Whitebox .setInternalState (okHttpClientImpl , "_apikey" , "qwerty" );
221- // Whitebox.setInternalState(okHttpClientImpl, "_requestDecorator ", requestDecorator);
222- PowerMockito.doCallRealMethod().when(okHttpClientImpl).setAdditionalAndDecoratedHeaders(requestBuilder , null);
219+ Whitebox .setInternalState (okHttpClientImpl , "_decorator " , requestDecorator );
220+ PowerMockito .doCallRealMethod ().when (okHttpClientImpl ).mergeHeaders ( buildBasicHeaders () , null );
223221 PowerMockito .doCallRealMethod ().when (okHttpClientImpl ).getResponseHeaders (any ());
224222 FetchOptions options = new FetchOptions .Builder ().cacheControlHeaders (true ).build ();
225223
@@ -230,9 +228,9 @@ public Map<String, List<String>> getHeaderOverrides(RequestContext context) {
230228 Headers requestHeaders = request .getHeaders ();
231229
232230 assertThat (requestHeaders .get ("Cache-Control" ), is (equalTo ("no-cache" )));
233- // assertThat(requestHeaders.get("first"), is(equalTo("1")));
234- // assertThat(requestHeaders.values("second"), is(equalTo(Arrays.asList("2.1","2.2"))));
235- // assertThat(requestHeaders.get("third"), is(equalTo("3")));
231+ assertThat (requestHeaders .get ("first" ), is (equalTo ("1" )));
232+ assertThat (requestHeaders .values ("second" ), is (equalTo (Arrays .asList ("2.1" ,"2.2" ))));
233+ assertThat (requestHeaders .get ("third" ), is (equalTo ("3" )));
236234 Assert .assertEquals ("/splitChanges?since=1234567" , request .getPath ());
237235 assertThat (request .getMethod (), is (equalTo ("GET" )));
238236 }
@@ -256,11 +254,11 @@ public void testException() throws URISyntaxException, IOException {
256254 okhttp3 .Request .Builder requestBuilder = new okhttp3 .Request .Builder ();
257255 requestBuilder .url (rootTarget .toString ());
258256 PowerMockito .doReturn (requestBuilder ).when (okHttpClientImpl ).getRequestBuilder ();
259- PowerMockito.doCallRealMethod().when(okHttpClientImpl).setBasicHeaders(requestBuilder );
257+ PowerMockito .doCallRealMethod ().when (okHttpClientImpl ).buildBasicHeaders ( );
260258 Whitebox .setInternalState (okHttpClientImpl , "_metadata" , metadata ());
261259 Whitebox .setInternalState (okHttpClientImpl , "_apikey" , "qwerty" );
262- Whitebox.setInternalState(okHttpClientImpl, "_requestDecorator ", requestDecorator);
263- PowerMockito.doCallRealMethod().when(okHttpClientImpl).setAdditionalAndDecoratedHeaders(requestBuilder , null);
260+ Whitebox .setInternalState (okHttpClientImpl , "_decorator " , requestDecorator );
261+ PowerMockito .doCallRealMethod ().when (okHttpClientImpl ).mergeHeaders ( buildBasicHeaders () , null );
264262 PowerMockito .doCallRealMethod ().when (okHttpClientImpl ).getResponseHeaders (any ());
265263 FetchOptions options = new FetchOptions .Builder ().cacheControlHeaders (true ).build ();
266264
@@ -294,11 +292,11 @@ public void testPost() throws IOException, InterruptedException {
294292 okhttp3 .Request .Builder requestBuilder = new okhttp3 .Request .Builder ();
295293 requestBuilder .url (rootTarget .toString ());
296294 PowerMockito .doReturn (requestBuilder ).when (okHttpClientImpl ).getRequestBuilder ();
297- PowerMockito.doCallRealMethod().when(okHttpClientImpl).setBasicHeaders(requestBuilder );
295+ PowerMockito .doCallRealMethod ().when (okHttpClientImpl ).buildBasicHeaders ( );
298296 Whitebox .setInternalState (okHttpClientImpl , "_metadata" , metadata ());
299297 Whitebox .setInternalState (okHttpClientImpl , "_apikey" , "qwerty" );
300- PowerMockito.doCallRealMethod().when(okHttpClientImpl).setAdditionalAndDecoratedHeaders(requestBuilder , additionalHeaders);
301- // Whitebox.setInternalState(okHttpClientImpl, "_requestDecorator ", requestDecorator);
298+ PowerMockito .doCallRealMethod ().when (okHttpClientImpl ).mergeHeaders ( buildBasicHeaders () , additionalHeaders );
299+ Whitebox .setInternalState (okHttpClientImpl , "_decorator " , requestDecorator );
302300 PowerMockito .doCallRealMethod ().when (okHttpClientImpl ).getResponseHeaders (any ());
303301 // Send impressions
304302 List <TestImpressions > toSend = Arrays .asList (new TestImpressions ("t1" , Arrays .asList (
@@ -358,11 +356,11 @@ public void testPostErrors() throws IOException, InterruptedException {
358356 okhttp3 .Request .Builder requestBuilder = new okhttp3 .Request .Builder ();
359357 requestBuilder .url (rootTarget .toString ());
360358 PowerMockito .doReturn (requestBuilder ).when (okHttpClientImpl ).getRequestBuilder ();
361- PowerMockito.doCallRealMethod().when(okHttpClientImpl).setBasicHeaders(requestBuilder );
359+ PowerMockito .doCallRealMethod ().when (okHttpClientImpl ).buildBasicHeaders ( );
362360 Whitebox .setInternalState (okHttpClientImpl , "_metadata" , metadata ());
363361 Whitebox .setInternalState (okHttpClientImpl , "_apikey" , "qwerty" );
364- PowerMockito.doCallRealMethod().when(okHttpClientImpl).setAdditionalAndDecoratedHeaders(requestBuilder , additionalHeaders);
365- // Whitebox.setInternalState(okHttpClientImpl, "_requestDecorator ", requestDecorator);
362+ PowerMockito .doCallRealMethod ().when (okHttpClientImpl ).mergeHeaders ( buildBasicHeaders () , additionalHeaders );
363+ Whitebox .setInternalState (okHttpClientImpl , "_decorator " , requestDecorator );
366364 PowerMockito .doCallRealMethod ().when (okHttpClientImpl ).getResponseHeaders (any ());
367365
368366 String data = Json .toJson ("<>" );
@@ -394,13 +392,14 @@ public void testPosttException() throws URISyntaxException, IOException {
394392 Collections .singletonList ("OPTIMIZED" ));
395393
396394 okhttp3 .Request .Builder requestBuilder = new okhttp3 .Request .Builder ();
395+ RequestDecorator requestDecorator = new RequestDecorator (null );
397396 requestBuilder .url (rootTarget .toString ());
398397 PowerMockito .doReturn (requestBuilder ).when (okHttpClientImpl ).getRequestBuilder ();
399- PowerMockito.doCallRealMethod().when(okHttpClientImpl).setBasicHeaders(requestBuilder );
398+ PowerMockito .doCallRealMethod ().when (okHttpClientImpl ).buildBasicHeaders ( );
400399 Whitebox .setInternalState (okHttpClientImpl , "_metadata" , metadata ());
401400 Whitebox .setInternalState (okHttpClientImpl , "_apikey" , "qwerty" );
402- PowerMockito.doCallRealMethod().when(okHttpClientImpl).setAdditionalAndDecoratedHeaders(requestBuilder , additionalHeaders);
403- Whitebox.setInternalState(okHttpClientImpl, "_requestDecorator ", requestDecorator);
401+ PowerMockito .doCallRealMethod ().when (okHttpClientImpl ).mergeHeaders ( buildBasicHeaders () , additionalHeaders );
402+ Whitebox .setInternalState (okHttpClientImpl , "_decorator " , requestDecorator );
404403 PowerMockito .doCallRealMethod ().when (okHttpClientImpl ).getResponseHeaders (any ());
405404
406405 String data = Json .toJson ("<>" );
@@ -409,12 +408,22 @@ public void testPosttException() throws URISyntaxException, IOException {
409408
410409 SplitHttpResponse splitHttpResponse = okHttpClientImpl .post (rootTarget , data ,
411410 additionalHeaders );
412- */
413411 }
414412
415413 private SDKMetadata metadata () {
416414 return new SDKMetadata ("java-1.2.3" , "1.2.3.4" , "someIP" );
417415 }
418416
417+ private Map <String , List <String >> buildBasicHeaders () {
418+ Map <String , List <String >> h = new HashMap <>();
419+ h .put ("Authorization" , Collections .singletonList ("Bearer qwerty" ));
420+ h .put ("SplitSDKVersion" , Collections .singletonList (metadata ().getSdkVersion ()));
421+ h .put ("SplitSDKMachineIP" , Collections .singletonList (metadata ().getMachineIp ()));
422+ h .put ("SplitSDKMachineName" , Collections .singletonList (metadata ().getMachineName ()));
423+ h .put ("SplitSDKClientKey" , Collections .singletonList ("qwerty" .length () > 4
424+ ? "qwerty" .substring ("qwerty" .length () - 4 )
425+ : "qwerty" ));
426+ return h ;
427+ }
419428
420429}
0 commit comments