@@ -12,9 +12,12 @@ namespace Microsoft.Graph.DotnetCore.Core.Test.Requests
12
12
using System . Net . Http . Headers ;
13
13
using System . Threading ;
14
14
using System . Threading . Tasks ;
15
+ using Azure . Core ;
16
+ using Microsoft . Kiota . Abstractions . Authentication ;
15
17
using Microsoft . Kiota . Http . HttpClientLibrary . Middleware ;
16
18
using Microsoft . Kiota . Http . HttpClientLibrary . Middleware . Options ;
17
19
using Mocks ;
20
+ using Moq ;
18
21
using Xunit ;
19
22
20
23
public class GraphClientFactoryTests : IDisposable
@@ -314,6 +317,40 @@ public void CreateClientWithFinalHandlerDisposesTheFinalHandler(bool shouldDispo
314
317
Assert . Equal ( shouldDisposeHandler , finalHandler . Disposed ) ;
315
318
}
316
319
320
+ [ Fact ]
321
+ public async Task CreateClientWithAuthenticationProviderAuthenticatesRequest ( )
322
+ {
323
+ var httpRequestMessage = new HttpRequestMessage ( HttpMethod . Post , "https://graph.microsoft.com/me" ) ;
324
+ var responseMessage = new HttpResponseMessage ( HttpStatusCode . OK ) ;
325
+ this . testHttpMessageHandler . SetHttpResponse ( responseMessage ) ;
326
+
327
+ var authProvider = new Mock < BaseBearerTokenAuthenticationProvider > ( new MockAccessTokenProvider ( "token" ) . Object ) ;
328
+
329
+ using ( HttpClient client = GraphClientFactory . Create ( authenticationProvider : authProvider . Object , finalHandler : this . testHttpMessageHandler ) )
330
+ {
331
+ var response = await client . SendAsync ( httpRequestMessage , new CancellationToken ( ) ) ;
332
+ Assert . Equal ( "Bearer token" , response . RequestMessage . Headers . Authorization . ToString ( ) ) ;
333
+ }
334
+ }
335
+
336
+ [ Fact ]
337
+ public async Task CreateClientWithTokenCredentialAuthenticatesRequest ( )
338
+ {
339
+ var httpRequestMessage = new HttpRequestMessage ( HttpMethod . Post , "https://graph.microsoft.com/me" ) ;
340
+ var responseMessage = new HttpResponseMessage ( HttpStatusCode . OK ) ;
341
+ this . testHttpMessageHandler . SetHttpResponse ( responseMessage ) ;
342
+
343
+ var tokenCredential = new Mock < TokenCredential > ( ) ;
344
+ tokenCredential . Setup ( x => x . GetTokenAsync ( It . IsAny < TokenRequestContext > ( ) , It . IsAny < CancellationToken > ( ) ) )
345
+ . ReturnsAsync ( new AccessToken ( "mockToken" , DateTimeOffset . UtcNow . AddMinutes ( 10 ) ) ) ;
346
+
347
+ using ( HttpClient client = GraphClientFactory . Create ( tokenCredential : tokenCredential . Object , finalHandler : this . testHttpMessageHandler ) )
348
+ {
349
+ var response = await client . SendAsync ( httpRequestMessage , new CancellationToken ( ) ) ;
350
+ Assert . Equal ( "Bearer mockToken" , response . RequestMessage . Headers . Authorization . ToString ( ) ) ;
351
+ }
352
+ }
353
+
317
354
private class MockHttpHandler : HttpMessageHandler
318
355
{
319
356
public bool Disposed ;
0 commit comments