summaryrefslogtreecommitdiffstats
path: root/src/DotNetOpenAuth.Test/OpenId/NonIdentityTests.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/DotNetOpenAuth.Test/OpenId/NonIdentityTests.cs')
-rw-r--r--src/DotNetOpenAuth.Test/OpenId/NonIdentityTests.cs91
1 files changed, 61 insertions, 30 deletions
diff --git a/src/DotNetOpenAuth.Test/OpenId/NonIdentityTests.cs b/src/DotNetOpenAuth.Test/OpenId/NonIdentityTests.cs
index 393239b..11463c7 100644
--- a/src/DotNetOpenAuth.Test/OpenId/NonIdentityTests.cs
+++ b/src/DotNetOpenAuth.Test/OpenId/NonIdentityTests.cs
@@ -5,53 +5,84 @@
//-----------------------------------------------------------------------
namespace DotNetOpenAuth.Test.OpenId {
+ using System;
+ using System.Net.Http;
+ using System.Threading;
+ using System.Threading.Tasks;
+
+ using DotNetOpenAuth.Messaging;
using DotNetOpenAuth.OpenId;
using DotNetOpenAuth.OpenId.Messages;
using DotNetOpenAuth.OpenId.Provider;
using DotNetOpenAuth.OpenId.RelyingParty;
using NUnit.Framework;
+ using System.Net;
[TestFixture]
public class NonIdentityTests : OpenIdTestBase {
[Test]
- public void ExtensionOnlyChannelLevel() {
+ public async Task ExtensionOnlyChannelLevel() {
Protocol protocol = Protocol.V20;
- AuthenticationRequestMode mode = AuthenticationRequestMode.Setup;
-
- var coordinator = new OpenIdCoordinator(
- rp => {
- var request = new SignedResponseRequest(protocol.Version, OPUri, mode);
- rp.Channel.Respond(request);
- },
- op => {
- var request = op.Channel.ReadFromRequest<SignedResponseRequest>();
+ var mode = AuthenticationRequestMode.Setup;
+
+ HandleProvider(
+ async (op, req) => {
+ var request = await op.Channel.ReadFromRequestAsync<SignedResponseRequest>(req, CancellationToken.None);
Assert.IsNotInstanceOf<CheckIdRequest>(request);
+ return new HttpResponseMessage();
});
- coordinator.Run();
+
+ {
+ var rp = this.CreateRelyingParty();
+ var request = new SignedResponseRequest(protocol.Version, OPUri, mode);
+ var authRequest = await rp.Channel.PrepareResponseAsync(request);
+ using (var httpClient = rp.Channel.HostFactories.CreateHttpClient()) {
+ using (var response = await httpClient.GetAsync(authRequest.Headers.Location)) {
+ response.EnsureSuccessStatusCode();
+ }
+ }
+ }
}
[Test]
- public void ExtensionOnlyFacadeLevel() {
+ public async Task ExtensionOnlyFacadeLevel() {
Protocol protocol = Protocol.V20;
- var coordinator = new OpenIdCoordinator(
- rp => {
- var request = rp.CreateRequest(GetMockIdentifier(protocol.ProtocolVersion), RPRealmUri, RPUri);
-
- request.IsExtensionOnly = true;
- rp.Channel.Respond(request.RedirectingResponse.OriginalMessage);
- IAuthenticationResponse response = rp.GetResponse();
- Assert.AreEqual(AuthenticationStatus.ExtensionsOnly, response.Status);
- },
- op => {
- var assocRequest = op.GetRequest();
- op.Respond(assocRequest);
-
- var request = (IAnonymousRequest)op.GetRequest();
- request.IsApproved = true;
- Assert.IsNotInstanceOf<CheckIdRequest>(request);
- op.Respond(request);
+ int opStep = 0;
+ HandleProvider(
+ async (op, req) => {
+ switch (++opStep) {
+ case 1:
+ var assocRequest = await op.GetRequestAsync(req);
+ return await op.PrepareResponseAsync(assocRequest);
+ case 2:
+ var request = (IAnonymousRequest)await op.GetRequestAsync(req);
+ request.IsApproved = true;
+ Assert.IsNotInstanceOf<CheckIdRequest>(request);
+ return await op.PrepareResponseAsync(request);
+ default:
+ throw Assumes.NotReachable();
+ }
});
- coordinator.Run();
+
+ {
+ var rp = this.CreateRelyingParty();
+ var request = await rp.CreateRequestAsync(GetMockIdentifier(protocol.ProtocolVersion), RPRealmUri, RPUri);
+
+ request.IsExtensionOnly = true;
+ var redirectRequest = await request.GetRedirectingResponseAsync();
+ Uri redirectResponseUrl;
+ this.HostFactories.AllowAutoRedirects = false;
+ using (var httpClient = this.HostFactories.CreateHttpClient()) {
+ using (var redirectResponse = await httpClient.GetAsync(redirectRequest.Headers.Location)) {
+ Assert.That(redirectResponse.StatusCode, Is.EqualTo(HttpStatusCode.Redirect));
+ redirectResponseUrl = redirectResponse.Headers.Location;
+ }
+ }
+
+ IAuthenticationResponse response =
+ await rp.GetResponseAsync(new HttpRequestMessage(HttpMethod.Get, redirectResponseUrl));
+ Assert.AreEqual(AuthenticationStatus.ExtensionsOnly, response.Status);
+ }
}
}
}