diff options
Diffstat (limited to 'src/DotNetOpenAuth.AspNet.Test')
-rw-r--r-- | src/DotNetOpenAuth.AspNet.Test/OAuth2ClientTest.cs | 253 | ||||
-rw-r--r-- | src/DotNetOpenAuth.AspNet.Test/OAuthAuthenticationTickerHelperTest.cs | 293 | ||||
-rw-r--r-- | src/DotNetOpenAuth.AspNet.Test/OAuthClientTest.cs | 271 | ||||
-rw-r--r-- | src/DotNetOpenAuth.AspNet.Test/UriHelperTest.cs | 44 |
4 files changed, 411 insertions, 450 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; + } + } + } } diff --git a/src/DotNetOpenAuth.AspNet.Test/OAuthAuthenticationTickerHelperTest.cs b/src/DotNetOpenAuth.AspNet.Test/OAuthAuthenticationTickerHelperTest.cs index f3fea5c..78b8ca6 100644 --- a/src/DotNetOpenAuth.AspNet.Test/OAuthAuthenticationTickerHelperTest.cs +++ b/src/DotNetOpenAuth.AspNet.Test/OAuthAuthenticationTickerHelperTest.cs @@ -1,152 +1,143 @@ -using System; -using System.Web; -using System.Web.Security; -using DotNetOpenAuth.AspNet; -using Moq; -using NUnit.Framework; - -namespace DotNetOpenAuth.Test.Web -{ - [TestFixture] - public class OAuthAuthenticationTickerHelperTest - { - [TestCase] - public void SetAuthenticationTicketSetCookieOnHttpResponseWithPersistentSet() - { - SetAuthenticationTicketSetCookieOnHttpResponse(isPersistent: true); - } - - [TestCase] - public void SetAuthenticationTicketSetCookieOnHttpResponseWithPersistentNotSet() - { - SetAuthenticationTicketSetCookieOnHttpResponse(isPersistent: false); - } - - [TestCase] - public void IsOAuthAuthenticationTicketReturnsTrueIfCookieIsPresent() - { - // Arrange - var ticket = new FormsAuthenticationTicket( - 2, - "username", - DateTime.Now, - DateTime.Now.Add(FormsAuthentication.Timeout), - false, - "OAuth", - FormsAuthentication.FormsCookiePath); - - var cookie = new HttpCookie(name: FormsAuthentication.FormsCookieName, - value: FormsAuthentication.Encrypt(ticket)); - var cookies = new HttpCookieCollection {cookie}; - - var context = new Mock<HttpContextBase>(); - context.Setup(c => c.Request.Cookies).Returns(cookies); - - // Act - bool result = OpenAuthAuthenticationTicketHelper.IsValidAuthenticationTicket(context.Object); - - // Assert - Assert.IsTrue(result); - } - - [TestCase] - public void IsOAuthAuthenticationTicketReturnsFalseIfCookieIsNotPresent() - { - // Arrange - var context = new Mock<HttpContextBase>(); - context.Setup(c => c.Request.Cookies).Returns(new HttpCookieCollection()); - - // Act - bool result = OpenAuthAuthenticationTicketHelper.IsValidAuthenticationTicket(context.Object); - - // Assert - Assert.IsFalse(result); - } - - [TestCase] - public void IsOAuthAuthenticationTicketReturnsFalseIfCookieIsPresentButDoesNotHaveOAuthData() - { - // Arrange - var ticket = new FormsAuthenticationTicket( - 2, - "username", - DateTime.Now, - DateTime.Now.Add(FormsAuthentication.Timeout), - false, - null, - FormsAuthentication.FormsCookiePath); - - var cookie = new HttpCookie(name: FormsAuthentication.FormsCookieName, - value: FormsAuthentication.Encrypt(ticket)); - var cookies = new HttpCookieCollection { cookie }; - - var context = new Mock<HttpContextBase>(); - context.Setup(c => c.Request.Cookies).Returns(cookies); - - // Act - bool result = OpenAuthAuthenticationTicketHelper.IsValidAuthenticationTicket(context.Object); - - // Assert - Assert.IsFalse(result); - } - - [TestCase] - public void IsOAuthAuthenticationTicketReturnsFalseIfCookieIsPresentButDoesNotHaveCorrectName() - { - // Arrange - var response = new Mock<HttpResponseBase>(); - - var ticket = new FormsAuthenticationTicket( - 2, - "username", - DateTime.Now, - DateTime.Now.Add(FormsAuthentication.Timeout), - false, - "OAuth", - FormsAuthentication.FormsCookiePath); - - var cookie = new HttpCookie(name: "random cookie name", - value: FormsAuthentication.Encrypt(ticket)); - var cookies = new HttpCookieCollection { cookie }; - - var context = new Mock<HttpContextBase>(); - context.Setup(c => c.Request.Cookies).Returns(cookies); - - // Act - bool result = OpenAuthAuthenticationTicketHelper.IsValidAuthenticationTicket(context.Object); - - // Assert - Assert.IsFalse(result); - } - - private void SetAuthenticationTicketSetCookieOnHttpResponse(bool isPersistent) - { - // Arrange - var cookies = new HttpCookieCollection(); - - var context = new Mock<HttpContextBase>(); - context.Setup(c => c.Request.IsSecureConnection).Returns(true); - context.Setup(c => c.Response.Cookies).Returns(cookies); - - // Act - OpenAuthAuthenticationTicketHelper.SetAuthenticationTicket(context.Object, "user", isPersistent); - - // Assert - Assert.AreEqual(1, cookies.Count); - HttpCookie addedCookie = cookies[0]; - - Assert.AreEqual(FormsAuthentication.FormsCookieName, addedCookie.Name); - Assert.IsTrue(addedCookie.HttpOnly); - Assert.AreEqual("/", addedCookie.Path); - Assert.IsFalse(addedCookie.Secure); - Assert.IsNotNullOrEmpty(addedCookie.Value); - - FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(addedCookie.Value); - Assert.NotNull(ticket); - Assert.AreEqual(2, ticket.Version); - Assert.AreEqual("user", ticket.Name); - Assert.AreEqual("OAuth", ticket.UserData); - Assert.AreEqual(isPersistent, ticket.IsPersistent); - } - } +namespace DotNetOpenAuth.Test.Web { + using System; + using System.Web; + using System.Web.Security; + using DotNetOpenAuth.AspNet; + using Moq; + using NUnit.Framework; + + [TestFixture] + public class OAuthAuthenticationTickerHelperTest { + [TestCase] + public void SetAuthenticationTicketSetCookieOnHttpResponseWithPersistentSet() { + SetAuthenticationTicketSetCookieOnHttpResponse(isPersistent: true); + } + + [TestCase] + public void SetAuthenticationTicketSetCookieOnHttpResponseWithPersistentNotSet() { + SetAuthenticationTicketSetCookieOnHttpResponse(isPersistent: false); + } + + [TestCase] + public void IsOAuthAuthenticationTicketReturnsTrueIfCookieIsPresent() { + // Arrange + var ticket = new FormsAuthenticationTicket( + 2, + "username", + DateTime.Now, + DateTime.Now.Add(FormsAuthentication.Timeout), + false, + "OAuth", + FormsAuthentication.FormsCookiePath); + + var cookie = new HttpCookie(name: FormsAuthentication.FormsCookieName, + value: FormsAuthentication.Encrypt(ticket)); + var cookies = new HttpCookieCollection { cookie }; + + var context = new Mock<HttpContextBase>(); + context.Setup(c => c.Request.Cookies).Returns(cookies); + + // Act + bool result = OpenAuthAuthenticationTicketHelper.IsValidAuthenticationTicket(context.Object); + + // Assert + Assert.IsTrue(result); + } + + [TestCase] + public void IsOAuthAuthenticationTicketReturnsFalseIfCookieIsNotPresent() { + // Arrange + var context = new Mock<HttpContextBase>(); + context.Setup(c => c.Request.Cookies).Returns(new HttpCookieCollection()); + + // Act + bool result = OpenAuthAuthenticationTicketHelper.IsValidAuthenticationTicket(context.Object); + + // Assert + Assert.IsFalse(result); + } + + [TestCase] + public void IsOAuthAuthenticationTicketReturnsFalseIfCookieIsPresentButDoesNotHaveOAuthData() { + // Arrange + var ticket = new FormsAuthenticationTicket( + 2, + "username", + DateTime.Now, + DateTime.Now.Add(FormsAuthentication.Timeout), + false, + null, + FormsAuthentication.FormsCookiePath); + + var cookie = new HttpCookie(name: FormsAuthentication.FormsCookieName, + value: FormsAuthentication.Encrypt(ticket)); + var cookies = new HttpCookieCollection { cookie }; + + var context = new Mock<HttpContextBase>(); + context.Setup(c => c.Request.Cookies).Returns(cookies); + + // Act + bool result = OpenAuthAuthenticationTicketHelper.IsValidAuthenticationTicket(context.Object); + + // Assert + Assert.IsFalse(result); + } + + [TestCase] + public void IsOAuthAuthenticationTicketReturnsFalseIfCookieIsPresentButDoesNotHaveCorrectName() { + // Arrange + var response = new Mock<HttpResponseBase>(); + + var ticket = new FormsAuthenticationTicket( + 2, + "username", + DateTime.Now, + DateTime.Now.Add(FormsAuthentication.Timeout), + false, + "OAuth", + FormsAuthentication.FormsCookiePath); + + var cookie = new HttpCookie(name: "random cookie name", + value: FormsAuthentication.Encrypt(ticket)); + var cookies = new HttpCookieCollection { cookie }; + + var context = new Mock<HttpContextBase>(); + context.Setup(c => c.Request.Cookies).Returns(cookies); + + // Act + bool result = OpenAuthAuthenticationTicketHelper.IsValidAuthenticationTicket(context.Object); + + // Assert + Assert.IsFalse(result); + } + + private void SetAuthenticationTicketSetCookieOnHttpResponse(bool isPersistent) { + // Arrange + var cookies = new HttpCookieCollection(); + + var context = new Mock<HttpContextBase>(); + context.Setup(c => c.Request.IsSecureConnection).Returns(true); + context.Setup(c => c.Response.Cookies).Returns(cookies); + + // Act + OpenAuthAuthenticationTicketHelper.SetAuthenticationTicket(context.Object, "user", isPersistent); + + // Assert + Assert.AreEqual(1, cookies.Count); + HttpCookie addedCookie = cookies[0]; + + Assert.AreEqual(FormsAuthentication.FormsCookieName, addedCookie.Name); + Assert.IsTrue(addedCookie.HttpOnly); + Assert.AreEqual("/", addedCookie.Path); + Assert.IsFalse(addedCookie.Secure); + Assert.IsNotNullOrEmpty(addedCookie.Value); + + FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(addedCookie.Value); + Assert.NotNull(ticket); + Assert.AreEqual(2, ticket.Version); + Assert.AreEqual("user", ticket.Name); + Assert.AreEqual("OAuth", ticket.UserData); + Assert.AreEqual(isPersistent, ticket.IsPersistent); + } + } } diff --git a/src/DotNetOpenAuth.AspNet.Test/OAuthClientTest.cs b/src/DotNetOpenAuth.AspNet.Test/OAuthClientTest.cs index 6c14927..bec7f8a 100644 --- a/src/DotNetOpenAuth.AspNet.Test/OAuthClientTest.cs +++ b/src/DotNetOpenAuth.AspNet.Test/OAuthClientTest.cs @@ -1,143 +1,130 @@ -using System; -using System.Web; -using DotNetOpenAuth.Messaging; -using DotNetOpenAuth.OAuth.Messages; -using DotNetOpenAuth.AspNet.Clients; -using Moq; -using NUnit.Framework; -using DotNetOpenAuth.AspNet; - -namespace DotNetOpenAuth.AspNet.Test -{ - [TestFixture] - public class OAuthClientTest - { - [TestCase] - public void TestProviderNamePropertyIsCorrect() - { - // Arrange - var client = new MockOAuthClient(); - - // Act - var provider = client.ProviderName; - - // Assert - Assert.AreEqual("mockoauth", provider); - } - - [TestCase] - public void RequestAuthenticationInvokeMethodOnWebWorker() - { - // Arrange - var webWorker = new Mock<IOAuthWebWorker>(MockBehavior.Strict); - webWorker.Setup( - w => w.RequestAuthentication( - It.Is<Uri>(u => u.ToString().Equals("http://live.com/my/path.cshtml?q=one")))) - .Verifiable(); - - var client = new MockOAuthClient(webWorker.Object); - var returnUri = new Uri("http://live.com/my/path.cshtml?q=one"); - var context = new Mock<HttpContextBase>(); - - // Act - client.RequestAuthentication(context.Object, returnUri); - - // Assert - webWorker.Verify(); - } - - [TestCase] - public void VerifyAuthenticationFailsIfResponseTokenIsNull() - { - // Arrange - var webWorker = new Mock<IOAuthWebWorker>(MockBehavior.Strict); - webWorker.Setup(w => w.ProcessUserAuthorization()).Returns((AuthorizedTokenResponse)null); - - var client = new MockOAuthClient(webWorker.Object); - var context = new Mock<HttpContextBase>(); - - // Act - client.VerifyAuthentication(context.Object); - - // Assert - webWorker.Verify(); - } - - [TestCase] - public void VerifyAuthenticationFailsIfAccessTokenIsInvalid() - { - // Arrange - var endpoint = new MessageReceivingEndpoint("http://live.com/path/?a=b", HttpDeliveryMethods.GetRequest); - var request = new AuthorizedTokenRequest(endpoint, new Version("1.0")); - var response = new AuthorizedTokenResponse(request) - { - AccessToken = "invalid token" - }; - - var webWorker = new Mock<IOAuthWebWorker>(MockBehavior.Strict); - webWorker.Setup(w => w.ProcessUserAuthorization()).Returns(response).Verifiable(); - - var client = new MockOAuthClient(webWorker.Object); - var context = new Mock<HttpContextBase>(); - - // Act - AuthenticationResult result = client.VerifyAuthentication(context.Object); - - // Assert - webWorker.Verify(); - - Assert.False(result.IsSuccessful); - } - - [TestCase] - public void VerifyAuthenticationSucceeds() - { - // Arrange - var endpoint = new MessageReceivingEndpoint("http://live.com/path/?a=b", HttpDeliveryMethods.GetRequest); - var request = new AuthorizedTokenRequest(endpoint, new Version("1.0")); - var response = new AuthorizedTokenResponse(request) - { - AccessToken = "ok" - }; - - var webWorker = new Mock<IOAuthWebWorker>(MockBehavior.Strict); - webWorker.Setup(w => w.ProcessUserAuthorization()).Returns(response).Verifiable(); - - var client = new MockOAuthClient(webWorker.Object); - var context = new Mock<HttpContextBase>(); - - // Act - AuthenticationResult result = client.VerifyAuthentication(context.Object); - - // Assert - webWorker.Verify(); - - Assert.True(result.IsSuccessful); - Assert.AreEqual("mockoauth", result.Provider); - Assert.AreEqual("12345", result.ProviderUserId); - Assert.AreEqual("super", result.UserName); - } - - private class MockOAuthClient : OAuthClient - { - public MockOAuthClient() - : this(new Mock<IOAuthWebWorker>().Object) - { - } - - public MockOAuthClient(IOAuthWebWorker worker) : base("mockoauth", worker) - { - } - - protected override AuthenticationResult VerifyAuthenticationCore(AuthorizedTokenResponse response) - { - if (response.AccessToken == "ok") - { - return new AuthenticationResult(true, "mockoauth", "12345", "super", response.ExtraData); - } - - return AuthenticationResult.Failed; - } - } - } +namespace DotNetOpenAuth.AspNet.Test { + using System; + using System.Web; + using DotNetOpenAuth.Messaging; + using DotNetOpenAuth.OAuth.Messages; + using DotNetOpenAuth.AspNet.Clients; + using Moq; + using NUnit.Framework; + using DotNetOpenAuth.AspNet; + + [TestFixture] + public class OAuthClientTest { + [TestCase] + public void TestProviderNamePropertyIsCorrect() { + // Arrange + var client = new MockOAuthClient(); + + // Act + var provider = client.ProviderName; + + // Assert + Assert.AreEqual("mockoauth", provider); + } + + [TestCase] + public void RequestAuthenticationInvokeMethodOnWebWorker() { + // Arrange + var webWorker = new Mock<IOAuthWebWorker>(MockBehavior.Strict); + webWorker.Setup( + w => w.RequestAuthentication( + It.Is<Uri>(u => u.ToString().Equals("http://live.com/my/path.cshtml?q=one")))) + .Verifiable(); + + var client = new MockOAuthClient(webWorker.Object); + var returnUri = new Uri("http://live.com/my/path.cshtml?q=one"); + var context = new Mock<HttpContextBase>(); + + // Act + client.RequestAuthentication(context.Object, returnUri); + + // Assert + webWorker.Verify(); + } + + [TestCase] + public void VerifyAuthenticationFailsIfResponseTokenIsNull() { + // Arrange + var webWorker = new Mock<IOAuthWebWorker>(MockBehavior.Strict); + webWorker.Setup(w => w.ProcessUserAuthorization()).Returns((AuthorizedTokenResponse)null); + + var client = new MockOAuthClient(webWorker.Object); + var context = new Mock<HttpContextBase>(); + + // Act + client.VerifyAuthentication(context.Object); + + // Assert + webWorker.Verify(); + } + + [TestCase] + public void VerifyAuthenticationFailsIfAccessTokenIsInvalid() { + // Arrange + var endpoint = new MessageReceivingEndpoint("http://live.com/path/?a=b", HttpDeliveryMethods.GetRequest); + var request = new AuthorizedTokenRequest(endpoint, new Version("1.0")); + var response = new AuthorizedTokenResponse(request) { + AccessToken = "invalid token" + }; + + var webWorker = new Mock<IOAuthWebWorker>(MockBehavior.Strict); + webWorker.Setup(w => w.ProcessUserAuthorization()).Returns(response).Verifiable(); + + var client = new MockOAuthClient(webWorker.Object); + var context = new Mock<HttpContextBase>(); + + // Act + AuthenticationResult result = client.VerifyAuthentication(context.Object); + + // Assert + webWorker.Verify(); + + Assert.False(result.IsSuccessful); + } + + [TestCase] + public void VerifyAuthenticationSucceeds() { + // Arrange + var endpoint = new MessageReceivingEndpoint("http://live.com/path/?a=b", HttpDeliveryMethods.GetRequest); + var request = new AuthorizedTokenRequest(endpoint, new Version("1.0")); + var response = new AuthorizedTokenResponse(request) { + AccessToken = "ok" + }; + + var webWorker = new Mock<IOAuthWebWorker>(MockBehavior.Strict); + webWorker.Setup(w => w.ProcessUserAuthorization()).Returns(response).Verifiable(); + + var client = new MockOAuthClient(webWorker.Object); + var context = new Mock<HttpContextBase>(); + + // Act + AuthenticationResult result = client.VerifyAuthentication(context.Object); + + // Assert + webWorker.Verify(); + + Assert.True(result.IsSuccessful); + Assert.AreEqual("mockoauth", result.Provider); + Assert.AreEqual("12345", result.ProviderUserId); + Assert.AreEqual("super", result.UserName); + } + + private class MockOAuthClient : OAuthClient { + public MockOAuthClient() + : this(new Mock<IOAuthWebWorker>().Object) { + } + + public MockOAuthClient(IOAuthWebWorker worker) + : base("mockoauth", worker) { + } + + protected override AuthenticationResult VerifyAuthenticationCore(AuthorizedTokenResponse response) { + if (response.AccessToken == "ok") { + return new AuthenticationResult(true, "mockoauth", "12345", "super", response.ExtraData); + } + + return AuthenticationResult.Failed; + } + } + } } diff --git a/src/DotNetOpenAuth.AspNet.Test/UriHelperTest.cs b/src/DotNetOpenAuth.AspNet.Test/UriHelperTest.cs index 53a2b52..ea78a76 100644 --- a/src/DotNetOpenAuth.AspNet.Test/UriHelperTest.cs +++ b/src/DotNetOpenAuth.AspNet.Test/UriHelperTest.cs @@ -1,17 +1,14 @@ -using System; -using DotNetOpenAuth.AspNet.Clients; -using NUnit.Framework; +namespace DotNetOpenAuth.AspNet.Test { + using System; + using DotNetOpenAuth.AspNet.Clients; + using NUnit.Framework; -namespace DotNetOpenAuth.AspNet.Test -{ - [TestFixture] - public class UriHelperTest - { - [TestCase] - public void TestAttachQueryStringParameterMethod() - { - // Arrange - string[] input = new string[] + [TestFixture] + public class UriHelperTest { + [TestCase] + public void TestAttachQueryStringParameterMethod() { + // Arrange + string[] input = new string[] { "http://x.com", "https://xxx.com/one?s=123", @@ -19,7 +16,7 @@ namespace DotNetOpenAuth.AspNet.Test "https://zzz.com/default.aspx?name=sd" }; - string[] expectedOutput = new string[] + string[] expectedOutput = new string[] { "http://x.com/?s=awesome", "https://xxx.com/one?s=awesome", @@ -27,15 +24,14 @@ namespace DotNetOpenAuth.AspNet.Test "https://zzz.com/default.aspx?name=sd&s=awesome" }; - for (int i = 0; i < input.Length; i++) - { - // Act - var inputUrl = new Uri(input[i]); - var outputUri = UriHelper.AttachQueryStringParameter(inputUrl, "s", "awesome"); + for (int i = 0; i < input.Length; i++) { + // Act + var inputUrl = new Uri(input[i]); + var outputUri = UriHelper.AttachQueryStringParameter(inputUrl, "s", "awesome"); - // Assert - Assert.AreEqual(expectedOutput[i], outputUri.ToString()); - } - } - } + // Assert + Assert.AreEqual(expectedOutput[i], outputUri.ToString()); + } + } + } } |