diff options
Diffstat (limited to 'src/DotNetOpenAuth.AspNet.Test/OAuth2ClientTest.cs')
-rw-r--r-- | src/DotNetOpenAuth.AspNet.Test/OAuth2ClientTest.cs | 253 |
1 files changed, 120 insertions, 133 deletions
diff --git a/src/DotNetOpenAuth.AspNet.Test/OAuth2ClientTest.cs b/src/DotNetOpenAuth.AspNet.Test/OAuth2ClientTest.cs index bc28f63..d24cf77 100644 --- a/src/DotNetOpenAuth.AspNet.Test/OAuth2ClientTest.cs +++ b/src/DotNetOpenAuth.AspNet.Test/OAuth2ClientTest.cs @@ -1,140 +1,127 @@ -using System; -using System.Collections.Generic; -using System.Collections.Specialized; -using System.Web; -using DotNetOpenAuth.AspNet.Clients; -using Moq; -using NUnit.Framework; - -namespace DotNetOpenAuth.AspNet.Test -{ - [TestFixture] - public class OAuth2ClientTest - { - [TestCase] - public void TestProviderName() - { - // Arrange - var client = new MockOAuth2Client(); - - // Act - string providerName = client.ProviderName; - - // Assert - Assert.AreEqual("mockprovider", providerName); - } - - [TestCase] - public void RequestAuthenticationIssueCorrectRedirect() - { - // Arrange - var client = new MockOAuth2Client(); - var context = new Mock<HttpContextBase>(MockBehavior.Strict); - context.Setup(c => c.Response.Redirect("http://live.com/?q=http://return.to.me/", true)).Verifiable(); - - // Act - client.RequestAuthentication(context.Object, new Uri("http://return.to.me")); - - // Assert - context.Verify(); - } - - [TestCase] - public void VerifyAuthenticationThrowsIfContextIsNull() - { - // Arrange - var client = new MockOAuth2Client(); - - // Act && Assert - Assert.Throws<ArgumentNullException>(() => client.VerifyAuthentication(null)); - } - - [TestCase] - public void VerifyAuthenticationFailsIfCodeIsNotPresent() - { - // Arrange - var client = new MockOAuth2Client(); - var context = new Mock<HttpContextBase>(MockBehavior.Strict); - var queryStrings = new NameValueCollection(); - context.Setup(c => c.Request.QueryString).Returns(queryStrings); - - // Act - AuthenticationResult result = client.VerifyAuthentication(context.Object); - - // Assert - Assert.IsFalse(result.IsSuccessful); - } - - [TestCase] - public void VerifyAuthenticationFailsIfAccessTokenIsNull() - { - // Arrange - var client = new MockOAuth2Client(); - var context = new Mock<HttpContextBase>(MockBehavior.Strict); - var queryStrings = new NameValueCollection(); - queryStrings.Add("code", "random"); - context.Setup(c => c.Request.QueryString).Returns(queryStrings); - - // Act - AuthenticationResult result = client.VerifyAuthentication(context.Object); - - // Assert - Assert.IsFalse(result.IsSuccessful); - } - - [TestCase] - public void VerifyAuthenticationSucceeds() - { - // Arrange - var client = new MockOAuth2Client(); - var context = new Mock<HttpContextBase>(MockBehavior.Strict); - var queryStrings = new NameValueCollection(); - queryStrings.Add("code", "secret"); - context.Setup(c => c.Request.QueryString).Returns(queryStrings); - - // Act - AuthenticationResult result = client.VerifyAuthentication(context.Object); - - // Assert - Assert.True(result.IsSuccessful); - Assert.AreEqual("mockprovider", result.Provider); - Assert.AreEqual("12345", result.ProviderUserId); - Assert.AreEqual("John Doe", result.UserName); - Assert.NotNull(result.ExtraData); - Assert.AreEqual("abcde", result.ExtraData["token"]); - } - - private class MockOAuth2Client : OAuth2Client - { - public MockOAuth2Client() : base("mockprovider") - { - } - - protected override Uri GetServiceLoginUrl(Uri returnUrl) - { - string url = "http://live.com/?q=" + returnUrl.ToString(); - return new Uri(url); - } - - protected override string QueryAccessToken(Uri returnUrl, string authorizationCode) - { - return (authorizationCode == "secret") ? "abcde" : null; - } - - protected override IDictionary<string, string> GetUserData(string accessToken) - { - if (accessToken == "abcde") - { - return new Dictionary<string, string> +namespace DotNetOpenAuth.AspNet.Test { + using System; + using System.Collections.Generic; + using System.Collections.Specialized; + using System.Web; + using DotNetOpenAuth.AspNet.Clients; + using Moq; + using NUnit.Framework; + + [TestFixture] + public class OAuth2ClientTest { + [TestCase] + public void TestProviderName() { + // Arrange + var client = new MockOAuth2Client(); + + // Act + string providerName = client.ProviderName; + + // Assert + Assert.AreEqual("mockprovider", providerName); + } + + [TestCase] + public void RequestAuthenticationIssueCorrectRedirect() { + // Arrange + var client = new MockOAuth2Client(); + var context = new Mock<HttpContextBase>(MockBehavior.Strict); + context.Setup(c => c.Response.Redirect("http://live.com/?q=http://return.to.me/", true)).Verifiable(); + + // Act + client.RequestAuthentication(context.Object, new Uri("http://return.to.me")); + + // Assert + context.Verify(); + } + + [TestCase] + public void VerifyAuthenticationThrowsIfContextIsNull() { + // Arrange + var client = new MockOAuth2Client(); + + // Act && Assert + Assert.Throws<ArgumentNullException>(() => client.VerifyAuthentication(null)); + } + + [TestCase] + public void VerifyAuthenticationFailsIfCodeIsNotPresent() { + // Arrange + var client = new MockOAuth2Client(); + var context = new Mock<HttpContextBase>(MockBehavior.Strict); + var queryStrings = new NameValueCollection(); + context.Setup(c => c.Request.QueryString).Returns(queryStrings); + + // Act + AuthenticationResult result = client.VerifyAuthentication(context.Object); + + // Assert + Assert.IsFalse(result.IsSuccessful); + } + + [TestCase] + public void VerifyAuthenticationFailsIfAccessTokenIsNull() { + // Arrange + var client = new MockOAuth2Client(); + var context = new Mock<HttpContextBase>(MockBehavior.Strict); + var queryStrings = new NameValueCollection(); + queryStrings.Add("code", "random"); + context.Setup(c => c.Request.QueryString).Returns(queryStrings); + + // Act + AuthenticationResult result = client.VerifyAuthentication(context.Object); + + // Assert + Assert.IsFalse(result.IsSuccessful); + } + + [TestCase] + public void VerifyAuthenticationSucceeds() { + // Arrange + var client = new MockOAuth2Client(); + var context = new Mock<HttpContextBase>(MockBehavior.Strict); + var queryStrings = new NameValueCollection(); + queryStrings.Add("code", "secret"); + context.Setup(c => c.Request.QueryString).Returns(queryStrings); + + // Act + AuthenticationResult result = client.VerifyAuthentication(context.Object); + + // Assert + Assert.True(result.IsSuccessful); + Assert.AreEqual("mockprovider", result.Provider); + Assert.AreEqual("12345", result.ProviderUserId); + Assert.AreEqual("John Doe", result.UserName); + Assert.NotNull(result.ExtraData); + Assert.AreEqual("abcde", result.ExtraData["token"]); + } + + private class MockOAuth2Client : OAuth2Client { + public MockOAuth2Client() + : base("mockprovider") { + } + + protected override Uri GetServiceLoginUrl(Uri returnUrl) { + string url = "http://live.com/?q=" + returnUrl.ToString(); + return new Uri(url); + } + + protected override string QueryAccessToken(Uri returnUrl, string authorizationCode) { + return (authorizationCode == "secret") ? "abcde" : null; + } + + protected override IDictionary<string, string> GetUserData(string accessToken) { + if (accessToken == "abcde") { + return new Dictionary<string, string> { {"id", "12345"}, {"token", accessToken}, {"name", "John Doe"} }; - } + } - return null; - } - } - } + return null; + } + } + } } |