diff options
Diffstat (limited to 'src')
19 files changed, 124 insertions, 118 deletions
diff --git a/src/DotNetOpenAuth.Test/CoordinatorBase.cs b/src/DotNetOpenAuth.Test/CoordinatorBase.cs index 48c6371..12b03f8 100644 --- a/src/DotNetOpenAuth.Test/CoordinatorBase.cs +++ b/src/DotNetOpenAuth.Test/CoordinatorBase.cs @@ -26,7 +26,7 @@ namespace DotNetOpenAuth.Test { internal class CoordinatorBase { private Func<IHostFactories, CancellationToken, Task> driver; - internal CoordinatorBase(Func<IHostFactories, CancellationToken, Task> driver, params Handler[] handlers) { + internal CoordinatorBase(Func<IHostFactories, CancellationToken, Task> driver, params TestBase.Handler[] handlers) { Requires.NotNull(driver, "driver"); Requires.NotNull(handlers, "handlers"); @@ -36,50 +36,8 @@ namespace DotNetOpenAuth.Test { internal MockingHostFactories HostFactories { get; set; } - internal static Task RunAsync(Func<IHostFactories, CancellationToken, Task> driver, params Handler[] handlers) { - var coordinator = new CoordinatorBase(driver, handlers); - return coordinator.RunAsync(); - } - protected internal virtual async Task RunAsync(CancellationToken cancellationToken = default(CancellationToken)) { await this.driver(this.HostFactories, cancellationToken); } - - internal static Handler Handle(Uri uri) { - return new Handler(uri); - } - - internal struct Handler { - internal Handler(Uri uri) - : this() { - this.Uri = uri; - } - - public Uri Uri { get; private set; } - - public Func<IHostFactories, HttpRequestMessage, CancellationToken, Task<HttpResponseMessage>> MessageHandler { get; private set; } - - internal Handler By(Func<IHostFactories, HttpRequestMessage, CancellationToken, Task<HttpResponseMessage>> handler) { - return new Handler(this.Uri) { MessageHandler = handler }; - } - - internal Handler By(Func<HttpRequestMessage, CancellationToken, Task<HttpResponseMessage>> handler) { - return By((hf, req, ct) => handler(req, ct)); - } - - internal Handler By(Func<HttpRequestMessage, HttpResponseMessage> handler) { - return By((req, ct) => Task.FromResult(handler(req))); - } - - internal Handler By(string responseContent, string contentType, HttpStatusCode statusCode = HttpStatusCode.OK) { - return By( - req => { - var response = new HttpResponseMessage(statusCode); - response.Content = new StringContent(responseContent); - response.Content.Headers.ContentType = new MediaTypeHeaderValue(contentType); - return response; - }); - } - } } } diff --git a/src/DotNetOpenAuth.Test/MockingHostFactories.cs b/src/DotNetOpenAuth.Test/MockingHostFactories.cs index d1f0792..a7d24e4 100644 --- a/src/DotNetOpenAuth.Test/MockingHostFactories.cs +++ b/src/DotNetOpenAuth.Test/MockingHostFactories.cs @@ -16,13 +16,13 @@ namespace DotNetOpenAuth.Test { using Validation; internal class MockingHostFactories : IHostFactories { - private readonly List<CoordinatorBase.Handler> handlers; + private readonly List<TestBase.Handler> handlers; - public MockingHostFactories(List<CoordinatorBase.Handler> handlers = null) { - this.handlers = handlers ?? new List<CoordinatorBase.Handler>(); + public MockingHostFactories(List<TestBase.Handler> handlers = null) { + this.handlers = handlers ?? new List<TestBase.Handler>(); } - public List<CoordinatorBase.Handler> Handlers { + public List<TestBase.Handler> Handlers { get { return this.handlers; } } @@ -35,11 +35,11 @@ namespace DotNetOpenAuth.Test { } private class ForwardingMessageHandler : HttpMessageHandler { - private readonly IEnumerable<CoordinatorBase.Handler> handlers; + private readonly IEnumerable<TestBase.Handler> handlers; private readonly IHostFactories hostFactories; - public ForwardingMessageHandler(IEnumerable<CoordinatorBase.Handler> handlers, IHostFactories hostFactories) { + public ForwardingMessageHandler(IEnumerable<TestBase.Handler> handlers, IHostFactories hostFactories) { Requires.NotNull(handlers, "handlers"); this.handlers = handlers; diff --git a/src/DotNetOpenAuth.Test/Mocks/MockHttpRequest.cs b/src/DotNetOpenAuth.Test/Mocks/MockHttpRequest.cs index 2c1e64b..dbf57bc 100644 --- a/src/DotNetOpenAuth.Test/Mocks/MockHttpRequest.cs +++ b/src/DotNetOpenAuth.Test/Mocks/MockHttpRequest.cs @@ -22,7 +22,7 @@ namespace DotNetOpenAuth.Test.Mocks { using Validation; internal static class MockHttpRequest { - internal static CoordinatorBase.Handler RegisterMockXrdsResponse(IdentifierDiscoveryResult endpoint) { + internal static TestBase.Handler RegisterMockXrdsResponse(IdentifierDiscoveryResult endpoint) { Requires.NotNull(endpoint, "endpoint"); string identityUri; @@ -35,7 +35,7 @@ namespace DotNetOpenAuth.Test.Mocks { return RegisterMockXrdsResponse(new Uri(identityUri), new IdentifierDiscoveryResult[] { endpoint }); } - internal static CoordinatorBase.Handler RegisterMockXrdsResponse(Uri respondingUri, IEnumerable<IdentifierDiscoveryResult> endpoints) { + internal static TestBase.Handler RegisterMockXrdsResponse(Uri respondingUri, IEnumerable<IdentifierDiscoveryResult> endpoints) { Requires.NotNull(endpoints, "endpoints"); var xrds = new StringBuilder(); @@ -67,10 +67,10 @@ namespace DotNetOpenAuth.Test.Mocks { </XRD> </xrds:XRDS>"); - return CoordinatorBase.Handle(respondingUri).By(xrds.ToString(), ContentTypes.Xrds); + return TestBase.Handle(respondingUri).By(xrds.ToString(), ContentTypes.Xrds); } - internal static CoordinatorBase.Handler RegisterMockXrdsResponse(UriIdentifier directedIdentityAssignedIdentifier, IdentifierDiscoveryResult providerEndpoint) { + internal static TestBase.Handler RegisterMockXrdsResponse(UriIdentifier directedIdentityAssignedIdentifier, IdentifierDiscoveryResult providerEndpoint) { IdentifierDiscoveryResult identityEndpoint = IdentifierDiscoveryResult.CreateForClaimedIdentifier( directedIdentityAssignedIdentifier, directedIdentityAssignedIdentifier, @@ -81,13 +81,13 @@ namespace DotNetOpenAuth.Test.Mocks { return RegisterMockXrdsResponse(identityEndpoint); } - internal static CoordinatorBase.Handler RegisterMockXrdsResponse(string embeddedResourcePath, out Identifier id) { + internal static TestBase.Handler RegisterMockXrdsResponse(string embeddedResourcePath, out Identifier id) { id = new Uri(new Uri("http://localhost/"), embeddedResourcePath); - return CoordinatorBase.Handle(new Uri(id)) + return TestBase.Handle(new Uri(id)) .By(OpenIdTestBase.LoadEmbeddedFile(embeddedResourcePath), "application/xrds+xml"); } - internal static CoordinatorBase.Handler RegisterMockRPDiscovery(bool ssl) { + internal static TestBase.Handler RegisterMockRPDiscovery(bool ssl) { string template = @"<xrds:XRDS xmlns:xrds='xri://$xrds' xmlns:openid='http://openid.net/xmlns/1.0' xmlns='xri://$xrd*($v*2.0)'> <XRD> <Service priority='10'> @@ -104,38 +104,38 @@ namespace DotNetOpenAuth.Test.Mocks { HttpUtility.HtmlEncode(OpenIdTestBase.RPRealmUri.AbsoluteUri), HttpUtility.HtmlEncode(OpenIdTestBase.RPRealmUriSsl.AbsoluteUri)); - return new CoordinatorBase.Handler(ssl ? OpenIdTestBase.RPRealmUriSsl : OpenIdTestBase.RPRealmUri) + return new TestBase.Handler(ssl ? OpenIdTestBase.RPRealmUriSsl : OpenIdTestBase.RPRealmUri) .By(xrds, ContentTypes.Xrds); } - internal static CoordinatorBase.Handler RegisterMockRedirect(Uri origin, Uri redirectLocation) { + internal static TestBase.Handler RegisterMockRedirect(Uri origin, Uri redirectLocation) { var response = new HttpResponseMessage(HttpStatusCode.Redirect); response.Headers.Location = redirectLocation; - return new CoordinatorBase.Handler(origin).By(req => response); + return new TestBase.Handler(origin).By(req => response); } - internal static CoordinatorBase.Handler[] RegisterMockXrdsResponses( + internal static TestBase.Handler[] RegisterMockXrdsResponses( IEnumerable<KeyValuePair<string, string>> urlXrdsPairs) { Requires.NotNull(urlXrdsPairs, "urlXrdsPairs"); - var results = new List<CoordinatorBase.Handler>(); + var results = new List<TestBase.Handler>(); foreach (var keyValuePair in urlXrdsPairs) { - results.Add(CoordinatorBase.Handle(new Uri(keyValuePair.Key)).By(keyValuePair.Value, ContentTypes.Xrds)); + results.Add(TestBase.Handle(new Uri(keyValuePair.Key)).By(keyValuePair.Value, ContentTypes.Xrds)); } return results.ToArray(); } - internal static CoordinatorBase.Handler RegisterMockResponse(Uri url, string contentType, string content) { - return CoordinatorBase.Handle(url).By(content, contentType); + internal static TestBase.Handler RegisterMockResponse(Uri url, string contentType, string content) { + return TestBase.Handle(url).By(content, contentType); } - internal static CoordinatorBase.Handler RegisterMockResponse(Uri requestUri, Uri responseUri, string contentType, string content) { + internal static TestBase.Handler RegisterMockResponse(Uri requestUri, Uri responseUri, string contentType, string content) { return RegisterMockResponse(requestUri, responseUri, contentType, null, content); } - internal static CoordinatorBase.Handler RegisterMockResponse(Uri requestUri, Uri responseUri, string contentType, WebHeaderCollection headers, string content) { - return CoordinatorBase.Handle(requestUri).By(req => { + internal static TestBase.Handler RegisterMockResponse(Uri requestUri, Uri responseUri, string contentType, WebHeaderCollection headers, string content) { + return TestBase.Handle(requestUri).By(req => { var response = new HttpResponseMessage(); response.CopyHeadersFrom(headers); response.Content = new StringContent(content, Encoding.Default, contentType); diff --git a/src/DotNetOpenAuth.Test/OAuth/AppendixScenarios.cs b/src/DotNetOpenAuth.Test/OAuth/AppendixScenarios.cs index 88e461c..2d58b1d 100644 --- a/src/DotNetOpenAuth.Test/OAuth/AppendixScenarios.cs +++ b/src/DotNetOpenAuth.Test/OAuth/AppendixScenarios.cs @@ -67,23 +67,23 @@ namespace DotNetOpenAuth.Test.OAuth { } } }, - CoordinatorBase.Handle(serviceDescription.TemporaryCredentialsRequestEndpoint).By( + Handle(serviceDescription.TemporaryCredentialsRequestEndpoint).By( async (request, ct) => { var requestTokenMessage = await sp.ReadTokenRequestAsync(request, ct); return await sp.Channel.PrepareResponseAsync(sp.PrepareUnauthorizedTokenMessage(requestTokenMessage)); }), - CoordinatorBase.Handle(serviceDescription.ResourceOwnerAuthorizationEndpoint).By( + Handle(serviceDescription.ResourceOwnerAuthorizationEndpoint).By( async (request, ct) => { var authRequest = await sp.ReadAuthorizationRequestAsync(request, ct); ((InMemoryTokenManager)sp.TokenManager).AuthorizeRequestToken(authRequest.RequestToken); return await sp.Channel.PrepareResponseAsync(sp.PrepareAuthorizationResponse(authRequest)); }), - CoordinatorBase.Handle(serviceDescription.TokenRequestEndpoint).By( + Handle(serviceDescription.TokenRequestEndpoint).By( async (request, ct) => { var accessRequest = await sp.ReadAccessTokenRequestAsync(request, ct); return await sp.Channel.PrepareResponseAsync(sp.PrepareAccessTokenMessage(accessRequest), ct); }), - CoordinatorBase.Handle(accessPhotoEndpoint).By( + Handle(accessPhotoEndpoint).By( async (request, ct) => { string accessToken = (await sp.ReadProtectedResourceAuthorizationAsync(request)).AccessToken; Assert.That(accessToken, Is.Not.Null.And.Not.Empty); diff --git a/src/DotNetOpenAuth.Test/OAuth/ChannelElements/OAuthChannelTests.cs b/src/DotNetOpenAuth.Test/OAuth/ChannelElements/OAuthChannelTests.cs index d2059d9..a1db784 100644 --- a/src/DotNetOpenAuth.Test/OAuth/ChannelElements/OAuthChannelTests.cs +++ b/src/DotNetOpenAuth.Test/OAuth/ChannelElements/OAuthChannelTests.cs @@ -301,7 +301,7 @@ namespace DotNetOpenAuth.Test.OAuth.ChannelElements { HttpMethods = scheme, }; - await CoordinatorBase.RunAsync( + await RunAsync( async (hostFactories, CancellationToken) => { IProtocolMessage response = await this.channel.RequestAsync(request, CancellationToken.None); Assert.IsNotNull(response); @@ -311,7 +311,7 @@ namespace DotNetOpenAuth.Test.OAuth.ChannelElements { Assert.AreEqual(request.Name, responseMessage.Name); Assert.AreEqual(request.Location, responseMessage.Location); }, - CoordinatorBase.Handle(request.Location).By(async (req, ct) => { + Handle(request.Location).By(async (req, ct) => { Assert.IsNotNull(req); Assert.AreEqual(MessagingUtilities.GetHttpVerb(scheme), req.Method); var incomingMessage = (await this.channel.ReadFromRequestAsync(req, CancellationToken.None)) as TestMessage; diff --git a/src/DotNetOpenAuth.Test/OAuth2/AuthorizationServerTests.cs b/src/DotNetOpenAuth.Test/OAuth2/AuthorizationServerTests.cs index b280e76..b2f2666 100644 --- a/src/DotNetOpenAuth.Test/OAuth2/AuthorizationServerTests.cs +++ b/src/DotNetOpenAuth.Test/OAuth2/AuthorizationServerTests.cs @@ -36,7 +36,7 @@ namespace DotNetOpenAuth.Test.OAuth2 { Assert.That(response.Error, Is.Not.Null.And.Not.Empty); Assert.That(response.Error, Is.EqualTo(Protocol.AccessTokenRequestErrorCodes.InvalidRequest)); }, - CoordinatorBase.Handle(AuthorizationServerDescription.TokenEndpoint).By(async (req, ct) => { + Handle(AuthorizationServerDescription.TokenEndpoint).By(async (req, ct) => { var server = new AuthorizationServer(AuthorizationServerMock); return await server.HandleTokenRequestAsync(req, ct); })); @@ -70,7 +70,7 @@ namespace DotNetOpenAuth.Test.OAuth2 { refreshTokenSource.TrySetCanceled(); } }, - CoordinatorBase.Handle(AuthorizationServerDescription.AuthorizationEndpoint).By( + Handle(AuthorizationServerDescription.AuthorizationEndpoint).By( async (req, ct) => { var server = new AuthorizationServer(AuthorizationServerMock); var request = await server.ReadAuthorizationRequestAsync(req, ct); @@ -78,7 +78,7 @@ namespace DotNetOpenAuth.Test.OAuth2 { var response = server.PrepareApproveAuthorizationRequest(request, ResourceOwnerUsername); return await server.Channel.PrepareResponseAsync(response); }), - CoordinatorBase.Handle(AuthorizationServerDescription.TokenEndpoint).By( + Handle(AuthorizationServerDescription.TokenEndpoint).By( async (req, ct) => { var server = new AuthorizationServer(AuthorizationServerMock); var response = await server.HandleTokenRequestAsync(req, ct); @@ -113,7 +113,7 @@ namespace DotNetOpenAuth.Test.OAuth2 { var result = await client.ExchangeUserCredentialForTokenAsync(ResourceOwnerUsername, ResourceOwnerPassword, clientRequestedScopes, ct); Assert.That(result.Scope, Is.EquivalentTo(serverOverriddenScopes)); }, - CoordinatorBase.Handle(AuthorizationServerDescription.TokenEndpoint).By( + Handle(AuthorizationServerDescription.TokenEndpoint).By( async (req, ct) => { var server = new AuthorizationServer(authServerMock.Object); return await server.HandleTokenRequestAsync(req, ct); @@ -137,7 +137,7 @@ namespace DotNetOpenAuth.Test.OAuth2 { var result = await client.ExchangeUserCredentialForTokenAsync(ResourceOwnerUsername, ResourceOwnerPassword, TestScopes, ct); Assert.That(result.AccessToken, Is.Not.Null); }, - CoordinatorBase.Handle(AuthorizationServerDescription.TokenEndpoint).By( + Handle(AuthorizationServerDescription.TokenEndpoint).By( async (req, ct) => { var server = new AuthorizationServer(authServerMock.Object); return await server.HandleTokenRequestAsync(req, ct); @@ -160,7 +160,7 @@ namespace DotNetOpenAuth.Test.OAuth2 { var result = await client.GetClientAccessTokenAsync(TestScopes, ct); Assert.That(result.AccessToken, Is.Not.Null); }, - CoordinatorBase.Handle(AuthorizationServerDescription.TokenEndpoint).By( + Handle(AuthorizationServerDescription.TokenEndpoint).By( async (req, ct) => { var server = new AuthorizationServer(authServerMock.Object); return await server.HandleTokenRequestAsync(req, ct); @@ -197,7 +197,7 @@ namespace DotNetOpenAuth.Test.OAuth2 { Assert.That(result.AccessToken, Is.Not.Null.And.Not.Empty); Assert.That(result.RefreshToken, Is.Not.Null.And.Not.Empty); }, - CoordinatorBase.Handle(AuthorizationServerDescription.TokenEndpoint).By( + Handle(AuthorizationServerDescription.TokenEndpoint).By( async (req, ct) => { var server = new AuthorizationServer(authServerMock.Object); var request = await server.ReadAuthorizationRequestAsync(req, ct); @@ -205,7 +205,7 @@ namespace DotNetOpenAuth.Test.OAuth2 { var response = server.PrepareApproveAuthorizationRequest(request, ResourceOwnerUsername); return await server.Channel.PrepareResponseAsync(response); }), - CoordinatorBase.Handle(AuthorizationServerDescription.TokenEndpoint).By( + Handle(AuthorizationServerDescription.TokenEndpoint).By( async (req, ct) => { var server = new AuthorizationServer(authServerMock.Object); return await server.HandleTokenRequestAsync(req, ct); @@ -235,7 +235,7 @@ namespace DotNetOpenAuth.Test.OAuth2 { var result = await client.GetClientAccessTokenAsync(clientRequestedScopes, ct); Assert.That(result.Scope, Is.EquivalentTo(serverOverriddenScopes)); }, - CoordinatorBase.Handle(AuthorizationServerDescription.TokenEndpoint).By( + Handle(AuthorizationServerDescription.TokenEndpoint).By( async (req, ct) => { var server = new AuthorizationServer(authServerMock.Object); return await server.HandleTokenRequestAsync(req, ct); diff --git a/src/DotNetOpenAuth.Test/OAuth2/ResourceServerTests.cs b/src/DotNetOpenAuth.Test/OAuth2/ResourceServerTests.cs index ed5558f..d4618cf 100644 --- a/src/DotNetOpenAuth.Test/OAuth2/ResourceServerTests.cs +++ b/src/DotNetOpenAuth.Test/OAuth2/ResourceServerTests.cs @@ -99,7 +99,7 @@ namespace DotNetOpenAuth.Test.OAuth2 { Assert.That(authState.RefreshToken, Is.Null); accessToken = authState.AccessToken; }, - CoordinatorBase.Handle(AuthorizationServerDescription.TokenEndpoint).By(async (req, ct) => { + Handle(AuthorizationServerDescription.TokenEndpoint).By(async (req, ct) => { var server = new AuthorizationServer(authServer.Object); return await server.HandleTokenRequestAsync(req, ct); })); diff --git a/src/DotNetOpenAuth.Test/OAuth2/UserAgentClientAuthorizeTests.cs b/src/DotNetOpenAuth.Test/OAuth2/UserAgentClientAuthorizeTests.cs index fe439a2..eaa0d44 100644 --- a/src/DotNetOpenAuth.Test/OAuth2/UserAgentClientAuthorizeTests.cs +++ b/src/DotNetOpenAuth.Test/OAuth2/UserAgentClientAuthorizeTests.cs @@ -43,7 +43,7 @@ namespace DotNetOpenAuth.Test.OAuth2 { Assert.That(result.AccessToken, Is.Not.Null.And.Not.Empty); Assert.That(result.RefreshToken, Is.Not.Null.And.Not.Empty); }, - CoordinatorBase.Handle(AuthorizationServerDescription.AuthorizationEndpoint).By( + Handle(AuthorizationServerDescription.AuthorizationEndpoint).By( async (req, ct) => { var server = new AuthorizationServer(AuthorizationServerMock); var request = await server.ReadAuthorizationRequestAsync(req, ct); @@ -51,7 +51,7 @@ namespace DotNetOpenAuth.Test.OAuth2 { var response = server.PrepareApproveAuthorizationRequest(request, ResourceOwnerUsername); return await server.Channel.PrepareResponseAsync(response, ct); }), - CoordinatorBase.Handle(AuthorizationServerDescription.TokenEndpoint).By( + Handle(AuthorizationServerDescription.TokenEndpoint).By( async (req, ct) => { var server = new AuthorizationServer(AuthorizationServerMock); return await server.HandleTokenRequestAsync(req, ct); @@ -83,7 +83,7 @@ namespace DotNetOpenAuth.Test.OAuth2 { Assert.That(result.AccessToken, Is.Not.Null.And.Not.Empty); Assert.That(result.RefreshToken, Is.Null); }, - CoordinatorBase.Handle(AuthorizationServerDescription.AuthorizationEndpoint).By( + Handle(AuthorizationServerDescription.AuthorizationEndpoint).By( async (req, ct) => { var server = new AuthorizationServer(AuthorizationServerMock); var request = await server.ReadAuthorizationRequestAsync(req, ct); diff --git a/src/DotNetOpenAuth.Test/OAuth2/WebServerClientAuthorizeTests.cs b/src/DotNetOpenAuth.Test/OAuth2/WebServerClientAuthorizeTests.cs index bd94533..7b5c32e 100644 --- a/src/DotNetOpenAuth.Test/OAuth2/WebServerClientAuthorizeTests.cs +++ b/src/DotNetOpenAuth.Test/OAuth2/WebServerClientAuthorizeTests.cs @@ -41,7 +41,7 @@ namespace DotNetOpenAuth.Test.OAuth2 { Assert.That(result.AccessToken, Is.Not.Null.And.Not.Empty); Assert.That(result.RefreshToken, Is.Not.Null.And.Not.Empty); }, - CoordinatorBase.Handle(AuthorizationServerDescription.AuthorizationEndpoint).By( + Handle(AuthorizationServerDescription.AuthorizationEndpoint).By( async (req, ct) => { var server = new AuthorizationServer(AuthorizationServerMock); var request = await server.ReadAuthorizationRequestAsync(req, ct); @@ -49,7 +49,7 @@ namespace DotNetOpenAuth.Test.OAuth2 { var response = server.PrepareApproveAuthorizationRequest(request, ResourceOwnerUsername); return await server.Channel.PrepareResponseAsync(response, ct); }), - CoordinatorBase.Handle(AuthorizationServerDescription.TokenEndpoint).By(async (req, ct) => { + Handle(AuthorizationServerDescription.TokenEndpoint).By(async (req, ct) => { var server = new AuthorizationServer(AuthorizationServerMock); return await server.HandleTokenRequestAsync(req, ct); })); @@ -80,7 +80,7 @@ namespace DotNetOpenAuth.Test.OAuth2 { Assert.That(authState.AccessToken, Is.Not.Null.And.Not.Empty); Assert.That(authState.RefreshToken, Is.Not.Null.And.Not.Empty); }, - CoordinatorBase.Handle(AuthorizationServerDescription.TokenEndpoint).By(async (req, ct) => { + Handle(AuthorizationServerDescription.TokenEndpoint).By(async (req, ct) => { var server = new AuthorizationServer(authHostMock.Object); return await server.HandleTokenRequestAsync(req, ct); })); @@ -103,7 +103,7 @@ namespace DotNetOpenAuth.Test.OAuth2 { Assert.That(authState.AccessToken, Is.Not.Null.And.Not.Empty); Assert.That(authState.RefreshToken, Is.Null); }, - CoordinatorBase.Handle(AuthorizationServerDescription.TokenEndpoint).By(async (req, ct) => { + Handle(AuthorizationServerDescription.TokenEndpoint).By(async (req, ct) => { var server = new AuthorizationServer(authServer.Object); return await server.HandleTokenRequestAsync(req, ct); })); @@ -130,7 +130,7 @@ namespace DotNetOpenAuth.Test.OAuth2 { var authState = await client.GetClientAccessTokenAsync(TestScopes, ct); Assert.That(authState.Scope, Is.EquivalentTo(approvedScopes)); }, - CoordinatorBase.Handle(AuthorizationServerDescription.TokenEndpoint).By(async (req, ct) => { + Handle(AuthorizationServerDescription.TokenEndpoint).By(async (req, ct) => { var server = new AuthorizationServer(authServer.Object); return await server.HandleTokenRequestAsync(req, ct); })); diff --git a/src/DotNetOpenAuth.Test/OpenId/AssociationHandshakeTests.cs b/src/DotNetOpenAuth.Test/OpenId/AssociationHandshakeTests.cs index 4f0bed8..99fa56c 100644 --- a/src/DotNetOpenAuth.Test/OpenId/AssociationHandshakeTests.cs +++ b/src/DotNetOpenAuth.Test/OpenId/AssociationHandshakeTests.cs @@ -245,7 +245,7 @@ namespace DotNetOpenAuth.Test.OpenId { public async Task RPOnlyRenegotiatesOnce() { Protocol protocol = Protocol.V20; int opStep = 0; - await CoordinatorBase.RunAsync( + await RunAsync( RelyingPartyDriver(async (rp, ct) => { var association = await rp.AssociationManager.GetOrCreateAssociationAsync(new ProviderEndpointDescription(OPUri, protocol.Version), ct); Assert.IsNull(association, "The RP should quietly give up when the OP misbehaves."); @@ -350,7 +350,7 @@ namespace DotNetOpenAuth.Test.OpenId { relyingParty.SecuritySettings = this.RelyingPartySecuritySettings; rpAssociation = await relyingParty.AssociationManager.GetOrCreateAssociationAsync(opDescription, ct); }, - CoordinatorBase.Handle(opDescription.Uri).By(async (request, ct) => { + Handle(opDescription.Uri).By(async (request, ct) => { IRequest req = await provider.GetRequestAsync(request, ct); Assert.IsNotNull(req, "Expected incoming request but did not receive it."); Assert.IsTrue(req.IsResponseReady); diff --git a/src/DotNetOpenAuth.Test/OpenId/AuthenticationTests.cs b/src/DotNetOpenAuth.Test/OpenId/AuthenticationTests.cs index cb12e77..93f74e6 100644 --- a/src/DotNetOpenAuth.Test/OpenId/AuthenticationTests.cs +++ b/src/DotNetOpenAuth.Test/OpenId/AuthenticationTests.cs @@ -77,13 +77,13 @@ namespace DotNetOpenAuth.Test.OpenId { } } }, - CoordinatorBase.Handle(RPRealmUri).By(async (hostFactories, req, ct) => { + Handle(RPRealmUri).By(async (hostFactories, req, ct) => { var rp = new OpenIdRelyingParty(new StandardRelyingPartyApplicationStore(), hostFactories); IAuthenticationResponse response = await rp.GetResponseAsync(); Assert.AreEqual(AuthenticationStatus.Authenticated, response.Status); return new HttpResponseMessage(); }), - CoordinatorBase.Handle(OPUri).By( + Handle(OPUri).By( async (req, ct) => { var op = new OpenIdProvider(opStore); return await this.AutoProviderActionAsync(op, req, ct); @@ -106,14 +106,14 @@ namespace DotNetOpenAuth.Test.OpenId { } } }, - CoordinatorBase.Handle(RPRealmUri).By(async (hostFactories, req, ct) => { + Handle(RPRealmUri).By(async (hostFactories, req, ct) => { var rp = new OpenIdRelyingParty(new StandardRelyingPartyApplicationStore(), hostFactories); rp.SecuritySettings.RejectUnsolicitedAssertions = true; IAuthenticationResponse response = await rp.GetResponseAsync(req, ct); Assert.AreEqual(AuthenticationStatus.Failed, response.Status); return new HttpResponseMessage(); }), - CoordinatorBase.Handle(OPUri).By(async (hostFactories, req, ct) => { + Handle(OPUri).By(async (hostFactories, req, ct) => { var op = new OpenIdProvider(opStore); return await this.AutoProviderActionAsync(op, req, ct); }), @@ -139,14 +139,14 @@ namespace DotNetOpenAuth.Test.OpenId { } } }, - CoordinatorBase.Handle(RPRealmUri).By(async (hostFactories, req, ct) => { + Handle(RPRealmUri).By(async (hostFactories, req, ct) => { var rp = new OpenIdRelyingParty(new StandardRelyingPartyApplicationStore(), hostFactories); rp.SecuritySettings.RejectDelegatingIdentifiers = true; IAuthenticationResponse response = await rp.GetResponseAsync(req, ct); Assert.AreEqual(AuthenticationStatus.Failed, response.Status); return new HttpResponseMessage(); }), - CoordinatorBase.Handle(OPUri).By(async (hostFactories, req, ct) => { + Handle(OPUri).By(async (hostFactories, req, ct) => { var op = new OpenIdProvider(opStore); return await this.AutoProviderActionAsync(op, req, ct); }), diff --git a/src/DotNetOpenAuth.Test/OpenId/ChannelElements/ExtensionsBindingElementTests.cs b/src/DotNetOpenAuth.Test/OpenId/ChannelElements/ExtensionsBindingElementTests.cs index ca9b0a7..7a1add2 100644 --- a/src/DotNetOpenAuth.Test/OpenId/ChannelElements/ExtensionsBindingElementTests.cs +++ b/src/DotNetOpenAuth.Test/OpenId/ChannelElements/ExtensionsBindingElementTests.cs @@ -142,7 +142,7 @@ namespace DotNetOpenAuth.Test.OpenId.ChannelElements { } } }, - CoordinatorBase.Handle(RPRealmUri).By(async (hostFactories, req, ct) => { + Handle(RPRealmUri).By(async (hostFactories, req, ct) => { var rp = new OpenIdRelyingParty(new StandardRelyingPartyApplicationStore(), hostFactories); RegisterMockExtension(rp.Channel); @@ -164,7 +164,7 @@ namespace DotNetOpenAuth.Test.OpenId.ChannelElements { return new HttpResponseMessage(); }), - CoordinatorBase.Handle(OPUri).By(async (hostFactories, req, ct) => { + Handle(OPUri).By(async (hostFactories, req, ct) => { var op = new OpenIdProvider(opStore); return await AutoProviderActionAsync(op, req, ct); })); diff --git a/src/DotNetOpenAuth.Test/OpenId/DiscoveryServices/UriDiscoveryServiceTests.cs b/src/DotNetOpenAuth.Test/OpenId/DiscoveryServices/UriDiscoveryServiceTests.cs index e75afb8..06cb745 100644 --- a/src/DotNetOpenAuth.Test/OpenId/DiscoveryServices/UriDiscoveryServiceTests.cs +++ b/src/DotNetOpenAuth.Test/OpenId/DiscoveryServices/UriDiscoveryServiceTests.cs @@ -112,7 +112,7 @@ namespace DotNetOpenAuth.Test.OpenId.DiscoveryServices { HttpUtility.HtmlEncode(insecureXrdsSource), HttpUtility.HtmlEncode(OPUriSsl.AbsoluteUri), HttpUtility.HtmlEncode(OPLocalIdentifiersSsl[1].AbsoluteUri)); - this.HostFactories.Handlers.Add(CoordinatorBase.Handle(VanityUriSsl).By(html, "text/html")); + this.HostFactories.Handlers.Add(Handle(VanityUriSsl).By(html, "text/html")); Identifier userSuppliedIdentifier = new UriIdentifier(VanityUriSsl, true); diff --git a/src/DotNetOpenAuth.Test/OpenId/Extensions/ExtensionTestUtilities.cs b/src/DotNetOpenAuth.Test/OpenId/Extensions/ExtensionTestUtilities.cs index 057abb3..7c7f945 100644 --- a/src/DotNetOpenAuth.Test/OpenId/Extensions/ExtensionTestUtilities.cs +++ b/src/DotNetOpenAuth.Test/OpenId/Extensions/ExtensionTestUtilities.cs @@ -41,7 +41,7 @@ namespace DotNetOpenAuth.Test.OpenId.Extensions { var cryptoKeyStore = new MemoryCryptoKeyStore(); var associationStore = new ProviderAssociationHandleEncoder(cryptoKeyStore); Association association = HmacShaAssociationProvider.Create(protocol, protocol.Args.SignatureAlgorithm.Best, AssociationRelyingPartyType.Smart, associationStore, securitySettings); - await CoordinatorBase.RunAsync( + await TestBase.RunAsync( OpenIdTestBase.RelyingPartyDriver(async (rp, ct) => { RegisterExtension(rp.Channel, Mocks.MockOpenIdExtension.Factory); var requestBase = new CheckIdRequest(protocol.Version, OpenIdTestBase.OPUri, AuthenticationRequestMode.Immediate); diff --git a/src/DotNetOpenAuth.Test/OpenId/NonIdentityTests.cs b/src/DotNetOpenAuth.Test/OpenId/NonIdentityTests.cs index 8764e69..16c096f 100644 --- a/src/DotNetOpenAuth.Test/OpenId/NonIdentityTests.cs +++ b/src/DotNetOpenAuth.Test/OpenId/NonIdentityTests.cs @@ -23,7 +23,7 @@ namespace DotNetOpenAuth.Test.OpenId { Protocol protocol = Protocol.V20; var mode = AuthenticationRequestMode.Setup; - await CoordinatorBase.RunAsync( + await RunAsync( RelyingPartyDriver(async (rp, ct) => { var request = new SignedResponseRequest(protocol.Version, OPUri, mode); var authRequest = await rp.Channel.PrepareResponseAsync(request); @@ -44,7 +44,7 @@ namespace DotNetOpenAuth.Test.OpenId { public async Task ExtensionOnlyFacadeLevel() { Protocol protocol = Protocol.V20; int opStep = 0; - await CoordinatorBase.RunAsync( + await RunAsync( RelyingPartyDriver(async (rp, ct) => { var request = await rp.CreateRequestAsync(GetMockIdentifier(protocol.ProtocolVersion), RPRealmUri, RPUri, ct); diff --git a/src/DotNetOpenAuth.Test/OpenId/OpenIdTestBase.cs b/src/DotNetOpenAuth.Test/OpenId/OpenIdTestBase.cs index d3b8aa0..f4a9684 100644 --- a/src/DotNetOpenAuth.Test/OpenId/OpenIdTestBase.cs +++ b/src/DotNetOpenAuth.Test/OpenId/OpenIdTestBase.cs @@ -141,9 +141,9 @@ namespace DotNetOpenAuth.Test.OpenId { /// <remarks> /// This is a very useful method to pass to the OpenIdCoordinator constructor for the Provider argument. /// </remarks> - internal CoordinatorBase.Handler AutoProvider { + internal TestBase.Handler AutoProvider { get { - return CoordinatorBase.Handle(OPUri).By( + return Handle(OPUri).By( async (req, ct) => { var provider = new OpenIdProvider(new StandardProviderApplicationStore()); return await this.AutoProviderActionAsync(provider, req, ct); @@ -264,8 +264,8 @@ namespace DotNetOpenAuth.Test.OpenId { }; } - internal static CoordinatorBase.Handler HandleProvider(Func<OpenIdProvider, HttpRequestMessage, CancellationToken, Task<HttpResponseMessage>> provider) { - return CoordinatorBase.Handle(OPUri).By(async (req, ct) => { + protected internal static Handler HandleProvider(Func<OpenIdProvider, HttpRequestMessage, CancellationToken, Task<HttpResponseMessage>> provider) { + return Handle(OPUri).By(async (req, ct) => { var op = new OpenIdProvider(new StandardProviderApplicationStore()); return await provider(op, req, ct); }); diff --git a/src/DotNetOpenAuth.Test/OpenId/Provider/HostProcessedRequestTests.cs b/src/DotNetOpenAuth.Test/OpenId/Provider/HostProcessedRequestTests.cs index 966e712..dc692fc 100644 --- a/src/DotNetOpenAuth.Test/OpenId/Provider/HostProcessedRequestTests.cs +++ b/src/DotNetOpenAuth.Test/OpenId/Provider/HostProcessedRequestTests.cs @@ -41,7 +41,7 @@ namespace DotNetOpenAuth.Test.OpenId.Provider { [Test] public async Task IsReturnUrlDiscoverableValidResponse() { - await CoordinatorBase.RunAsync( + await RunAsync( async (hostFactories, ct) => { this.request = new AuthenticationRequest(this.provider, this.checkIdRequest); Assert.AreEqual(RelyingPartyDiscoveryResult.Success, await this.request.IsReturnUrlDiscoverableAsync(this.provider.Channel.HostFactories, CancellationToken.None)); @@ -55,7 +55,7 @@ namespace DotNetOpenAuth.Test.OpenId.Provider { /// </summary> [Test] public async Task IsReturnUrlDiscoverableNotSsl() { - await CoordinatorBase.RunAsync( + await RunAsync( async (hostFactories, ct) => { this.provider.SecuritySettings.RequireSsl = true; Assert.AreEqual(RelyingPartyDiscoveryResult.NoServiceDocument, await this.request.IsReturnUrlDiscoverableAsync(this.provider.Channel.HostFactories, CancellationToken.None)); @@ -68,7 +68,7 @@ namespace DotNetOpenAuth.Test.OpenId.Provider { /// </summary> [Test] public async Task IsReturnUrlDiscoverableRequireSsl() { - await CoordinatorBase.RunAsync( + await RunAsync( async (hostFactories, ct) => { this.checkIdRequest.Realm = RPRealmUriSsl; this.checkIdRequest.ReturnTo = RPUriSsl; @@ -88,7 +88,7 @@ namespace DotNetOpenAuth.Test.OpenId.Provider { [Test] public async Task IsReturnUrlDiscoverableValidButNoMatch() { - await CoordinatorBase.RunAsync( + await RunAsync( async (hostFactories, ct) => { this.provider.SecuritySettings.RequireSsl = false; // reset for another failure test case this.checkIdRequest.ReturnTo = new Uri("http://somerandom/host"); diff --git a/src/DotNetOpenAuth.Test/OpenId/RelyingParty/OpenIdRelyingPartyTests.cs b/src/DotNetOpenAuth.Test/OpenId/RelyingParty/OpenIdRelyingPartyTests.cs index 1dc5678..c2c5db5 100644 --- a/src/DotNetOpenAuth.Test/OpenId/RelyingParty/OpenIdRelyingPartyTests.cs +++ b/src/DotNetOpenAuth.Test/OpenId/RelyingParty/OpenIdRelyingPartyTests.cs @@ -94,7 +94,7 @@ namespace DotNetOpenAuth.Test.OpenId.RelyingParty { async (rp, ct) => { await rp.CreateRequestAsync(nonOpenId, RPRealmUri, RPUri); }), - CoordinatorBase.Handle(nonOpenId).By("<html/>", "text/html")); + Handle(nonOpenId).By("<html/>", "text/html")); await coordinator.RunAsync(); } @@ -107,7 +107,7 @@ namespace DotNetOpenAuth.Test.OpenId.RelyingParty { var requests = await rp.CreateRequestsAsync(nonOpenId, RPRealmUri, RPUri); Assert.AreEqual(0, requests.Count()); }), - CoordinatorBase.Handle(nonOpenId).By("<html/>", "text/html")); + Handle(nonOpenId).By("<html/>", "text/html")); await coordinator.RunAsync(); } @@ -129,7 +129,7 @@ namespace DotNetOpenAuth.Test.OpenId.RelyingParty { } } }, - CoordinatorBase.Handle(RPRealmUri).By( + Handle(RPRealmUri).By( async (hostFactories, req, ct) => { var rp = new OpenIdRelyingParty(new StandardRelyingPartyApplicationStore()); diff --git a/src/DotNetOpenAuth.Test/TestBase.cs b/src/DotNetOpenAuth.Test/TestBase.cs index 0c958ef..875af7a 100644 --- a/src/DotNetOpenAuth.Test/TestBase.cs +++ b/src/DotNetOpenAuth.Test/TestBase.cs @@ -7,7 +7,11 @@ namespace DotNetOpenAuth.Test { using System; using System.IO; + using System.Net; + using System.Net.Http; + using System.Net.Http.Headers; using System.Reflection; + using System.Threading; using System.Threading.Tasks; using System.Web; using DotNetOpenAuth.Messaging.Reflection; @@ -17,6 +21,8 @@ namespace DotNetOpenAuth.Test { using log4net; using NUnit.Framework; + using log4net.Config; + /// <summary> /// The base class that all test classes inherit from. /// </summary> @@ -56,7 +62,7 @@ namespace DotNetOpenAuth.Test { /// </summary> [SetUp] public virtual void SetUp() { - log4net.Config.XmlConfigurator.Configure(Assembly.GetExecutingAssembly().GetManifestResourceStream("DotNetOpenAuth.Test.Logging.config")); + XmlConfigurator.Configure(Assembly.GetExecutingAssembly().GetManifestResourceStream("DotNetOpenAuth.Test.Logging.config")); MessageBase.LowSecurityMode = true; this.messageDescriptions = new MessageDescriptionCollection(); this.HostFactories = new MockingHostFactories(); @@ -68,7 +74,7 @@ namespace DotNetOpenAuth.Test { /// </summary> [TearDown] public virtual void Cleanup() { - log4net.LogManager.Shutdown(); + LogManager.Shutdown(); } internal static Stats MeasurePerformance(Func<Task> action, float maximumAllowedUnitTime, int samples = 10, int iterations = 100, string name = null) { @@ -107,5 +113,47 @@ namespace DotNetOpenAuth.Test { new HttpRequest("mock", "http://mock", "mock"), new HttpResponse(new StringWriter())); } + + protected internal static Task RunAsync(Func<IHostFactories, CancellationToken, Task> driver, params Handler[] handlers) { + var coordinator = new CoordinatorBase(driver, handlers); + return coordinator.RunAsync(); + } + + protected internal static Handler Handle(Uri uri) { + return new Handler(uri); + } + + protected internal struct Handler { + internal Handler(Uri uri) + : this() { + this.Uri = uri; + } + + public Uri Uri { get; private set; } + + public Func<IHostFactories, HttpRequestMessage, CancellationToken, Task<HttpResponseMessage>> MessageHandler { get; private set; } + + internal Handler By(Func<IHostFactories, HttpRequestMessage, CancellationToken, Task<HttpResponseMessage>> handler) { + return new Handler(this.Uri) { MessageHandler = handler }; + } + + internal Handler By(Func<HttpRequestMessage, CancellationToken, Task<HttpResponseMessage>> handler) { + return this.By((hf, req, ct) => handler(req, ct)); + } + + internal Handler By(Func<HttpRequestMessage, HttpResponseMessage> handler) { + return this.By((req, ct) => Task.FromResult(handler(req))); + } + + internal Handler By(string responseContent, string contentType, HttpStatusCode statusCode = HttpStatusCode.OK) { + return this.By( + req => { + var response = new HttpResponseMessage(statusCode); + response.Content = new StringContent(responseContent); + response.Content.Headers.ContentType = new MediaTypeHeaderValue(contentType); + return response; + }); + } + } } } |