summaryrefslogtreecommitdiffstats
path: root/src/DotNetOAuth.Test
diff options
context:
space:
mode:
authorAndrew Arnott <andrewarnott@gmail.com>2008-09-23 08:08:04 -0700
committerAndrew <andrewarnott@gmail.com>2008-09-23 08:08:04 -0700
commit22341a07b0ba0dc685bb859b0ed82c22fc3c09db (patch)
tree3a735cce2271b5b7b276bf5e4620348580726ba4 /src/DotNetOAuth.Test
parent77adf75348090e79d3e93bff78a74c8688d8b58b (diff)
downloadDotNetOpenAuth-22341a07b0ba0dc685bb859b0ed82c22fc3c09db.zip
DotNetOpenAuth-22341a07b0ba0dc685bb859b0ed82c22fc3c09db.tar.gz
DotNetOpenAuth-22341a07b0ba0dc685bb859b0ed82c22fc3c09db.tar.bz2
Implementing and refactoring ServiceProvider and Consumer classes.
Beginning to write a test for the spec's appendix A scenario.
Diffstat (limited to 'src/DotNetOAuth.Test')
-rw-r--r--src/DotNetOAuth.Test/ChannelElements/OAuthChannelTests.cs30
-rw-r--r--src/DotNetOAuth.Test/DotNetOAuth.Test.csproj1
-rw-r--r--src/DotNetOAuth.Test/Mocks/TestDirectedMessage.cs12
-rw-r--r--src/DotNetOAuth.Test/Scenarios.cs30
-rw-r--r--src/DotNetOAuth.Test/ServiceProviderTests.cs40
5 files changed, 79 insertions, 34 deletions
diff --git a/src/DotNetOAuth.Test/ChannelElements/OAuthChannelTests.cs b/src/DotNetOAuth.Test/ChannelElements/OAuthChannelTests.cs
index 9a98728..5917d2c 100644
--- a/src/DotNetOAuth.Test/ChannelElements/OAuthChannelTests.cs
+++ b/src/DotNetOAuth.Test/ChannelElements/OAuthChannelTests.cs
@@ -58,17 +58,17 @@ namespace DotNetOAuth.Test.ChannelElements {
[TestMethod]
public void ReadFromRequestAuthorization() {
- this.ParameterizedReceiveTest(MessageScheme.AuthorizationHeaderRequest);
+ this.ParameterizedReceiveTest(HttpDeliveryMethod.AuthorizationHeaderRequest);
}
[TestMethod]
public void ReadFromRequestForm() {
- this.ParameterizedReceiveTest(MessageScheme.PostRequest);
+ this.ParameterizedReceiveTest(HttpDeliveryMethod.PostRequest);
}
[TestMethod]
public void ReadFromRequestQueryString() {
- this.ParameterizedReceiveTest(MessageScheme.GetRequest);
+ this.ParameterizedReceiveTest(HttpDeliveryMethod.GetRequest);
}
[TestMethod]
@@ -135,23 +135,23 @@ namespace DotNetOAuth.Test.ChannelElements {
public void RequestBadPreferredScheme() {
TestDirectedMessage message = new TestDirectedMessage(MessageTransport.Direct);
message.Recipient = new Uri("http://localtest");
- this.channel.PreferredTransmissionScheme = (MessageScheme)100;
+ message.HttpMethods = HttpDeliveryMethod.None;
this.channel.Request(message);
}
[TestMethod]
public void RequestUsingAuthorizationHeader() {
- this.ParameterizedRequestTest(MessageScheme.AuthorizationHeaderRequest);
+ this.ParameterizedRequestTest(HttpDeliveryMethod.AuthorizationHeaderRequest);
}
[TestMethod]
public void RequestUsingGet() {
- this.ParameterizedRequestTest(MessageScheme.GetRequest);
+ this.ParameterizedRequestTest(HttpDeliveryMethod.GetRequest);
}
[TestMethod]
public void RequestUsingPost() {
- this.ParameterizedRequestTest(MessageScheme.PostRequest);
+ this.ParameterizedRequestTest(HttpDeliveryMethod.PostRequest);
}
private static string CreateAuthorizationHeader(IDictionary<string, string> fields) {
@@ -174,14 +174,14 @@ namespace DotNetOAuth.Test.ChannelElements {
return authorization.ToString();
}
- private static HttpRequestInfo CreateHttpRequestInfo(MessageScheme scheme, IDictionary<string, string> fields) {
+ private static HttpRequestInfo CreateHttpRequestInfo(HttpDeliveryMethod scheme, IDictionary<string, string> fields) {
string query = MessagingUtilities.CreateQueryString(fields);
UriBuilder requestUri = new UriBuilder("http://localhost/path");
WebHeaderCollection headers = new WebHeaderCollection();
MemoryStream ms = new MemoryStream();
string method;
switch (scheme) {
- case MessageScheme.PostRequest:
+ case HttpDeliveryMethod.PostRequest:
method = "POST";
headers.Add(HttpRequestHeader.ContentType, "application/x-www-form-urlencoded");
StreamWriter sw = new StreamWriter(ms);
@@ -189,11 +189,11 @@ namespace DotNetOAuth.Test.ChannelElements {
sw.Flush();
ms.Position = 0;
break;
- case MessageScheme.GetRequest:
+ case HttpDeliveryMethod.GetRequest:
method = "GET";
requestUri.Query = query;
break;
- case MessageScheme.AuthorizationHeaderRequest:
+ case HttpDeliveryMethod.AuthorizationHeaderRequest:
method = "GET";
headers.Add(HttpRequestHeader.Authorization, CreateAuthorizationHeader(fields));
break;
@@ -220,20 +220,21 @@ namespace DotNetOAuth.Test.ChannelElements {
return info;
}
- private void ParameterizedRequestTest(MessageScheme scheme) {
+ private void ParameterizedRequestTest(HttpDeliveryMethod scheme) {
TestDirectedMessage request = new TestDirectedMessage(MessageTransport.Direct) {
Age = 15,
Name = "Andrew",
Location = new Uri("http://hostb/pathB"),
Recipient = new Uri("http://localtest"),
Timestamp = DateTime.UtcNow,
+ HttpMethods = scheme,
};
Response rawResponse = null;
this.webRequestHandler.Callback = (req) => {
Assert.IsNotNull(req);
HttpRequestInfo reqInfo = ConvertToRequestInfo(req, this.webRequestHandler.RequestEntityStream);
- Assert.AreEqual(scheme == MessageScheme.PostRequest ? "POST" : "GET", reqInfo.HttpMethod);
+ Assert.AreEqual(scheme == HttpDeliveryMethod.PostRequest ? "POST" : "GET", reqInfo.HttpMethod);
var incomingMessage = this.channel.ReadFromRequest(reqInfo) as TestMessage;
Assert.IsNotNull(incomingMessage);
Assert.AreEqual(request.Age, incomingMessage.Age);
@@ -253,7 +254,6 @@ namespace DotNetOAuth.Test.ChannelElements {
return rawResponse;
};
- this.channel.PreferredTransmissionScheme = scheme;
IProtocolMessage response = this.channel.Request(request);
Assert.IsNotNull(response);
Assert.IsInstanceOfType(response, typeof(TestMessage));
@@ -263,7 +263,7 @@ namespace DotNetOAuth.Test.ChannelElements {
Assert.AreEqual(request.Location, responseMessage.Location);
}
- private void ParameterizedReceiveTest(MessageScheme scheme) {
+ private void ParameterizedReceiveTest(HttpDeliveryMethod scheme) {
var fields = new Dictionary<string, string> {
{ "age", "15" },
{ "Name", "Andrew" },
diff --git a/src/DotNetOAuth.Test/DotNetOAuth.Test.csproj b/src/DotNetOAuth.Test/DotNetOAuth.Test.csproj
index 63ad5a2..2859ffc 100644
--- a/src/DotNetOAuth.Test/DotNetOAuth.Test.csproj
+++ b/src/DotNetOAuth.Test/DotNetOAuth.Test.csproj
@@ -88,6 +88,7 @@
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Messaging\ResponseTests.cs" />
<Compile Include="ProtocolTests.cs" />
+ <Compile Include="Scenarios.cs" />
<Compile Include="ServiceProviderTests.cs" />
<Compile Include="TestBase.cs" />
<Compile Include="UriUtilTests.cs" />
diff --git a/src/DotNetOAuth.Test/Mocks/TestDirectedMessage.cs b/src/DotNetOAuth.Test/Mocks/TestDirectedMessage.cs
index 6938ef5..719a4a9 100644
--- a/src/DotNetOAuth.Test/Mocks/TestDirectedMessage.cs
+++ b/src/DotNetOAuth.Test/Mocks/TestDirectedMessage.cs
@@ -6,12 +6,10 @@
namespace DotNetOAuth.Test.Mocks {
using System;
- using System.Collections.Generic;
- using System.Runtime.Serialization;
+ using DotNetOAuth.ChannelElements;
using DotNetOAuth.Messaging;
- using DotNetOAuth.Messaging.Reflection;
- internal class TestDirectedMessage : TestMessage, IDirectedProtocolMessage {
+ internal class TestDirectedMessage : TestMessage, IOAuthDirectedMessage {
internal TestDirectedMessage() {
}
@@ -32,6 +30,12 @@ namespace DotNetOAuth.Test.Mocks {
#endregion
+ #region IOAuthDirectedMessage Members
+
+ public HttpDeliveryMethod HttpMethods { get; internal set; }
+
+ #endregion
+
protected virtual MessageProtection RequiredProtection {
get { return MessageProtection.None; }
}
diff --git a/src/DotNetOAuth.Test/Scenarios.cs b/src/DotNetOAuth.Test/Scenarios.cs
new file mode 100644
index 0000000..6718b47
--- /dev/null
+++ b/src/DotNetOAuth.Test/Scenarios.cs
@@ -0,0 +1,30 @@
+//-----------------------------------------------------------------------
+// <copyright file="Scenarios.cs" company="Andrew Arnott">
+// Copyright (c) Andrew Arnott. All rights reserved.
+// </copyright>
+//-----------------------------------------------------------------------
+
+namespace DotNetOAuth.Test {
+ using DotNetOAuth.Messaging;
+ using Microsoft.VisualStudio.TestTools.UnitTesting;
+
+ [TestClass]
+ public class Scenarios : TestBase {
+ [TestMethod]
+ public void SpecAppendixAExample() {
+ ServiceProvider sp = new ServiceProvider {
+ RequestTokenEndpoint = new ServiceProviderEndpoint("https://photos.example.net/request_token", HttpDeliveryMethod.PostRequest),
+ UserAuthorizationEndpoint = new ServiceProviderEndpoint("http://photos.example.net/authorize", HttpDeliveryMethod.GetRequest),
+ AccessTokenEndpoint = new ServiceProviderEndpoint("https://photos.example.net/access_token", HttpDeliveryMethod.PostRequest),
+ };
+
+ Consumer consumer = new Consumer {
+ ConsumerKey = "dpf43f3p2l4k3l03",
+ ConsumerSecret = "kd94hf93k423kf44",
+ ServiceProvider = sp,
+ };
+
+ consumer.RequestUserAuthorization();
+ }
+ }
+}
diff --git a/src/DotNetOAuth.Test/ServiceProviderTests.cs b/src/DotNetOAuth.Test/ServiceProviderTests.cs
index 73663cf..001bacf 100644
--- a/src/DotNetOAuth.Test/ServiceProviderTests.cs
+++ b/src/DotNetOAuth.Test/ServiceProviderTests.cs
@@ -6,6 +6,7 @@
namespace DotNetOAuth.Test {
using System;
+ using DotNetOAuth.Messaging;
using Microsoft.VisualStudio.TestTools.UnitTesting;
/// <summary>
@@ -19,24 +20,30 @@ namespace DotNetOAuth.Test {
[TestMethod]
public void UserAuthorizationUriTest() {
ServiceProvider target = new ServiceProvider();
- Uri expected = new Uri("http://localhost/authorization");
- Uri actual;
- target.UserAuthorizationUri = expected;
- actual = target.UserAuthorizationUri;
+ ServiceProviderEndpoint expected = new ServiceProviderEndpoint("http://localhost/authorization", HttpDeliveryMethod.GetRequest);
+ ServiceProviderEndpoint actual;
+ target.UserAuthorizationEndpoint = expected;
+ actual = target.UserAuthorizationEndpoint;
Assert.AreEqual(expected, actual);
+
+ target.UserAuthorizationEndpoint = null;
+ Assert.IsNull(target.UserAuthorizationEndpoint);
}
/// <summary>
/// A test for RequestTokenUri
/// </summary>
- [TestMethod()]
+ [TestMethod]
public void RequestTokenUriTest() {
ServiceProvider target = new ServiceProvider();
- Uri expected = new Uri("http://localhost/requesttoken");
- Uri actual;
- target.RequestTokenUri = expected;
- actual = target.RequestTokenUri;
+ ServiceProviderEndpoint expected = new ServiceProviderEndpoint("http://localhost/requesttoken", HttpDeliveryMethod.GetRequest);
+ ServiceProviderEndpoint actual;
+ target.RequestTokenEndpoint = expected;
+ actual = target.RequestTokenEndpoint;
Assert.AreEqual(expected, actual);
+
+ target.RequestTokenEndpoint = null;
+ Assert.IsNull(target.RequestTokenEndpoint);
}
/// <summary>
@@ -46,20 +53,23 @@ namespace DotNetOAuth.Test {
[TestMethod, ExpectedException(typeof(ArgumentException))]
public void RequestTokenUriWithOAuthParametersTest() {
ServiceProvider target = new ServiceProvider();
- target.RequestTokenUri = new Uri("http://localhost/requesttoken?oauth_token=something");
+ target.RequestTokenEndpoint = new ServiceProviderEndpoint("http://localhost/requesttoken?oauth_token=something", HttpDeliveryMethod.GetRequest);
}
/// <summary>
/// A test for AccessTokenUri
/// </summary>
- [TestMethod()]
+ [TestMethod]
public void AccessTokenUriTest() {
ServiceProvider target = new ServiceProvider();
- Uri expected = new Uri("http://localhost/accesstoken");
- Uri actual;
- target.AccessTokenUri = expected;
- actual = target.AccessTokenUri;
+ ServiceProviderEndpoint expected = new ServiceProviderEndpoint("http://localhost/accesstoken", HttpDeliveryMethod.GetRequest);
+ ServiceProviderEndpoint actual;
+ target.AccessTokenEndpoint = expected;
+ actual = target.AccessTokenEndpoint;
Assert.AreEqual(expected, actual);
+
+ target.AccessTokenEndpoint = null;
+ Assert.IsNull(target.AccessTokenEndpoint);
}
}
}