summaryrefslogtreecommitdiffstats
path: root/src/DotNetOpenAuth.Test/OpenId/OpenIdTestBase.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/DotNetOpenAuth.Test/OpenId/OpenIdTestBase.cs')
-rw-r--r--src/DotNetOpenAuth.Test/OpenId/OpenIdTestBase.cs65
1 files changed, 33 insertions, 32 deletions
diff --git a/src/DotNetOpenAuth.Test/OpenId/OpenIdTestBase.cs b/src/DotNetOpenAuth.Test/OpenId/OpenIdTestBase.cs
index 7e58047..75217fd 100644
--- a/src/DotNetOpenAuth.Test/OpenId/OpenIdTestBase.cs
+++ b/src/DotNetOpenAuth.Test/OpenId/OpenIdTestBase.cs
@@ -138,43 +138,44 @@ namespace DotNetOpenAuth.Test.OpenId {
}
/// <summary>
- /// A default implementation of a simple provider that responds to authentication requests
+ /// Gets a default implementation of a simple provider that responds to authentication requests
/// per the scenario that is being simulated.
/// </summary>
- /// <param name="provider">The OpenIdProvider on which the process messages.</param>
/// <remarks>
/// This is a very useful method to pass to the OpenIdCoordinator constructor for the Provider argument.
/// </remarks>
- internal async Task AutoProvider(OpenIdProvider provider, CancellationToken cancellationToken) {
- while (!((CoordinatingChannel)provider.Channel).RemoteChannel.IsDisposed) {
- IRequest request = await provider.GetRequestAsync(cancellationToken);
- if (request == null) {
- continue;
- }
-
- if (!request.IsResponseReady) {
- var authRequest = (DotNetOpenAuth.OpenId.Provider.IAuthenticationRequest)request;
- switch (this.AutoProviderScenario) {
- case Scenarios.AutoApproval:
- authRequest.IsAuthenticated = true;
- break;
- case Scenarios.AutoApprovalAddFragment:
- authRequest.SetClaimedIdentifierFragment("frag");
- authRequest.IsAuthenticated = true;
- break;
- case Scenarios.ApproveOnSetup:
- authRequest.IsAuthenticated = !authRequest.Immediate;
- break;
- case Scenarios.AlwaysDeny:
- authRequest.IsAuthenticated = false;
- break;
- default:
- // All other scenarios are done programmatically only.
- throw new InvalidOperationException("Unrecognized scenario");
- }
- }
-
- await provider.Channel.PrepareResponseAsync(request, cancellationToken);
+ internal CoordinatorBase.Handler AutoProvider {
+ get {
+ return CoordinatorBase.Handle(OPUri).By(
+ async (req, ct) => {
+ var provider = new OpenIdProvider(new StandardProviderApplicationStore());
+ IRequest request = await provider.GetRequestAsync(req, ct);
+ Assert.That(request, Is.Not.Null);
+
+ if (!request.IsResponseReady) {
+ var authRequest = (DotNetOpenAuth.OpenId.Provider.IAuthenticationRequest)request;
+ switch (this.AutoProviderScenario) {
+ case Scenarios.AutoApproval:
+ authRequest.IsAuthenticated = true;
+ break;
+ case Scenarios.AutoApprovalAddFragment:
+ authRequest.SetClaimedIdentifierFragment("frag");
+ authRequest.IsAuthenticated = true;
+ break;
+ case Scenarios.ApproveOnSetup:
+ authRequest.IsAuthenticated = !authRequest.Immediate;
+ break;
+ case Scenarios.AlwaysDeny:
+ authRequest.IsAuthenticated = false;
+ break;
+ default:
+ // All other scenarios are done programmatically only.
+ throw new InvalidOperationException("Unrecognized scenario");
+ }
+ }
+
+ return await provider.PrepareResponseAsync(request, ct);
+ });
}
}