summaryrefslogtreecommitdiffstats
path: root/src/DotNetOpenAuth.Test/OAuth2
diff options
context:
space:
mode:
Diffstat (limited to 'src/DotNetOpenAuth.Test/OAuth2')
-rw-r--r--src/DotNetOpenAuth.Test/OAuth2/AuthorizationServerTests.cs258
-rw-r--r--src/DotNetOpenAuth.Test/OAuth2/ResourceServerTests.cs21
-rw-r--r--src/DotNetOpenAuth.Test/OAuth2/UserAgentClientAuthorizeTests.cs126
-rw-r--r--src/DotNetOpenAuth.Test/OAuth2/WebServerClientAuthorizeTests.cs119
4 files changed, 245 insertions, 279 deletions
diff --git a/src/DotNetOpenAuth.Test/OAuth2/AuthorizationServerTests.cs b/src/DotNetOpenAuth.Test/OAuth2/AuthorizationServerTests.cs
index b2f2666..3302db7 100644
--- a/src/DotNetOpenAuth.Test/OAuth2/AuthorizationServerTests.cs
+++ b/src/DotNetOpenAuth.Test/OAuth2/AuthorizationServerTests.cs
@@ -28,66 +28,60 @@ namespace DotNetOpenAuth.Test.OAuth2 {
/// </summary>
[Test]
public async Task ErrorResponseTest() {
- var coordinator = new CoordinatorBase(
- async (hostFactories, ct) => {
- var request = new AccessTokenAuthorizationCodeRequestC(AuthorizationServerDescription) { ClientIdentifier = ClientId, ClientSecret = ClientSecret, AuthorizationCode = "foo" };
- var client = new UserAgentClient(AuthorizationServerDescription, hostFactories: hostFactories);
- var response = await client.Channel.RequestAsync<AccessTokenFailedResponse>(request, CancellationToken.None);
- Assert.That(response.Error, Is.Not.Null.And.Not.Empty);
- Assert.That(response.Error, Is.EqualTo(Protocol.AccessTokenRequestErrorCodes.InvalidRequest));
- },
- 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);
- }));
- await coordinator.RunAsync();
+ });
+ var request = new AccessTokenAuthorizationCodeRequestC(AuthorizationServerDescription) { ClientIdentifier = ClientId, ClientSecret = ClientSecret, AuthorizationCode = "foo" };
+ var client = new UserAgentClient(AuthorizationServerDescription, hostFactories: this.HostFactories);
+ var response = await client.Channel.RequestAsync<AccessTokenFailedResponse>(request, CancellationToken.None);
+ Assert.That(response.Error, Is.Not.Null.And.Not.Empty);
+ Assert.That(response.Error, Is.EqualTo(Protocol.AccessTokenRequestErrorCodes.InvalidRequest));
}
[Test]
public async Task DecodeRefreshToken() {
var refreshTokenSource = new TaskCompletionSource<string>();
- var coordinator = new CoordinatorBase(
- async (hostFactories, ct) => {
- var client = new WebServerClient(AuthorizationServerDescription);
- try {
- var authState = new AuthorizationState(TestScopes) { Callback = ClientCallback, };
- var authRedirectResponse = await client.PrepareRequestUserAuthorizationAsync(authState, ct);
- Uri authCompleteUri;
- using (var httpClient = hostFactories.CreateHttpClient()) {
- using (var response = await httpClient.GetAsync(authRedirectResponse.Headers.Location)) {
- response.EnsureSuccessStatusCode();
- authCompleteUri = response.Headers.Location;
- }
- }
-
- var authCompleteRequest = new HttpRequestMessage(HttpMethod.Get, authCompleteUri);
- authCompleteRequest.Headers.Add("Cookie", string.Join("; ", authRedirectResponse.Headers.GetValues("Set-Cookie")));
- var result = await client.ProcessUserAuthorizationAsync(authCompleteRequest, ct);
- Assert.That(result.AccessToken, Is.Not.Null.And.Not.Empty);
- Assert.That(result.RefreshToken, Is.Not.Null.And.Not.Empty);
- refreshTokenSource.SetResult(result.RefreshToken);
- } catch {
- refreshTokenSource.TrySetCanceled();
+ 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);
+ });
+ Handle(AuthorizationServerDescription.TokenEndpoint).By(
+ async (req, ct) => {
+ var server = new AuthorizationServer(AuthorizationServerMock);
+ var response = await server.HandleTokenRequestAsync(req, ct);
+ var authorization = server.DecodeRefreshToken(refreshTokenSource.Task.Result);
+ Assert.That(authorization, Is.Not.Null);
+ Assert.That(authorization.User, Is.EqualTo(ResourceOwnerUsername));
+ return response;
+ });
+
+ var client = new WebServerClient(AuthorizationServerDescription);
+ try {
+ var authState = new AuthorizationState(TestScopes) { Callback = ClientCallback, };
+ var authRedirectResponse = await client.PrepareRequestUserAuthorizationAsync(authState);
+ Uri authCompleteUri;
+ using (var httpClient = this.HostFactories.CreateHttpClient()) {
+ using (var response = await httpClient.GetAsync(authRedirectResponse.Headers.Location)) {
+ response.EnsureSuccessStatusCode();
+ authCompleteUri = response.Headers.Location;
}
- },
- 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);
- }),
- Handle(AuthorizationServerDescription.TokenEndpoint).By(
- async (req, ct) => {
- var server = new AuthorizationServer(AuthorizationServerMock);
- var response = await server.HandleTokenRequestAsync(req, ct);
- var authorization = server.DecodeRefreshToken(refreshTokenSource.Task.Result);
- Assert.That(authorization, Is.Not.Null);
- Assert.That(authorization.User, Is.EqualTo(ResourceOwnerUsername));
- return response;
- }));
- await coordinator.RunAsync();
+ }
+
+ var authCompleteRequest = new HttpRequestMessage(HttpMethod.Get, authCompleteUri);
+ authCompleteRequest.Headers.Add("Cookie", string.Join("; ", authRedirectResponse.Headers.GetValues("Set-Cookie")));
+ var result = await client.ProcessUserAuthorizationAsync(authCompleteRequest);
+ Assert.That(result.AccessToken, Is.Not.Null.And.Not.Empty);
+ Assert.That(result.RefreshToken, Is.Not.Null.And.Not.Empty);
+ refreshTokenSource.SetResult(result.RefreshToken);
+ } catch {
+ refreshTokenSource.TrySetCanceled();
+ }
}
[Test]
@@ -104,21 +98,15 @@ namespace DotNetOpenAuth.Test.OAuth2 {
return response;
});
- // AuthorizationServerDescription,
- //authServerMock.Object,
- //new WebServerClient(AuthorizationServerDescription),
- var coordinator = new CoordinatorBase(
- async (hostFactories, ct) => {
- var client = new WebServerClient(AuthorizationServerDescription, hostFactories: hostFactories);
- var result = await client.ExchangeUserCredentialForTokenAsync(ResourceOwnerUsername, ResourceOwnerPassword, clientRequestedScopes, ct);
- Assert.That(result.Scope, Is.EquivalentTo(serverOverriddenScopes));
- },
- Handle(AuthorizationServerDescription.TokenEndpoint).By(
- async (req, ct) => {
- var server = new AuthorizationServer(authServerMock.Object);
- return await server.HandleTokenRequestAsync(req, ct);
- }));
- await coordinator.RunAsync();
+ Handle(AuthorizationServerDescription.TokenEndpoint).By(
+ async (req, ct) => {
+ var server = new AuthorizationServer(authServerMock.Object);
+ return await server.HandleTokenRequestAsync(req, ct);
+ });
+
+ var client = new WebServerClient(AuthorizationServerDescription, hostFactories: this.HostFactories);
+ var result = await client.ExchangeUserCredentialForTokenAsync(ResourceOwnerUsername, ResourceOwnerPassword, clientRequestedScopes);
+ Assert.That(result.Scope, Is.EquivalentTo(serverOverriddenScopes));
}
[Test]
@@ -131,18 +119,16 @@ namespace DotNetOpenAuth.Test.OAuth2 {
Assert.That(req.UserName, Is.EqualTo(ResourceOwnerUsername));
return response;
});
- var coordinator = new CoordinatorBase(
- async (hostFactories, ct) => {
- var client = new WebServerClient(AuthorizationServerDescription, hostFactories: hostFactories);
- var result = await client.ExchangeUserCredentialForTokenAsync(ResourceOwnerUsername, ResourceOwnerPassword, TestScopes, ct);
- Assert.That(result.AccessToken, Is.Not.Null);
- },
- Handle(AuthorizationServerDescription.TokenEndpoint).By(
- async (req, ct) => {
- var server = new AuthorizationServer(authServerMock.Object);
- return await server.HandleTokenRequestAsync(req, ct);
- }));
- await coordinator.RunAsync();
+
+ Handle(AuthorizationServerDescription.TokenEndpoint).By(
+ async (req, ct) => {
+ var server = new AuthorizationServer(authServerMock.Object);
+ return await server.HandleTokenRequestAsync(req, ct);
+ });
+
+ var client = new WebServerClient(AuthorizationServerDescription, hostFactories: this.HostFactories);
+ var result = await client.ExchangeUserCredentialForTokenAsync(ResourceOwnerUsername, ResourceOwnerPassword, TestScopes);
+ Assert.That(result.AccessToken, Is.Not.Null);
}
[Test]
@@ -154,18 +140,16 @@ namespace DotNetOpenAuth.Test.OAuth2 {
Assert.That(req.UserName, Is.Null);
return new AutomatedAuthorizationCheckResponse(req, true);
});
- var coordinator = new CoordinatorBase(
- async (hostFactories, ct) => {
- var client = new WebServerClient(AuthorizationServerDescription, hostFactories: hostFactories);
- var result = await client.GetClientAccessTokenAsync(TestScopes, ct);
- Assert.That(result.AccessToken, Is.Not.Null);
- },
- Handle(AuthorizationServerDescription.TokenEndpoint).By(
- async (req, ct) => {
- var server = new AuthorizationServer(authServerMock.Object);
- return await server.HandleTokenRequestAsync(req, ct);
- }));
- await coordinator.RunAsync();
+
+ Handle(AuthorizationServerDescription.TokenEndpoint).By(
+ async (req, ct) => {
+ var server = new AuthorizationServer(authServerMock.Object);
+ return await server.HandleTokenRequestAsync(req, ct);
+ });
+
+ var client = new WebServerClient(AuthorizationServerDescription, hostFactories: this.HostFactories);
+ var result = await client.GetClientAccessTokenAsync(TestScopes);
+ Assert.That(result.AccessToken, Is.Not.Null);
}
[Test]
@@ -177,40 +161,38 @@ namespace DotNetOpenAuth.Test.OAuth2 {
Assert.That(req.User, Is.EqualTo(ResourceOwnerUsername));
return true;
});
- var coordinator = new CoordinatorBase(
- async (hostFactories, ct) => {
- var client = new WebServerClient(AuthorizationServerDescription, hostFactories: hostFactories);
- var authState = new AuthorizationState(TestScopes) {
- Callback = ClientCallback,
- };
- var authRedirectResponse = await client.PrepareRequestUserAuthorizationAsync(authState, ct);
- Uri authCompleteUri;
- using (var httpClient = hostFactories.CreateHttpClient()) {
- using (var response = await httpClient.GetAsync(authRedirectResponse.Headers.Location)) {
- response.EnsureSuccessStatusCode();
- authCompleteUri = response.Headers.Location;
- }
- }
- var authCompleteRequest = new HttpRequestMessage(HttpMethod.Get, authCompleteUri);
- var result = await client.ProcessUserAuthorizationAsync(authCompleteRequest, ct);
- Assert.That(result.AccessToken, Is.Not.Null.And.Not.Empty);
- Assert.That(result.RefreshToken, Is.Not.Null.And.Not.Empty);
- },
- Handle(AuthorizationServerDescription.TokenEndpoint).By(
- async (req, ct) => {
- var server = new AuthorizationServer(authServerMock.Object);
- 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);
- }),
- Handle(AuthorizationServerDescription.TokenEndpoint).By(
- async (req, ct) => {
- var server = new AuthorizationServer(authServerMock.Object);
- return await server.HandleTokenRequestAsync(req, ct);
- }));
- await coordinator.RunAsync();
+ Handle(AuthorizationServerDescription.TokenEndpoint).By(
+ async (req, ct) => {
+ var server = new AuthorizationServer(authServerMock.Object);
+ 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);
+ });
+ Handle(AuthorizationServerDescription.TokenEndpoint).By(
+ async (req, ct) => {
+ var server = new AuthorizationServer(authServerMock.Object);
+ return await server.HandleTokenRequestAsync(req, ct);
+ });
+
+ var client = new WebServerClient(AuthorizationServerDescription, hostFactories: this.HostFactories);
+ var authState = new AuthorizationState(TestScopes) {
+ Callback = ClientCallback,
+ };
+ var authRedirectResponse = await client.PrepareRequestUserAuthorizationAsync(authState);
+ Uri authCompleteUri;
+ using (var httpClient = this.HostFactories.CreateHttpClient()) {
+ using (var response = await httpClient.GetAsync(authRedirectResponse.Headers.Location)) {
+ response.EnsureSuccessStatusCode();
+ authCompleteUri = response.Headers.Location;
+ }
+ }
+
+ var authCompleteRequest = new HttpRequestMessage(HttpMethod.Get, authCompleteUri);
+ var result = await client.ProcessUserAuthorizationAsync(authCompleteRequest);
+ Assert.That(result.AccessToken, Is.Not.Null.And.Not.Empty);
+ Assert.That(result.RefreshToken, Is.Not.Null.And.Not.Empty);
}
[Test]
@@ -226,21 +208,19 @@ namespace DotNetOpenAuth.Test.OAuth2 {
response.ApprovedScope.UnionWith(serverOverriddenScopes);
return response;
});
- var coordinator = new CoordinatorBase(
- async (hostFactories, ct) => {
- var client = new WebServerClient(AuthorizationServerDescription, hostFactories: hostFactories);
- var authState = new AuthorizationState(TestScopes) {
- Callback = ClientCallback,
- };
- var result = await client.GetClientAccessTokenAsync(clientRequestedScopes, ct);
- Assert.That(result.Scope, Is.EquivalentTo(serverOverriddenScopes));
- },
- Handle(AuthorizationServerDescription.TokenEndpoint).By(
- async (req, ct) => {
- var server = new AuthorizationServer(authServerMock.Object);
- return await server.HandleTokenRequestAsync(req, ct);
- }));
- await coordinator.RunAsync();
+
+ Handle(AuthorizationServerDescription.TokenEndpoint).By(
+ async (req, ct) => {
+ var server = new AuthorizationServer(authServerMock.Object);
+ return await server.HandleTokenRequestAsync(req, ct);
+ });
+
+ var client = new WebServerClient(AuthorizationServerDescription, hostFactories: this.HostFactories);
+ ////var authState = new AuthorizationState(TestScopes) {
+ //// Callback = ClientCallback,
+ ////};
+ var result = await client.GetClientAccessTokenAsync(clientRequestedScopes);
+ Assert.That(result.Scope, Is.EquivalentTo(serverOverriddenScopes));
}
}
}
diff --git a/src/DotNetOpenAuth.Test/OAuth2/ResourceServerTests.cs b/src/DotNetOpenAuth.Test/OAuth2/ResourceServerTests.cs
index d4618cf..55b333d 100644
--- a/src/DotNetOpenAuth.Test/OAuth2/ResourceServerTests.cs
+++ b/src/DotNetOpenAuth.Test/OAuth2/ResourceServerTests.cs
@@ -91,19 +91,18 @@ namespace DotNetOpenAuth.Test.OAuth2 {
authServer.Setup(
a => a.CheckAuthorizeClientCredentialsGrant(It.Is<IAccessTokenRequest>(d => d.ClientIdentifier == ClientId && MessagingUtilities.AreEquivalent(d.Scope, TestScopes))))
.Returns<IAccessTokenRequest>(req => new AutomatedAuthorizationCheckResponse(req, true));
- var coordinator = new CoordinatorBase(
- async (hostFactories, ct) => {
- var client = new WebServerClient(AuthorizationServerDescription);
- var authState = await client.GetClientAccessTokenAsync(TestScopes, ct);
- Assert.That(authState.AccessToken, Is.Not.Null.And.Not.Empty);
- Assert.That(authState.RefreshToken, Is.Null);
- accessToken = authState.AccessToken;
- },
- 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);
- }));
- await coordinator.RunAsync();
+ });
+
+ var client = new WebServerClient(AuthorizationServerDescription, hostFactories: this.HostFactories);
+ var authState = await client.GetClientAccessTokenAsync(TestScopes);
+ Assert.That(authState.AccessToken, Is.Not.Null.And.Not.Empty);
+ Assert.That(authState.RefreshToken, Is.Null);
+ accessToken = authState.AccessToken;
return accessToken;
}
diff --git a/src/DotNetOpenAuth.Test/OAuth2/UserAgentClientAuthorizeTests.cs b/src/DotNetOpenAuth.Test/OAuth2/UserAgentClientAuthorizeTests.cs
index eaa0d44..c911416 100644
--- a/src/DotNetOpenAuth.Test/OAuth2/UserAgentClientAuthorizeTests.cs
+++ b/src/DotNetOpenAuth.Test/OAuth2/UserAgentClientAuthorizeTests.cs
@@ -10,6 +10,7 @@ namespace DotNetOpenAuth.Test.OAuth2 {
using System.Linq;
using System.Net.Http;
using System.Text;
+ using System.Threading;
using System.Threading.Tasks;
using DotNetOpenAuth.Messaging;
using DotNetOpenAuth.Messaging.Bindings;
@@ -23,79 +24,74 @@ namespace DotNetOpenAuth.Test.OAuth2 {
public class UserAgentClientAuthorizeTests : OAuth2TestBase {
[Test]
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);
- 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;
- }
+ 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);
+ });
+ Handle(AuthorizationServerDescription.TokenEndpoint).By(
+ async (req, ct) => {
+ var server = new AuthorizationServer(AuthorizationServerMock);
+ return await server.HandleTokenRequestAsync(req, ct);
+ });
+ {
+ var client = new UserAgentClient(AuthorizationServerDescription);
+ var authState = new AuthorizationState(TestScopes) { Callback = ClientCallback, };
+ var request = client.PrepareRequestUserAuthorization(authState);
+ Assert.AreEqual(EndUserAuthorizationResponseType.AuthorizationCode, request.ResponseType);
+ var authRequestRedirect = await client.Channel.PrepareResponseAsync(request);
+ Uri authRequestResponse;
+ using (var httpClient = this.HostFactories.CreateHttpClient()) {
+ using (var httpResponse = await httpClient.GetAsync(authRequestRedirect.Headers.Location)) {
+ 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);
- },
- 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);
- }),
- Handle(AuthorizationServerDescription.TokenEndpoint).By(
- async (req, ct) => {
- var server = new AuthorizationServer(AuthorizationServerMock);
- return await server.HandleTokenRequestAsync(req, ct);
- }));
- await coordinator.RunAsync();
+ }
+ var incoming =
+ await
+ client.Channel.ReadFromRequestAsync(
+ new HttpRequestMessage(HttpMethod.Get, authRequestResponse), CancellationToken.None);
+ var result = await client.ProcessUserAuthorizationAsync(authState, incoming, CancellationToken.None);
+ Assert.That(result.AccessToken, Is.Not.Null.And.Not.Empty);
+ Assert.That(result.RefreshToken, Is.Not.Null.And.Not.Empty);
+ }
}
[Test]
public async Task ImplicitGrant() {
var coordinatorClient = new UserAgentClient(AuthorizationServerDescription);
- 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));
- 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;
- }
+ coordinatorClient.ClientCredentialApplicator = null; // implicit grant clients don't need a secret.
+ 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);
+ });
+ {
+ 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));
+ var authRequestRedirect = await client.Channel.PrepareResponseAsync(request);
+ Uri authRequestResponse;
+ using (var httpClient = this.HostFactories.CreateHttpClient()) {
+ using (var httpResponse = await httpClient.GetAsync(authRequestRedirect.Headers.Location)) {
+ 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);
- },
- 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.
- await coordinator.RunAsync();
+ var incoming =
+ await client.Channel.ReadFromRequestAsync(new HttpRequestMessage(HttpMethod.Get, authRequestResponse), CancellationToken.None);
+ var result = await client.ProcessUserAuthorizationAsync(authState, incoming, CancellationToken.None);
+ Assert.That(result.AccessToken, Is.Not.Null.And.Not.Empty);
+ Assert.That(result.RefreshToken, Is.Null);
+ }
}
}
}
diff --git a/src/DotNetOpenAuth.Test/OAuth2/WebServerClientAuthorizeTests.cs b/src/DotNetOpenAuth.Test/OAuth2/WebServerClientAuthorizeTests.cs
index 7b5c32e..2befd35 100644
--- a/src/DotNetOpenAuth.Test/OAuth2/WebServerClientAuthorizeTests.cs
+++ b/src/DotNetOpenAuth.Test/OAuth2/WebServerClientAuthorizeTests.cs
@@ -11,6 +11,7 @@ namespace DotNetOpenAuth.Test.OAuth2 {
using System.Net;
using System.Net.Http;
using System.Text;
+ using System.Threading;
using System.Threading.Tasks;
using DotNetOpenAuth.Messaging;
using DotNetOpenAuth.OAuth2;
@@ -23,37 +24,35 @@ namespace DotNetOpenAuth.Test.OAuth2 {
public class WebServerClientAuthorizeTests : OAuth2TestBase {
[Test]
public async Task AuthorizationCodeGrant() {
- var coordinator = new CoordinatorBase(
- async (hostFactories, ct) => {
- var client = new WebServerClient(AuthorizationServerDescription);
- var authState = new AuthorizationState(TestScopes) {
- Callback = ClientCallback,
- };
- var authRequestRedirect = await client.PrepareRequestUserAuthorizationAsync(authState, ct);
- Uri authRequestResponse;
- using (var httpClient = hostFactories.CreateHttpClient()) {
- using (var httpResponse = await httpClient.GetAsync(authRequestRedirect.Headers.Location, ct)) {
- authRequestResponse = httpResponse.Headers.Location;
- }
- }
+ 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);
+ });
+ Handle(AuthorizationServerDescription.TokenEndpoint).By(
+ async (req, ct) => {
+ var server = new AuthorizationServer(AuthorizationServerMock);
+ return await server.HandleTokenRequestAsync(req, ct);
+ });
+
+ var client = new WebServerClient(AuthorizationServerDescription);
+ var authState = new AuthorizationState(TestScopes) {
+ Callback = ClientCallback,
+ };
+ var authRequestRedirect = await client.PrepareRequestUserAuthorizationAsync(authState);
+ Uri authRequestResponse;
+ using (var httpClient = this.HostFactories.CreateHttpClient()) {
+ using (var httpResponse = await httpClient.GetAsync(authRequestRedirect.Headers.Location)) {
+ authRequestResponse = httpResponse.Headers.Location;
+ }
+ }
- var result = await client.ProcessUserAuthorizationAsync(new HttpRequestMessage(HttpMethod.Get, authRequestResponse), ct);
- Assert.That(result.AccessToken, Is.Not.Null.And.Not.Empty);
- Assert.That(result.RefreshToken, Is.Not.Null.And.Not.Empty);
- },
- 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);
- }),
- Handle(AuthorizationServerDescription.TokenEndpoint).By(async (req, ct) => {
- var server = new AuthorizationServer(AuthorizationServerMock);
- return await server.HandleTokenRequestAsync(req, ct);
- }));
- await coordinator.RunAsync();
+ var result = await client.ProcessUserAuthorizationAsync(new HttpRequestMessage(HttpMethod.Get, authRequestResponse), CancellationToken.None);
+ Assert.That(result.AccessToken, Is.Not.Null.And.Not.Empty);
+ Assert.That(result.RefreshToken, Is.Not.Null.And.Not.Empty);
}
[Theory]
@@ -69,22 +68,19 @@ namespace DotNetOpenAuth.Test.OAuth2 {
MessagingUtilities.AreEquivalent(d.Scope, TestScopes)))).Returns(true);
}
- var coordinator = new CoordinatorBase(
- async (hostFactories, ct) => {
- var client = new WebServerClient(AuthorizationServerDescription);
- if (anonymousClient) {
- client.ClientIdentifier = null;
- }
+ Handle(AuthorizationServerDescription.TokenEndpoint).By(async (req, ct) => {
+ var server = new AuthorizationServer(authHostMock.Object);
+ return await server.HandleTokenRequestAsync(req, ct);
+ });
- var authState = await client.ExchangeUserCredentialForTokenAsync(ResourceOwnerUsername, ResourceOwnerPassword, TestScopes, ct);
- Assert.That(authState.AccessToken, Is.Not.Null.And.Not.Empty);
- Assert.That(authState.RefreshToken, Is.Not.Null.And.Not.Empty);
- },
- Handle(AuthorizationServerDescription.TokenEndpoint).By(async (req, ct) => {
- var server = new AuthorizationServer(authHostMock.Object);
- return await server.HandleTokenRequestAsync(req, ct);
- }));
- await coordinator.RunAsync();
+ var client = new WebServerClient(AuthorizationServerDescription);
+ if (anonymousClient) {
+ client.ClientIdentifier = null;
+ }
+
+ var authState = await client.ExchangeUserCredentialForTokenAsync(ResourceOwnerUsername, ResourceOwnerPassword, TestScopes);
+ Assert.That(authState.AccessToken, Is.Not.Null.And.Not.Empty);
+ Assert.That(authState.RefreshToken, Is.Not.Null.And.Not.Empty);
}
[Test]
@@ -96,18 +92,15 @@ namespace DotNetOpenAuth.Test.OAuth2 {
authServer.Setup(
a => a.CheckAuthorizeClientCredentialsGrant(It.Is<IAccessTokenRequest>(d => d.ClientIdentifier == ClientId && MessagingUtilities.AreEquivalent(d.Scope, TestScopes))))
.Returns<IAccessTokenRequest>(req => new AutomatedAuthorizationCheckResponse(req, true));
- var coordinator = new CoordinatorBase(
- async (hostFactories, ct) => {
- var client = new WebServerClient(AuthorizationServerDescription);
- var authState = await client.GetClientAccessTokenAsync(TestScopes, ct);
- Assert.That(authState.AccessToken, Is.Not.Null.And.Not.Empty);
- Assert.That(authState.RefreshToken, Is.Null);
- },
- 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);
- }));
- await coordinator.RunAsync();
+ });
+ var client = new WebServerClient(AuthorizationServerDescription);
+ var authState = await client.GetClientAccessTokenAsync(TestScopes);
+ Assert.That(authState.AccessToken, Is.Not.Null.And.Not.Empty);
+ Assert.That(authState.RefreshToken, Is.Null);
}
[Test]
@@ -124,17 +117,15 @@ namespace DotNetOpenAuth.Test.OAuth2 {
response.ApprovedScope.ResetContents(approvedScopes);
return response;
});
- var coordinator = new CoordinatorBase(
- async (hostFactories, ct) => {
- var client = new WebServerClient(AuthorizationServerDescription);
- var authState = await client.GetClientAccessTokenAsync(TestScopes, ct);
- Assert.That(authState.Scope, Is.EquivalentTo(approvedScopes));
- },
- 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);
- }));
- await coordinator.RunAsync();
+ });
+
+ var client = new WebServerClient(AuthorizationServerDescription);
+ var authState = await client.GetClientAccessTokenAsync(TestScopes);
+ Assert.That(authState.Scope, Is.EquivalentTo(approvedScopes));
}
[Test]