1111import java .io .IOException ;
1212import java .net .URI ;
1313import java .util .ArrayList ;
14+ import java .util .Arrays ;
15+ import java .util .HashSet ;
16+ import java .util .List ;
1417
1518import org .jetbrains .annotations .NotNull ;
1619import org .junit .jupiter .api .Assertions ;
1922import com .microsoft .graph .core .authentication .AzureIdentityAccessTokenProvider ;
2023import com .microsoft .graph .core .authentication .AzureIdentityAuthenticationProvider ;
2124import com .microsoft .graph .core .requests .middleware .GraphTelemetryHandler ;
25+ import com .microsoft .graph .core .requests .options .GraphClientOption ;
2226import com .microsoft .kiota .RequestOption ;
2327import com .microsoft .kiota .authentication .AccessTokenProvider ;
2428import com .microsoft .kiota .authentication .AllowedHostsValidator ;
2529import com .microsoft .kiota .authentication .BaseBearerTokenAuthenticationProvider ;
30+ import com .microsoft .kiota .http .middleware .HeadersInspectionHandler ;
31+ import com .microsoft .kiota .http .middleware .ParametersNameDecodingHandler ;
2632import com .microsoft .kiota .http .middleware .RedirectHandler ;
2733import com .microsoft .kiota .http .middleware .RetryHandler ;
34+ import com .microsoft .kiota .http .middleware .UrlReplaceHandler ;
35+ import com .microsoft .kiota .http .middleware .UserAgentHandler ;
2836import com .microsoft .kiota .http .middleware .options .RetryHandlerOption ;
2937
3038import okhttp3 .Interceptor ;
@@ -36,6 +44,51 @@ class GraphClientFactoryTest {
3644
3745 private static final String ACCESS_TOKEN_STRING = "token" ;
3846
47+ @ Test
48+ void testDefaultCreate () {
49+ final OkHttpClient .Builder clientBuilder = GraphClientFactory .create ();
50+ assertDefaultHandlersPresent (clientBuilder .interceptors ());
51+ }
52+
53+ @ Test
54+ void testCreateWithCustomInterceptorsAddsTelemetry () {
55+ final OkHttpClient .Builder clientBuilder = GraphClientFactory .create (
56+ new RetryHandler (), new RedirectHandler ()
57+ );
58+
59+ assertEquals (3 , clientBuilder .interceptors ().size ());
60+
61+ for (Interceptor interceptor : clientBuilder .interceptors ()) {
62+ assertTrue (
63+ interceptor instanceof GraphTelemetryHandler
64+ || interceptor instanceof RetryHandler
65+ || interceptor instanceof RedirectHandler
66+ );
67+ }
68+ }
69+
70+ @ Test
71+ void testCreateWithGraphClientOption () {
72+ final OkHttpClient .Builder clientBuilder = GraphClientFactory .create (new GraphClientOption ());
73+ assertDefaultHandlersPresent (clientBuilder .interceptors ());
74+ }
75+
76+ @ Test
77+ void testCreateDefaultInterceptorsWithCustomOptions () {
78+ Interceptor [] interceptors = GraphClientFactory .createDefaultGraphInterceptors (
79+ new RequestOption [] {new RetryHandlerOption (null , 0 , 0 )}
80+ );
81+ assertDefaultHandlersPresent (Arrays .asList (interceptors ));
82+
83+ for (Interceptor interceptor : interceptors ) {
84+ if (interceptor instanceof RetryHandler ) {
85+ RetryHandlerOption retryOptions = ((RetryHandler ) interceptor ).getRetryOptions ();
86+ Assertions .assertEquals (0 , retryOptions .maxRetries ());
87+ Assertions .assertEquals (0 , retryOptions .delay ());
88+ }
89+ }
90+ }
91+
3992 @ Test
4093 void testCreateWithAuthenticationProvider () throws IOException {
4194 final BaseBearerTokenAuthenticationProvider mockAuthenticationProvider =
@@ -103,6 +156,24 @@ void testCreateWithCustomInterceptorsOverwritesDefaults() throws IOException {
103156 }
104157 }
105158
159+ private void assertDefaultHandlersPresent (final List <Interceptor > interceptors ) {
160+ HashSet <Class <? extends Interceptor >> expectedInterceptors = new HashSet <>(
161+ Arrays .asList (
162+ GraphTelemetryHandler .class ,
163+ RetryHandler .class ,
164+ UrlReplaceHandler .class ,
165+ UserAgentHandler .class ,
166+ RedirectHandler .class ,
167+ ParametersNameDecodingHandler .class ,
168+ HeadersInspectionHandler .class
169+ )
170+ );
171+
172+ for (Interceptor interceptor : interceptors ) {
173+ assertTrue (expectedInterceptors .contains (interceptor .getClass ()));
174+ }
175+ }
176+
106177 private static BaseBearerTokenAuthenticationProvider getMockAuthenticationProvider () {
107178 final AccessTokenProvider mockAccessTokenProvider = mock (AzureIdentityAccessTokenProvider .class );
108179 when (mockAccessTokenProvider .getAuthorizationToken (any (URI .class ), anyMap ()))
0 commit comments