diff options
Diffstat (limited to 'src/DotNetOpenAuth.Test/OAuth2/UserAgentClientAuthorizeTests.cs')
-rw-r--r-- | src/DotNetOpenAuth.Test/OAuth2/UserAgentClientAuthorizeTests.cs | 87 |
1 files changed, 54 insertions, 33 deletions
diff --git a/src/DotNetOpenAuth.Test/OAuth2/UserAgentClientAuthorizeTests.cs b/src/DotNetOpenAuth.Test/OAuth2/UserAgentClientAuthorizeTests.cs index ae03b0c..fe439a2 100644 --- a/src/DotNetOpenAuth.Test/OAuth2/UserAgentClientAuthorizeTests.cs +++ b/src/DotNetOpenAuth.Test/OAuth2/UserAgentClientAuthorizeTests.cs @@ -8,7 +8,9 @@ namespace DotNetOpenAuth.Test.OAuth2 { using System; using System.Collections.Generic; using System.Linq; + using System.Net.Http; using System.Text; + using System.Threading.Tasks; using DotNetOpenAuth.Messaging; using DotNetOpenAuth.Messaging.Bindings; using DotNetOpenAuth.OAuth2; @@ -20,61 +22,80 @@ namespace DotNetOpenAuth.Test.OAuth2 { [TestFixture] public class UserAgentClientAuthorizeTests : OAuth2TestBase { [Test] - public void AuthorizationCodeGrant() { - var coordinator = new OAuth2Coordinator<UserAgentClient>( - AuthorizationServerDescription, - AuthorizationServerMock, - new UserAgentClient(AuthorizationServerDescription), - client => { + public async Task AuthorizationCodeGrant() { + var coordinator = new CoordinatorBase( + async (hostFactories, ct) => { + var client = new UserAgentClient(AuthorizationServerDescription); var authState = new AuthorizationState(TestScopes) { Callback = ClientCallback, }; var request = client.PrepareRequestUserAuthorization(authState); Assert.AreEqual(EndUserAuthorizationResponseType.AuthorizationCode, request.ResponseType); - client.Channel.Respond(request); - var incoming = client.Channel.ReadFromRequest(); - var result = client.ProcessUserAuthorization(authState, incoming); + var authRequestRedirect = await client.Channel.PrepareResponseAsync(request, ct); + Uri authRequestResponse; + using (var httpClient = hostFactories.CreateHttpClient()) { + using (var httpResponse = await httpClient.GetAsync(authRequestRedirect.Headers.Location, ct)) { + authRequestResponse = httpResponse.Headers.Location; + } + } + var incoming = await client.Channel.ReadFromRequestAsync(new HttpRequestMessage(HttpMethod.Get, authRequestResponse), ct); + var result = await client.ProcessUserAuthorizationAsync(authState, incoming, ct); Assert.That(result.AccessToken, Is.Not.Null.And.Not.Empty); Assert.That(result.RefreshToken, Is.Not.Null.And.Not.Empty); }, - server => { - var request = server.ReadAuthorizationRequest(); - Assert.That(request, Is.Not.Null); - server.ApproveAuthorizationRequest(request, ResourceOwnerUsername); - server.HandleTokenRequest().Respond(); - }); - coordinator.Run(); + CoordinatorBase.Handle(AuthorizationServerDescription.AuthorizationEndpoint).By( + async (req, ct) => { + var server = new AuthorizationServer(AuthorizationServerMock); + var request = await server.ReadAuthorizationRequestAsync(req, ct); + Assert.That(request, Is.Not.Null); + var response = server.PrepareApproveAuthorizationRequest(request, ResourceOwnerUsername); + return await server.Channel.PrepareResponseAsync(response, ct); + }), + CoordinatorBase.Handle(AuthorizationServerDescription.TokenEndpoint).By( + async (req, ct) => { + var server = new AuthorizationServer(AuthorizationServerMock); + return await server.HandleTokenRequestAsync(req, ct); + })); + await coordinator.RunAsync(); } [Test] - public void ImplicitGrant() { + public async Task ImplicitGrant() { var coordinatorClient = new UserAgentClient(AuthorizationServerDescription); - var coordinator = new OAuth2Coordinator<UserAgentClient>( - AuthorizationServerDescription, - AuthorizationServerMock, - coordinatorClient, - client => { + var coordinator = new CoordinatorBase( + async (hostFactories, ct) => { + var client = new UserAgentClient(AuthorizationServerDescription); var authState = new AuthorizationState(TestScopes) { Callback = ClientCallback, }; var request = client.PrepareRequestUserAuthorization(authState, implicitResponseType: true); Assert.That(request.ResponseType, Is.EqualTo(EndUserAuthorizationResponseType.AccessToken)); - client.Channel.Respond(request); - var incoming = client.Channel.ReadFromRequest(); - var result = client.ProcessUserAuthorization(authState, incoming); + var authRequestRedirect = await client.Channel.PrepareResponseAsync(request, ct); + Uri authRequestResponse; + using (var httpClient = hostFactories.CreateHttpClient()) { + using (var httpResponse = await httpClient.GetAsync(authRequestRedirect.Headers.Location, ct)) { + authRequestResponse = httpResponse.Headers.Location; + } + } + + var incoming = await client.Channel.ReadFromRequestAsync(new HttpRequestMessage(HttpMethod.Get, authRequestResponse), ct); + var result = await client.ProcessUserAuthorizationAsync(authState, incoming, ct); Assert.That(result.AccessToken, Is.Not.Null.And.Not.Empty); Assert.That(result.RefreshToken, Is.Null); }, - server => { - var request = server.ReadAuthorizationRequest(); - Assert.That(request, Is.Not.Null); - IAccessTokenRequest accessTokenRequest = (EndUserAuthorizationImplicitRequest)request; - Assert.That(accessTokenRequest.ClientAuthenticated, Is.False); - server.ApproveAuthorizationRequest(request, ResourceOwnerUsername); - }); + CoordinatorBase.Handle(AuthorizationServerDescription.AuthorizationEndpoint).By( + async (req, ct) => { + var server = new AuthorizationServer(AuthorizationServerMock); + var request = await server.ReadAuthorizationRequestAsync(req, ct); + Assert.That(request, Is.Not.Null); + IAccessTokenRequest accessTokenRequest = (EndUserAuthorizationImplicitRequest)request; + Assert.That(accessTokenRequest.ClientAuthenticated, Is.False); + var response = server.PrepareApproveAuthorizationRequest(request, ResourceOwnerUsername); + return await server.Channel.PrepareResponseAsync(response, ct); + })); coordinatorClient.ClientCredentialApplicator = null; // implicit grant clients don't need a secret. - coordinator.Run(); + await coordinator.RunAsync(); } } } |