summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Arnott <andrewarnott@gmail.com>2009-01-17 22:13:28 -0800
committerAndrew <andrewarnott@gmail.com>2009-01-17 22:13:28 -0800
commit174259116de4aaa38ae356650023a45dfc076f90 (patch)
tree570233da8768969714ec1ef9a0b52002013d1308
parentfb8ad8de7ea894acd9d488cbcfbb88a9c5cb4d1a (diff)
downloadDotNetOpenAuth-174259116de4aaa38ae356650023a45dfc076f90.zip
DotNetOpenAuth-174259116de4aaa38ae356650023a45dfc076f90.tar.gz
DotNetOpenAuth-174259116de4aaa38ae356650023a45dfc076f90.tar.bz2
Hooked up PAPE extension factory methods.
-rw-r--r--src/DotNetOpenAuth.Test/OpenId/Extensions/ProviderAuthenticationPolicy/PolicyRequestTests.cs12
-rw-r--r--src/DotNetOpenAuth.Test/OpenId/Extensions/ProviderAuthenticationPolicy/PolicyResponseTests.cs19
-rw-r--r--src/DotNetOpenAuth/OpenId/Extensions/OpenIdExtensionFactory.cs3
-rw-r--r--src/DotNetOpenAuth/OpenId/Extensions/ProviderAuthenticationPolicy/DateTimeEncoder.cs2
-rw-r--r--src/DotNetOpenAuth/OpenId/Extensions/ProviderAuthenticationPolicy/PapeUtilities.cs24
-rw-r--r--src/DotNetOpenAuth/OpenId/Extensions/ProviderAuthenticationPolicy/PolicyRequest.cs16
-rw-r--r--src/DotNetOpenAuth/OpenId/Extensions/ProviderAuthenticationPolicy/PolicyResponse.cs14
7 files changed, 43 insertions, 47 deletions
diff --git a/src/DotNetOpenAuth.Test/OpenId/Extensions/ProviderAuthenticationPolicy/PolicyRequestTests.cs b/src/DotNetOpenAuth.Test/OpenId/Extensions/ProviderAuthenticationPolicy/PolicyRequestTests.cs
index 2d85b4e..b6149b3 100644
--- a/src/DotNetOpenAuth.Test/OpenId/Extensions/ProviderAuthenticationPolicy/PolicyRequestTests.cs
+++ b/src/DotNetOpenAuth.Test/OpenId/Extensions/ProviderAuthenticationPolicy/PolicyRequestTests.cs
@@ -103,18 +103,6 @@ namespace DotNetOpenAuth.OpenId.Test.Extensions.ProviderAuthenticationPolicy {
}
[TestMethod]
- public void DeserializeNull() {
- PolicyRequest req = new PolicyRequest();
- Assert.IsFalse(((IExtensionRequest)req).Deserialize(null, null, Constants.TypeUri));
- }
-
- [TestMethod]
- public void DeserializeEmpty() {
- PolicyRequest req = new PolicyRequest();
- Assert.IsFalse(((IExtensionRequest)req).Deserialize(new Dictionary<string, string>(), null, Constants.TypeUri));
- }
-
- [TestMethod]
public void SerializeRoundTrip() {
// This test relies on the PolicyRequest.Equals method. If this and that test
// are failing, work on EqualsTest first.
diff --git a/src/DotNetOpenAuth.Test/OpenId/Extensions/ProviderAuthenticationPolicy/PolicyResponseTests.cs b/src/DotNetOpenAuth.Test/OpenId/Extensions/ProviderAuthenticationPolicy/PolicyResponseTests.cs
index 1e0ad76..d7c3d7b 100644
--- a/src/DotNetOpenAuth.Test/OpenId/Extensions/ProviderAuthenticationPolicy/PolicyResponseTests.cs
+++ b/src/DotNetOpenAuth.Test/OpenId/Extensions/ProviderAuthenticationPolicy/PolicyResponseTests.cs
@@ -14,9 +14,10 @@ namespace DotNetOpenAuth.OpenId.Test.Extensions.ProviderAuthenticationPolicy {
[TestClass]
public class PolicyResponseTests {
- DateTime someLocalTime = new DateTime(2008, 1, 1, 1, 1, 1, 0, DateTimeKind.Local);
- DateTime someUtcTime = new DateTime(2008, 1, 1, 1, 1, 1, 0, DateTimeKind.Utc);
- DateTime someUnspecifiedTime = new DateTime(2008, 1, 1, 1, 1, 1, 0, DateTimeKind.Unspecified);
+ private DateTime someLocalTime = new DateTime(2008, 1, 1, 1, 1, 1, 0, DateTimeKind.Local);
+ private DateTime someUtcTime = new DateTime(2008, 1, 1, 1, 1, 1, 0, DateTimeKind.Utc);
+ private DateTime someUnspecifiedTime = new DateTime(2008, 1, 1, 1, 1, 1, 0, DateTimeKind.Unspecified);
+
[TestMethod]
public void Ctor() {
PolicyResponse resp = new PolicyResponse();
@@ -162,18 +163,6 @@ namespace DotNetOpenAuth.OpenId.Test.Extensions.ProviderAuthenticationPolicy {
}
[TestMethod]
- public void DeserializeNull() {
- PolicyResponse resp = new PolicyResponse();
- Assert.IsFalse(((IExtensionResponse)resp).Deserialize(null, null, Constants.TypeUri));
- }
-
- [TestMethod]
- public void DeserializeEmpty() {
- PolicyResponse resp = new PolicyResponse();
- Assert.IsFalse(((IExtensionResponse)resp).Deserialize(new Dictionary<string, string>(), null, Constants.TypeUri));
- }
-
- [TestMethod]
public void SerializeRoundTrip() {
// This test relies on the PolicyResponse.Equals method. If this and that test
// are failing, work on EqualsTest first.
diff --git a/src/DotNetOpenAuth/OpenId/Extensions/OpenIdExtensionFactory.cs b/src/DotNetOpenAuth/OpenId/Extensions/OpenIdExtensionFactory.cs
index 4db67a9..dff49d1 100644
--- a/src/DotNetOpenAuth/OpenId/Extensions/OpenIdExtensionFactory.cs
+++ b/src/DotNetOpenAuth/OpenId/Extensions/OpenIdExtensionFactory.cs
@@ -11,6 +11,7 @@ namespace DotNetOpenAuth.OpenId.Extensions {
using DotNetOpenAuth.OpenId.Extensions.AttributeExchange;
using DotNetOpenAuth.OpenId.Extensions.SimpleRegistration;
using DotNetOpenAuth.OpenId.Messages;
+ using DotNetOpenAuth.OpenId.Extensions.ProviderAuthenticationPolicy;
/// <summary>
/// An OpenID extension factory that supports registration so that third-party
@@ -32,6 +33,8 @@ namespace DotNetOpenAuth.OpenId.Extensions {
this.RegisterExtension(FetchResponse.Factory);
this.RegisterExtension(StoreRequest.Factory);
this.RegisterExtension(StoreResponse.Factory);
+ this.RegisterExtension(PolicyRequest.Factory);
+ this.RegisterExtension(PolicyResponse.Factory);
}
/// <summary>
diff --git a/src/DotNetOpenAuth/OpenId/Extensions/ProviderAuthenticationPolicy/DateTimeEncoder.cs b/src/DotNetOpenAuth/OpenId/Extensions/ProviderAuthenticationPolicy/DateTimeEncoder.cs
index 2fe498e..41d0893 100644
--- a/src/DotNetOpenAuth/OpenId/Extensions/ProviderAuthenticationPolicy/DateTimeEncoder.cs
+++ b/src/DotNetOpenAuth/OpenId/Extensions/ProviderAuthenticationPolicy/DateTimeEncoder.cs
@@ -62,7 +62,7 @@ namespace DotNetOpenAuth.OpenId.Extensions.ProviderAuthenticationPolicy {
if (DateTime.TryParse(value, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal, out dateTime) && dateTime.Kind == DateTimeKind.Utc) { // may be unspecified per our option above
return dateTime;
} else {
- Logger.ErrorFormat("Invalid format for auth_time parameter: {0}", value);
+ Logger.ErrorFormat("Invalid format for message part: {0}", value);
return null;
}
}
diff --git a/src/DotNetOpenAuth/OpenId/Extensions/ProviderAuthenticationPolicy/PapeUtilities.cs b/src/DotNetOpenAuth/OpenId/Extensions/ProviderAuthenticationPolicy/PapeUtilities.cs
index 812c0b5..4f8f576 100644
--- a/src/DotNetOpenAuth/OpenId/Extensions/ProviderAuthenticationPolicy/PapeUtilities.cs
+++ b/src/DotNetOpenAuth/OpenId/Extensions/ProviderAuthenticationPolicy/PapeUtilities.cs
@@ -1,21 +1,18 @@
-namespace DotNetOpenAuth.OpenId.Extensions.ProviderAuthenticationPolicy {
+//-----------------------------------------------------------------------
+// <copyright file="PapeUtilities.cs" company="Andrew Arnott">
+// Copyright (c) Andrew Arnott. All rights reserved.
+// </copyright>
+//-----------------------------------------------------------------------
+
+namespace DotNetOpenAuth.OpenId.Extensions.ProviderAuthenticationPolicy {
using System;
using System.Collections.Generic;
+ using System.Globalization;
using System.Linq;
using System.Text;
using DotNetOpenAuth.Messaging;
- using System.Globalization;
internal static class PapeUtilities {
- static internal IEnumerable<T> GetUniqueItems<T>(IList<T> list) {
- List<T> itemsSeen = new List<T>(list.Count);
- foreach (T item in list) {
- if (itemsSeen.Contains(item)) continue;
- itemsSeen.Add(item);
- yield return item;
- }
- }
-
/// <summary>
/// Looks at the incoming fields and figures out what the aliases and name spaces for auth level types are.
/// </summary>
@@ -40,7 +37,7 @@
ErrorUtilities.VerifyArgumentNotNull(values, "values");
StringBuilder valuesList = new StringBuilder();
- foreach (string value in GetUniqueItems(values)) {
+ foreach (string value in values.Distinct()) {
if (value.Contains(" ")) {
throw new FormatException(string.Format(CultureInfo.CurrentCulture,
OpenIdStrings.InvalidUri, value));
@@ -48,8 +45,9 @@
valuesList.Append(value);
valuesList.Append(" ");
}
- if (valuesList.Length > 0)
+ if (valuesList.Length > 0) {
valuesList.Length -= 1; // remove trailing space
+ }
return valuesList.ToString();
}
}
diff --git a/src/DotNetOpenAuth/OpenId/Extensions/ProviderAuthenticationPolicy/PolicyRequest.cs b/src/DotNetOpenAuth/OpenId/Extensions/ProviderAuthenticationPolicy/PolicyRequest.cs
index ffaec90..07e58f5 100644
--- a/src/DotNetOpenAuth/OpenId/Extensions/ProviderAuthenticationPolicy/PolicyRequest.cs
+++ b/src/DotNetOpenAuth/OpenId/Extensions/ProviderAuthenticationPolicy/PolicyRequest.cs
@@ -7,16 +7,24 @@
namespace DotNetOpenAuth.OpenId.Extensions.ProviderAuthenticationPolicy {
using System;
using System.Collections.Generic;
- using System.Text;
- using System.Globalization;
- using System.Diagnostics;
- using DotNetOpenAuth.OpenId.RelyingParty;
using DotNetOpenAuth.Messaging;
+ using DotNetOpenAuth.OpenId.Messages;
/// <summary>
/// The PAPE request part of an OpenID Authentication request message.
/// </summary>
public sealed class PolicyRequest : ExtensionBase, IMessageWithEvents {
+ /// <summary>
+ /// The factory method that may be used in deserialization of this message.
+ /// </summary>
+ internal static readonly OpenIdExtensionFactory.CreateDelegate Factory = (typeUri, data, baseMessage) => {
+ if (typeUri == Constants.TypeUri && baseMessage is SignedResponseRequest) {
+ return new PolicyRequest();
+ }
+
+ return null;
+ };
+
[MessagePart("preferred_auth_policies", IsRequired = true)]
private string preferredPoliciesString;
diff --git a/src/DotNetOpenAuth/OpenId/Extensions/ProviderAuthenticationPolicy/PolicyResponse.cs b/src/DotNetOpenAuth/OpenId/Extensions/ProviderAuthenticationPolicy/PolicyResponse.cs
index 71514a8..e4ff8a8 100644
--- a/src/DotNetOpenAuth/OpenId/Extensions/ProviderAuthenticationPolicy/PolicyResponse.cs
+++ b/src/DotNetOpenAuth/OpenId/Extensions/ProviderAuthenticationPolicy/PolicyResponse.cs
@@ -7,16 +7,26 @@
namespace DotNetOpenAuth.OpenId.Extensions.ProviderAuthenticationPolicy {
using System;
using System.Collections.Generic;
- using System.Text;
- using System.Diagnostics;
using System.Globalization;
using DotNetOpenAuth.Messaging;
+ using DotNetOpenAuth.OpenId.Messages;
/// <summary>
/// The PAPE response part of an OpenID Authentication response message.
/// </summary>
public sealed class PolicyResponse : ExtensionBase, IMessageWithEvents {
/// <summary>
+ /// The factory method that may be used in deserialization of this message.
+ /// </summary>
+ internal static readonly OpenIdExtensionFactory.CreateDelegate Factory = (typeUri, data, baseMessage) => {
+ if (typeUri == Constants.TypeUri && baseMessage is IndirectSignedResponse) {
+ return new PolicyResponse();
+ }
+
+ return null;
+ };
+
+ /// <summary>
/// The first part of a parameter name that gives the custom string value for
/// the assurance level. The second part of the parameter name is the alias for
/// that assurance level.