diff options
author | Andrew Arnott <andrewarnott@gmail.com> | 2009-01-17 22:13:28 -0800 |
---|---|---|
committer | Andrew <andrewarnott@gmail.com> | 2009-01-17 22:13:28 -0800 |
commit | 174259116de4aaa38ae356650023a45dfc076f90 (patch) | |
tree | 570233da8768969714ec1ef9a0b52002013d1308 | |
parent | fb8ad8de7ea894acd9d488cbcfbb88a9c5cb4d1a (diff) | |
download | DotNetOpenAuth-174259116de4aaa38ae356650023a45dfc076f90.zip DotNetOpenAuth-174259116de4aaa38ae356650023a45dfc076f90.tar.gz DotNetOpenAuth-174259116de4aaa38ae356650023a45dfc076f90.tar.bz2 |
Hooked up PAPE extension factory methods.
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. |