1919import static com .github .tomakehurst .wiremock .client .WireMock .any ;
2020import static com .github .tomakehurst .wiremock .client .WireMock .anyRequestedFor ;
2121import static com .github .tomakehurst .wiremock .client .WireMock .anyUrl ;
22+ import static com .github .tomakehurst .wiremock .client .WireMock .equalTo ;
2223import static com .github .tomakehurst .wiremock .client .WireMock .matching ;
2324import static org .assertj .core .api .Assertions .assertThat ;
2425
2526import com .github .tomakehurst .wiremock .WireMockServer ;
27+ import com .github .tomakehurst .wiremock .client .WireMock ;
2628import com .github .tomakehurst .wiremock .core .WireMockConfiguration ;
2729import java .net .URI ;
2830import java .util .Base64 ;
@@ -66,6 +68,43 @@ public void teardown() {
6668 }
6769 }
6870
71+ @ Test
72+ public void proxyAuthentication_whenPreemptiveAuthEnabled_shouldSendProxyAuthorizationHeader () throws Exception {
73+ mockProxy .stubFor (any (anyUrl ())
74+ .withHeader ("Proxy-Authorization" , equalTo (BASIC_PROXY_AUTH_HEADER ))
75+ .willReturn (aResponse ()
76+ .withStatus (200 )
77+ .withBody ("Success" )));
78+
79+ // Create HTTP client with preemptive proxy authentication enabled
80+ httpClient = Apache5HttpClient .builder ()
81+ .proxyConfiguration (ProxyConfiguration .builder ()
82+ .endpoint (URI .create ("http://localhost:" + mockProxy .port ()))
83+ .username ("testuser" )
84+ .password ("testpass" )
85+ .preemptiveBasicAuthenticationEnabled (true )
86+ .build ())
87+ .build ();
88+
89+ // Create a request
90+ SdkHttpRequest request = SdkHttpRequest .builder ()
91+ .method (SdkHttpMethod .GET )
92+ .uri (URI .create ("http://example.com/test" ))
93+ .build ();
94+
95+ HttpExecuteRequest executeRequest = HttpExecuteRequest .builder ()
96+ .request (request )
97+ .build ();
98+
99+ // Execute the request - should succeed with preemptive auth header
100+ HttpExecuteResponse response = httpClient .prepareRequest (executeRequest ).call ();
101+ assertThat (response .httpResponse ().statusCode ()).isEqualTo (200 );
102+
103+ mockProxy .verify (1 , anyRequestedFor (anyUrl ()));
104+ mockProxy .verify (WireMock .getRequestedFor (anyUrl ())
105+ .withHeader ("Proxy-Authorization" , equalTo (BASIC_PROXY_AUTH_HEADER )));
106+ }
107+
69108 @ Test
70109 public void proxyAuthentication_whenPreemptiveAuthDisabled_shouldUseChallengeResponseAuth () throws Exception {
71110 // First request without auth header should get 407
@@ -83,13 +122,13 @@ public void proxyAuthentication_whenPreemptiveAuthDisabled_shouldUseChallengeRes
83122
84123 // Create HTTP client with preemptive proxy authentication disabled
85124 httpClient = Apache5HttpClient .builder ()
86- .proxyConfiguration (ProxyConfiguration .builder ()
87- .endpoint (URI .create ("http://localhost:" + mockProxy .port ()))
88- .username ("testuser" )
89- .password ("testpass" )
90- .preemptiveBasicAuthenticationEnabled (false )
91- .build ())
92- .build ();
125+ .proxyConfiguration (ProxyConfiguration .builder ()
126+ .endpoint (URI .create ("http://localhost:" + mockProxy .port ()))
127+ .username ("testuser" )
128+ .password ("testpass" )
129+ .preemptiveBasicAuthenticationEnabled (false )
130+ .build ())
131+ .build ();
93132
94133 // Create a request
95134 SdkHttpRequest request = SdkHttpRequest .builder ()
0 commit comments