@@ -19,7 +19,7 @@ namespace Microsoft.Graph.Core.Test.Requests
19
19
[ TestClass ]
20
20
public class GraphClientFactoryTests
21
21
{
22
- private DelegatingHandler [ ] handlers = new DelegatingHandler [ 2 ] ;
22
+ private DelegatingHandler [ ] handlers = new DelegatingHandler [ 3 ] ;
23
23
private MockRedirectHandler testHttpMessageHandler ;
24
24
25
25
@@ -29,7 +29,7 @@ public void Setup()
29
29
this . testHttpMessageHandler = new MockRedirectHandler ( ) ;
30
30
handlers [ 0 ] = new RetryHandler ( ) ;
31
31
handlers [ 1 ] = new RedirectHandler ( ) ;
32
-
32
+ handlers [ 2 ] = new AuthenticationHandler ( ) ;
33
33
}
34
34
35
35
[ TestCleanup ]
@@ -41,15 +41,18 @@ public void Teardown()
41
41
[ TestMethod ]
42
42
public void CreatePipelineWithoutHttpMessageHandlerInput ( )
43
43
{
44
- using ( RetryHandler handler = ( RetryHandler ) GraphClientFactory . CreatePipeline ( null , handlers ) )
45
- using ( RedirectHandler inner = ( RedirectHandler ) handler . InnerHandler )
46
- using ( HttpMessageHandler innerMost = inner . InnerHandler )
44
+ using ( RetryHandler retryHandler = ( RetryHandler ) GraphClientFactory . CreatePipeline ( null , handlers ) )
45
+ using ( RedirectHandler redirectHandler = ( RedirectHandler ) retryHandler . InnerHandler )
46
+ using ( AuthenticationHandler authenticationHandler = ( AuthenticationHandler ) redirectHandler . InnerHandler )
47
+ using ( HttpMessageHandler innerMost = authenticationHandler . InnerHandler )
47
48
{
48
- Assert . IsNotNull ( handler , "Create a middleware pipeline failed." ) ;
49
- Assert . IsNotNull ( inner , "Create a middleware pipeline failed." ) ;
49
+ Assert . IsNotNull ( retryHandler , "Create a middleware pipeline failed." ) ;
50
+ Assert . IsNotNull ( redirectHandler , "Create a middleware pipeline failed." ) ;
51
+ Assert . IsNotNull ( authenticationHandler , "Create a middleware pipeline failed" ) ;
50
52
Assert . IsNotNull ( innerMost , "Create inner most HttpMessageHandler failed." ) ;
51
- Assert . IsInstanceOfType ( handler , typeof ( RetryHandler ) , "Pass pipeline failed in first level." ) ;
52
- Assert . IsInstanceOfType ( inner , typeof ( RedirectHandler ) , "Pass pipeline failed in seconde level." ) ;
53
+ Assert . IsInstanceOfType ( retryHandler , typeof ( RetryHandler ) , "Pass pipeline failed in first level." ) ;
54
+ Assert . IsInstanceOfType ( redirectHandler , typeof ( RedirectHandler ) , "Pass pipeline failed in seconde level." ) ;
55
+ Assert . IsInstanceOfType ( authenticationHandler , typeof ( AuthenticationHandler ) , "Pass pipeline failed in third level." ) ;
53
56
Assert . IsInstanceOfType ( innerMost , typeof ( HttpMessageHandler ) , "Inner most HttpMessageHandler class error." ) ;
54
57
}
55
58
@@ -58,18 +61,20 @@ public void CreatePipelineWithoutHttpMessageHandlerInput()
58
61
[ TestMethod ]
59
62
public void CreatePipelineWithHttpMessageHandlerInput ( )
60
63
{
61
- using ( RetryHandler handler = ( RetryHandler ) GraphClientFactory . CreatePipeline ( this . testHttpMessageHandler , handlers ) )
62
- using ( RedirectHandler inner = ( RedirectHandler ) handler . InnerHandler )
63
- using ( MockRedirectHandler innerMost = ( MockRedirectHandler ) inner . InnerHandler )
64
+ using ( RetryHandler retryHandler = ( RetryHandler ) GraphClientFactory . CreatePipeline ( this . testHttpMessageHandler , handlers ) )
65
+ using ( RedirectHandler redirectHandler = ( RedirectHandler ) retryHandler . InnerHandler )
66
+ using ( AuthenticationHandler authenticationHandler = ( AuthenticationHandler ) redirectHandler . InnerHandler )
67
+ using ( MockRedirectHandler innerMost = ( MockRedirectHandler ) authenticationHandler . InnerHandler )
64
68
{
65
- Assert . IsNotNull ( handler , "Create a middleware pipeline failed." ) ;
66
- Assert . IsNotNull ( inner , "Create a middleware pipeline failed." ) ;
69
+ Assert . IsNotNull ( retryHandler , "Create a middleware pipeline failed." ) ;
70
+ Assert . IsNotNull ( redirectHandler , "Create a middleware pipeline failed." ) ;
71
+ Assert . IsNotNull ( authenticationHandler , "Create a middleware pipeline failed." ) ;
67
72
Assert . IsNotNull ( innerMost , "Create inner most HttpMessageHandler failed." ) ;
68
- Assert . IsInstanceOfType ( handler , typeof ( RetryHandler ) , "Pass pipeline failed in first level." ) ;
69
- Assert . IsInstanceOfType ( inner , typeof ( RedirectHandler ) , "Pass pipeline failed in seconde level." ) ;
73
+ Assert . IsInstanceOfType ( retryHandler , typeof ( RetryHandler ) , "Pass pipeline failed in first level." ) ;
74
+ Assert . IsInstanceOfType ( redirectHandler , typeof ( RedirectHandler ) , "Pass pipeline failed in seconde level." ) ;
75
+ Assert . IsInstanceOfType ( authenticationHandler , typeof ( AuthenticationHandler ) , "Pass pipeline failed in third level." ) ;
70
76
Assert . IsInstanceOfType ( innerMost , typeof ( MockRedirectHandler ) , "Inner most HttpMessageHandler class error." ) ;
71
77
}
72
-
73
78
}
74
79
75
80
@@ -98,7 +103,6 @@ public void CreateClient_CustomHttpHandlingBehaviors()
98
103
Assert . IsFalse ( client . DefaultRequestHeaders . CacheControl . NoCache , "NoCache true." ) ;
99
104
Assert . IsFalse ( client . DefaultRequestHeaders . CacheControl . NoStore , "NoStore true." ) ;
100
105
Assert . AreEqual ( client . BaseAddress , baseAddress , "Unexpected default baseAddress set." ) ;
101
-
102
106
}
103
107
}
104
108
@@ -204,13 +208,52 @@ public async Task SendRequest_Retry()
204
208
Assert . AreEqual ( values . Count ( ) , 1 ) ;
205
209
Assert . AreEqual ( values . First ( ) , 1 . ToString ( ) ) ;
206
210
}
211
+ }
212
+
213
+ [ TestMethod ]
214
+ public async Task SendRequest_UnauthorizedWithNoAuthenticationProvider ( )
215
+ {
216
+ var httpRequestMessage = new HttpRequestMessage ( HttpMethod . Put , "https://example.com/bar" ) ;
217
+ httpRequestMessage . Content = new StringContent ( "Hello World" ) ;
218
+
219
+ var unauthorizedResponse = new HttpResponseMessage ( HttpStatusCode . Unauthorized ) ;
220
+ var okResponse = new HttpResponseMessage ( HttpStatusCode . OK ) ;
221
+
222
+ testHttpMessageHandler . SetHttpResponse ( unauthorizedResponse , okResponse ) ;
223
+
224
+ using ( HttpClient client = GraphClientFactory . CreateClient ( testHttpMessageHandler , handlers ) )
225
+ {
226
+ var response = await client . SendAsync ( httpRequestMessage , new CancellationToken ( ) ) ;
227
+ Assert . AreSame ( response , unauthorizedResponse ) ;
228
+ Assert . AreSame ( response . RequestMessage , httpRequestMessage ) ;
229
+ }
230
+ }
231
+
232
+ [ TestMethod ]
233
+ public async Task SendRequest_UnauthorizedWithAuthenticationProvider ( )
234
+ {
235
+ var httpRequestMessage = new HttpRequestMessage ( HttpMethod . Put , "https://example.com/bar" ) ;
236
+ httpRequestMessage . Content = new StringContent ( "Hello World" ) ;
207
237
238
+ var unauthorizedResponse = new HttpResponseMessage ( HttpStatusCode . Unauthorized ) ;
239
+ var okResponse = new HttpResponseMessage ( HttpStatusCode . OK ) ;
240
+
241
+ testHttpMessageHandler . SetHttpResponse ( unauthorizedResponse , okResponse ) ;
242
+
243
+ handlers [ 2 ] = new AuthenticationHandler ( new MockAuthenticationProvider ( ) . Object ) ;
244
+
245
+ using ( HttpClient client = GraphClientFactory . CreateClient ( testHttpMessageHandler , handlers ) )
246
+ {
247
+ var response = await client . SendAsync ( httpRequestMessage , new CancellationToken ( ) ) ;
248
+ Assert . AreSame ( response , okResponse ) ;
249
+ Assert . AreSame ( response . RequestMessage , httpRequestMessage ) ;
250
+ }
208
251
}
209
252
210
253
[ TestMethod ]
211
254
public void CreateClient_WithHandlersHasExceptions ( )
212
255
{
213
- handlers [ 1 ] = null ;
256
+ handlers [ handlers . Length - 1 ] = null ;
214
257
try
215
258
{
216
259
HttpClient client = GraphClientFactory . CreateClient ( handlers ) ;
@@ -220,16 +263,18 @@ public void CreateClient_WithHandlersHasExceptions()
220
263
Assert . IsInstanceOfType ( exception , typeof ( ArgumentNullException ) , "Exception is not the right type" ) ;
221
264
Assert . AreEqual ( exception . ParamName , "handlers" , "ParamName not right." ) ;
222
265
}
223
-
224
- handlers [ 1 ] = new RetryHandler ( this . testHttpMessageHandler ) ;
266
+ handlers [ handlers . Length - 1 ] = new RetryHandler ( this . testHttpMessageHandler ) ;
225
267
try
226
268
{
227
269
HttpClient client = GraphClientFactory . CreateClient ( handlers ) ;
228
270
}
229
271
catch ( ArgumentException exception )
230
272
{
231
273
Assert . IsInstanceOfType ( exception , typeof ( ArgumentException ) , "Exception is not the right type" ) ;
232
- Assert . AreEqual ( exception . Message , String . Format ( "DelegatingHandler array has unexpected InnerHandler. {0} has unexpected InnerHandler." , handlers [ 1 ] ) ) ;
274
+ Assert . AreEqual (
275
+ exception . Message ,
276
+ String . Format ( "DelegatingHandler array has unexpected InnerHandler. {0} has unexpected InnerHandler." ,
277
+ handlers [ handlers . Length - 1 ] ) ) ;
233
278
234
279
}
235
280
0 commit comments