diff options
Diffstat (limited to 'src/DotNetOpenAuth.Test/OAuth2/WebServerClientAuthorizeTests.cs')
-rw-r--r-- | src/DotNetOpenAuth.Test/OAuth2/WebServerClientAuthorizeTests.cs | 67 |
1 files changed, 64 insertions, 3 deletions
diff --git a/src/DotNetOpenAuth.Test/OAuth2/WebServerClientAuthorizeTests.cs b/src/DotNetOpenAuth.Test/OAuth2/WebServerClientAuthorizeTests.cs index fe0abd2..9a9c078 100644 --- a/src/DotNetOpenAuth.Test/OAuth2/WebServerClientAuthorizeTests.cs +++ b/src/DotNetOpenAuth.Test/OAuth2/WebServerClientAuthorizeTests.cs @@ -8,7 +8,10 @@ namespace DotNetOpenAuth.Test.OAuth2 { using System; using System.Collections.Generic; using System.Linq; + using System.Net; + using System.Net.Http; using System.Text; + using System.Threading.Tasks; using DotNetOpenAuth.Messaging; using DotNetOpenAuth.OAuth2; using DotNetOpenAuth.OAuth2.ChannelElements; @@ -42,13 +45,28 @@ namespace DotNetOpenAuth.Test.OAuth2 { coordinator.Run(); } - [Test] - public void ResourceOwnerPasswordCredentialGrant() { + [Theory] + public void ResourceOwnerPasswordCredentialGrant(bool anonymousClient) { + var authHostMock = CreateAuthorizationServerMock(); + if (anonymousClient) { + authHostMock.Setup( + m => + m.IsAuthorizationValid( + It.Is<IAuthorizationDescription>( + d => + d.ClientIdentifier == null && d.User == ResourceOwnerUsername && + MessagingUtilities.AreEquivalent(d.Scope, TestScopes)))).Returns(true); + } + var coordinator = new OAuth2Coordinator<WebServerClient>( AuthorizationServerDescription, - AuthorizationServerMock, + authHostMock.Object, new WebServerClient(AuthorizationServerDescription), client => { + if (anonymousClient) { + client.ClientIdentifier = null; + } + var authState = client.ExchangeUserCredentialForToken(ResourceOwnerUsername, ResourceOwnerPassword, TestScopes); Assert.That(authState.AccessToken, Is.Not.Null.And.Not.Empty); Assert.That(authState.RefreshToken, Is.Not.Null.And.Not.Empty); @@ -65,6 +83,9 @@ namespace DotNetOpenAuth.Test.OAuth2 { authServer.Setup( a => a.IsAuthorizationValid(It.Is<IAuthorizationDescription>(d => d.User == null && d.ClientIdentifier == ClientId && MessagingUtilities.AreEquivalent(d.Scope, TestScopes)))) .Returns(true); + authServer.Setup( + a => a.TryAuthorizeClientCredentialsGrant(It.Is<IAccessTokenRequest>(d => d.ClientIdentifier == ClientId && MessagingUtilities.AreEquivalent(d.Scope, TestScopes)))) + .Returns(true); var coordinator = new OAuth2Coordinator<WebServerClient>( AuthorizationServerDescription, authServer.Object, @@ -79,5 +100,45 @@ namespace DotNetOpenAuth.Test.OAuth2 { }); coordinator.Run(); } + + [Test] + public void CreateAuthorizingHandlerBearer() { + var client = new WebServerClient(AuthorizationServerDescription); + string bearerToken = "mytoken"; + var tcs = new TaskCompletionSource<HttpResponseMessage>(); + var expectedResponse = new HttpResponseMessage(); + + var mockHandler = new Mocks.MockHttpMessageHandler((req, ct) => { + Assert.That(req.Headers.Authorization.Scheme, Is.EqualTo(Protocol.BearerHttpAuthorizationScheme)); + Assert.That(req.Headers.Authorization.Parameter, Is.EqualTo(bearerToken)); + tcs.SetResult(expectedResponse); + return tcs.Task; + }); + var applicator = client.CreateAuthorizingHandler("mytoken", mockHandler); + var httpClient = new HttpClient(applicator); + var actualResponse = httpClient.GetAsync("http://localhost/someMessage").Result; + Assert.That(actualResponse, Is.SameAs(expectedResponse)); + } + + [Test] + public void CreateAuthorizingHandlerAuthorization() { + var client = new WebServerClient(AuthorizationServerDescription); + string bearerToken = "mytoken"; + var authorization = new Mock<IAuthorizationState>(); + authorization.SetupGet(a => a.AccessToken).Returns(bearerToken); + var tcs = new TaskCompletionSource<HttpResponseMessage>(); + var expectedResponse = new HttpResponseMessage(); + + var mockHandler = new Mocks.MockHttpMessageHandler((req, ct) => { + Assert.That(req.Headers.Authorization.Scheme, Is.EqualTo(Protocol.BearerHttpAuthorizationScheme)); + Assert.That(req.Headers.Authorization.Parameter, Is.EqualTo(bearerToken)); + tcs.SetResult(expectedResponse); + return tcs.Task; + }); + var applicator = client.CreateAuthorizingHandler(authorization.Object, mockHandler); + var httpClient = new HttpClient(applicator); + var actualResponse = httpClient.GetAsync("http://localhost/someMessage").Result; + Assert.That(actualResponse, Is.SameAs(expectedResponse)); + } } } |