diff options
Diffstat (limited to 'src/DotNetOpenId.Test')
-rw-r--r-- | src/DotNetOpenId.Test/DotNetOpenId.Test.csproj | 3 | ||||
-rw-r--r-- | src/DotNetOpenId.Test/Extensions/AttributeExchangeTests.cs | 38 | ||||
-rw-r--r-- | src/DotNetOpenId.Test/Extensions/ExtensionTestBase.cs | 56 | ||||
-rw-r--r-- | src/DotNetOpenId.Test/Extensions/SimpleRegistrationTests.cs | 39 | ||||
-rw-r--r-- | src/DotNetOpenId.Test/ProfileFieldValuesTests.cs | 34 | ||||
-rw-r--r-- | src/DotNetOpenId.Test/TestSupport.cs | 11 |
6 files changed, 168 insertions, 13 deletions
diff --git a/src/DotNetOpenId.Test/DotNetOpenId.Test.csproj b/src/DotNetOpenId.Test/DotNetOpenId.Test.csproj index 0c750e9..bc71e0e 100644 --- a/src/DotNetOpenId.Test/DotNetOpenId.Test.csproj +++ b/src/DotNetOpenId.Test/DotNetOpenId.Test.csproj @@ -44,6 +44,9 @@ <Compile Include="AssociationsTest.cs" />
<Compile Include="AssociationTestSuite.cs" />
<Compile Include="ExtensionsArgumentsManagerTests.cs" />
+ <Compile Include="Extensions\AttributeExchangeTests.cs" />
+ <Compile Include="Extensions\ExtensionTestBase.cs" />
+ <Compile Include="Extensions\SimpleRegistrationTests.cs" />
<Compile Include="Hosting\EncodingInterceptor.cs" />
<Compile Include="IdentifierTests.cs" />
<Compile Include="NonceTest.cs" />
diff --git a/src/DotNetOpenId.Test/Extensions/AttributeExchangeTests.cs b/src/DotNetOpenId.Test/Extensions/AttributeExchangeTests.cs new file mode 100644 index 0000000..c216fd1 --- /dev/null +++ b/src/DotNetOpenId.Test/Extensions/AttributeExchangeTests.cs @@ -0,0 +1,38 @@ +using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using NUnit.Framework;
+using DotNetOpenId.RelyingParty;
+using DotNetOpenId.Extensions;
+
+namespace DotNetOpenId.Test.Extensions {
+ [TestFixture]
+ public class AttributeExchangeTests : ExtensionTestBase {
+ [Test]
+ public void None() {
+ var fetchResponse = ParameterizedTest<AttributeExchangeFetchResponse>(
+ TestSupport.GetIdentityUrl(TestSupport.Scenarios.ExtensionFullCooperation, Version), null);
+ Assert.IsNull(fetchResponse);
+ var storeResponse = ParameterizedTest<AttributeExchangeStoreResponse>(
+ TestSupport.GetIdentityUrl(TestSupport.Scenarios.ExtensionFullCooperation, Version), null);
+ Assert.IsNull(storeResponse);
+ }
+
+ [Test]
+ public void Fetch() {
+ var request = new AttributeExchangeFetchRequest();
+ var response = ParameterizedTest<AttributeExchangeFetchResponse>(
+ TestSupport.GetIdentityUrl(TestSupport.Scenarios.ExtensionFullCooperation, Version), request);
+ Assert.IsNotNull(response);
+ }
+
+ [Test]
+ public void Store() {
+ var request = new AttributeExchangeStoreRequest();
+ var response = ParameterizedTest<AttributeExchangeStoreResponse>(
+ TestSupport.GetIdentityUrl(TestSupport.Scenarios.ExtensionFullCooperation, Version), request);
+ Assert.IsNotNull(response);
+ }
+ }
+}
diff --git a/src/DotNetOpenId.Test/Extensions/ExtensionTestBase.cs b/src/DotNetOpenId.Test/Extensions/ExtensionTestBase.cs new file mode 100644 index 0000000..adb93bb --- /dev/null +++ b/src/DotNetOpenId.Test/Extensions/ExtensionTestBase.cs @@ -0,0 +1,56 @@ +using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using DotNetOpenId.RelyingParty;
+using NUnit.Framework;
+using System.Net;
+using DotNetOpenId.Extensions;
+using System.IO;
+using System.Diagnostics;
+
+namespace DotNetOpenId.Test.Extensions {
+ public class ExtensionTestBase {
+ protected IRelyingPartyApplicationStore Store;
+ protected const ProtocolVersion Version = ProtocolVersion.V20;
+
+ [SetUp]
+ public virtual void Setup() {
+ Store = new ApplicationMemoryStore();
+ }
+
+ protected T ParameterizedTest<T>(Identifier identityUrl, IExtensionRequest extensionArgs)
+ where T : IExtensionResponse, new() {
+ Debug.Assert(identityUrl != null);
+ var returnTo = TestSupport.GetFullUrl(TestSupport.ConsumerPage);
+ var realm = new Realm(TestSupport.GetFullUrl(TestSupport.ConsumerPage).AbsoluteUri);
+ var consumer = new OpenIdRelyingParty(Store, null);
+ var request = consumer.CreateRequest(identityUrl, realm, returnTo);
+ if (extensionArgs != null)
+ extensionArgs.AddToRequest(request);
+
+ HttpWebRequest providerRequest = (HttpWebRequest)WebRequest.Create(request.RedirectToProviderUrl);
+ providerRequest.AllowAutoRedirect = false;
+ Uri redirectUrl;
+ try {
+ using (HttpWebResponse providerResponse = (HttpWebResponse)providerRequest.GetResponse()) {
+ Assert.AreEqual(HttpStatusCode.Redirect, providerResponse.StatusCode);
+ redirectUrl = new Uri(providerResponse.Headers[HttpResponseHeader.Location]);
+ }
+ } catch (WebException ex) {
+ Trace.WriteLine(ex);
+ if (ex.Response != null) {
+ using (StreamReader sr = new StreamReader(ex.Response.GetResponseStream())) {
+ Trace.WriteLine(sr.ReadToEnd());
+ }
+ }
+ throw;
+ }
+ consumer = new OpenIdRelyingParty(Store, redirectUrl);
+ Assert.AreEqual(AuthenticationStatus.Authenticated, consumer.Response.Status);
+ Assert.AreEqual(identityUrl, consumer.Response.ClaimedIdentifier);
+ T r = new T();
+ return r.ReadFromResponse(consumer.Response) ? r : default(T);
+ }
+ }
+}
diff --git a/src/DotNetOpenId.Test/Extensions/SimpleRegistrationTests.cs b/src/DotNetOpenId.Test/Extensions/SimpleRegistrationTests.cs new file mode 100644 index 0000000..1377a49 --- /dev/null +++ b/src/DotNetOpenId.Test/Extensions/SimpleRegistrationTests.cs @@ -0,0 +1,39 @@ +using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using NUnit.Framework;
+using DotNetOpenId.Extensions;
+
+namespace DotNetOpenId.Test.Extensions {
+ [TestFixture]
+ public class SimpleRegistrationTests : ExtensionTestBase {
+ [Test]
+ public void None() {
+ var response = ParameterizedTest<SimpleRegistrationFieldValues>(
+ TestSupport.GetIdentityUrl(TestSupport.Scenarios.ExtensionFullCooperation, Version), null);
+ Assert.IsNull(response);
+ }
+
+ [Test]
+ public void Full() {
+ var request = new SimpleRegistrationRequestFields();
+ request.FullName = SimpleRegistrationRequest.Request;
+ request.Email = SimpleRegistrationRequest.Require;
+ var response = ParameterizedTest<SimpleRegistrationFieldValues>(
+ TestSupport.GetIdentityUrl(TestSupport.Scenarios.ExtensionFullCooperation, Version), request);
+ Assert.AreEqual("Andrew Arnott", response.FullName);
+ Assert.AreEqual("andrewarnott@gmail.com", response.Email);
+ }
+ [Test]
+ public void Partial() {
+ var request = new SimpleRegistrationRequestFields();
+ request.FullName = SimpleRegistrationRequest.Request;
+ request.Email = SimpleRegistrationRequest.Require;
+ var response = ParameterizedTest<SimpleRegistrationFieldValues>(
+ TestSupport.GetIdentityUrl(TestSupport.Scenarios.ExtensionPartialCooperation, Version), request);
+ Assert.IsNull(response.FullName);
+ Assert.AreEqual("andrewarnott@gmail.com", response.Email);
+ }
+ }
+}
diff --git a/src/DotNetOpenId.Test/ProfileFieldValuesTests.cs b/src/DotNetOpenId.Test/ProfileFieldValuesTests.cs index 6834942..323b05b 100644 --- a/src/DotNetOpenId.Test/ProfileFieldValuesTests.cs +++ b/src/DotNetOpenId.Test/ProfileFieldValuesTests.cs @@ -18,7 +18,7 @@ using DotNetOpenId.Extensions; namespace DotNetOpenId.Test {
[TestFixture]
public class ProfileFieldValuesTests {
- SimpleRegistrationFieldValues getFilledStruct() {
+ SimpleRegistrationFieldValues getFilledData() {
return new SimpleRegistrationFieldValues() {
BirthDate = new DateTime(2005, 2, 3),
Culture = new System.Globalization.CultureInfo("en-US"),
@@ -33,7 +33,7 @@ namespace DotNetOpenId.Test { [Test]
public void BinarySerialization() {
- SimpleRegistrationFieldValues fields = getFilledStruct();
+ SimpleRegistrationFieldValues fields = getFilledData();
MemoryStream ms = new MemoryStream();
IFormatter formatter = new BinaryFormatter();
formatter.Serialize(ms, fields);
@@ -45,7 +45,7 @@ namespace DotNetOpenId.Test { [Test]
public void XmlSerialization() {
- SimpleRegistrationFieldValues fields = getFilledStruct();
+ SimpleRegistrationFieldValues fields = getFilledData();
MemoryStream ms = new MemoryStream();
XmlSerializer xs = new XmlSerializer(typeof(SimpleRegistrationFieldValues));
xs.Serialize(ms, fields);
@@ -57,40 +57,48 @@ namespace DotNetOpenId.Test { [Test]
public void TestEquals() {
- SimpleRegistrationFieldValues fields1 = getFilledStruct();
+ SimpleRegistrationFieldValues fields1 = getFilledData();
Assert.AreNotEqual(fields1, null);
Assert.AreNotEqual(fields1, "string");
- SimpleRegistrationFieldValues fields2 = fields1;
+ SimpleRegistrationFieldValues fields2 = getFilledData();
Assert.AreNotSame(fields1, fields2, "Test sanity check.");
Assert.AreEqual(fields1, fields2);
// go through each property and change it slightly and make sure it causes inequality.
fields2.Email += "q";
Assert.AreNotEqual(fields1, fields2);
- fields2 = fields1;
+ fields1.Email = fields2.Email;
+ Assert.AreEqual(fields1, fields2, "Test sanity check.");
fields2.BirthDate = DateTime.Now;
Assert.AreNotEqual(fields1, fields2);
- fields2 = fields1;
+ fields2.BirthDate = fields1.BirthDate;
+ Assert.AreEqual(fields1, fields2, "Test sanity check.");
fields2.Country += "q";
Assert.AreNotEqual(fields1, fields2);
- fields2 = fields1;
+ fields2.Country = fields1.Country;
+ Assert.AreEqual(fields1, fields2, "Test sanity check.");
fields2.FullName += "q";
Assert.AreNotEqual(fields1, fields2);
- fields2 = fields1;
+ fields2.FullName = fields1.FullName;
+ Assert.AreEqual(fields1, fields2, "Test sanity check.");
fields2.Gender = Gender.Female;
Assert.AreNotEqual(fields1, fields2);
- fields2 = fields1;
+ fields2.Gender = fields1.Gender;
+ Assert.AreEqual(fields1, fields2, "Test sanity check.");
fields2.Language = "gb";
Assert.AreNotEqual(fields1, fields2);
- fields2 = fields1;
+ fields2.Language = fields1.Language;
+ Assert.AreEqual(fields1, fields2, "Test sanity check.");
fields2.Nickname += "q";
Assert.AreNotEqual(fields1, fields2);
- fields2 = fields1;
+ fields2.Nickname = fields1.Nickname;
+ Assert.AreEqual(fields1, fields2, "Test sanity check.");
fields2.PostalCode += "q";
Assert.AreNotEqual(fields1, fields2);
- fields2 = fields1;
+ fields2.PostalCode = fields1.PostalCode;
+ Assert.AreEqual(fields1, fields2, "Test sanity check.");
fields2.TimeZone += "q";
Assert.AreNotEqual(fields1, fields2);
}
diff --git a/src/DotNetOpenId.Test/TestSupport.cs b/src/DotNetOpenId.Test/TestSupport.cs index 33e3935..747c83a 100644 --- a/src/DotNetOpenId.Test/TestSupport.cs +++ b/src/DotNetOpenId.Test/TestSupport.cs @@ -20,9 +20,20 @@ public class TestSupport { public const string MobileConsumerPage = "RelyingPartyMobile.aspx";
public const string ConsumerPage = "RelyingParty.aspx";
public enum Scenarios {
+ // Authentication test scenarios
AutoApproval,
ApproveOnSetup,
AlwaysDeny,
+
+ // Extension test scenarios
+ /// <summary>
+ /// Provides all required and requested fields.
+ /// </summary>
+ ExtensionFullCooperation,
+ /// <summary>
+ /// Provides only those fields marked as required.
+ /// </summary>
+ ExtensionPartialCooperation,
}
internal static UriIdentifier GetIdentityUrl(Scenarios scenario, ProtocolVersion providerVersion) {
UriBuilder builder = new UriBuilder(Host.BaseUri);
|