diff options
author | Andrew Arnott <andrewarnott@gmail.com> | 2010-11-24 21:00:27 -0800 |
---|---|---|
committer | Andrew Arnott <andrewarnott@gmail.com> | 2010-11-24 21:00:58 -0800 |
commit | 6115cc19190ef7ddf8b02a0370ea4279f09d76e4 (patch) | |
tree | c8a3cab75cb173a5df6e9e0468b843f69a03d62b /src | |
parent | 31f1630014f48fc9ea9b3083b76d93bb631be036 (diff) | |
download | DotNetOpenAuth-6115cc19190ef7ddf8b02a0370ea4279f09d76e4.zip DotNetOpenAuth-6115cc19190ef7ddf8b02a0370ea4279f09d76e4.tar.gz DotNetOpenAuth-6115cc19190ef7ddf8b02a0370ea4279f09d76e4.tar.bz2 |
Fixed AOL sreg interop bug and added regression test.
Thanks Dan Friedmann for finding this issue.
Diffstat (limited to 'src')
4 files changed, 23 insertions, 11 deletions
diff --git a/src/DotNetOpenAuth.Test/OpenId/Extensions/SimpleRegistration/ClaimsResponseTests.cs b/src/DotNetOpenAuth.Test/OpenId/Extensions/SimpleRegistration/ClaimsResponseTests.cs index 0bdc36e..69bb935 100644 --- a/src/DotNetOpenAuth.Test/OpenId/Extensions/SimpleRegistration/ClaimsResponseTests.cs +++ b/src/DotNetOpenAuth.Test/OpenId/Extensions/SimpleRegistration/ClaimsResponseTests.cs @@ -11,6 +11,7 @@ namespace DotNetOpenAuth.Test.OpenId.Extensions { using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Binary; using System.Xml.Serialization; + using DotNetOpenAuth.OpenId; using DotNetOpenAuth.OpenId.Extensions.SimpleRegistration; using NUnit.Framework; @@ -130,6 +131,17 @@ namespace DotNetOpenAuth.Test.OpenId.Extensions { response.BirthDateRaw = "2008"; } + [TestCase] + public void ResponseAlternateTypeUriTests() { + var request = new ClaimsRequest(Constants.sreg_ns10); + request.Email = DemandLevel.Require; + + var response = new ClaimsResponse(Constants.sreg_ns10); + response.Email = "a@b.com"; + + ExtensionTestUtilities.Roundtrip(Protocol.Default, new[] { request }, new[] { response }); + } + private ClaimsResponse GetFilledData() { return new ClaimsResponse(Constants.sreg_ns) { BirthDate = new DateTime(2005, 2, 3), diff --git a/src/DotNetOpenAuth/OpenId/Extensions/SimpleRegistration/ClaimsRequest.cs b/src/DotNetOpenAuth/OpenId/Extensions/SimpleRegistration/ClaimsRequest.cs index f775492..cec8042 100644 --- a/src/DotNetOpenAuth/OpenId/Extensions/SimpleRegistration/ClaimsRequest.cs +++ b/src/DotNetOpenAuth/OpenId/Extensions/SimpleRegistration/ClaimsRequest.cs @@ -32,14 +32,6 @@ namespace DotNetOpenAuth.OpenId.Extensions.SimpleRegistration { }; /// <summary> - /// Additional type URIs that this extension is sometimes known by remote parties. - /// </summary> - private static readonly string[] additionalTypeUris = new string[] { - Constants.sreg_ns10, - Constants.sreg_ns11other, - }; - - /// <summary> /// The type URI that this particular (deserialized) extension was read in using, /// allowing a response to alter be crafted using the same type URI. /// </summary> @@ -49,7 +41,7 @@ namespace DotNetOpenAuth.OpenId.Extensions.SimpleRegistration { /// Initializes a new instance of the <see cref="ClaimsRequest"/> class. /// </summary> public ClaimsRequest() - : base(new Version(1, 0), Constants.sreg_ns, additionalTypeUris) { + : base(new Version(1, 0), Constants.sreg_ns, Constants.AdditionalTypeUris) { } /// <summary> diff --git a/src/DotNetOpenAuth/OpenId/Extensions/SimpleRegistration/ClaimsResponse.cs b/src/DotNetOpenAuth/OpenId/Extensions/SimpleRegistration/ClaimsResponse.cs index 7db6d45..d4df028 100644 --- a/src/DotNetOpenAuth/OpenId/Extensions/SimpleRegistration/ClaimsResponse.cs +++ b/src/DotNetOpenAuth/OpenId/Extensions/SimpleRegistration/ClaimsResponse.cs @@ -27,7 +27,7 @@ namespace DotNetOpenAuth.OpenId.Extensions.SimpleRegistration { /// The factory method that may be used in deserialization of this message. /// </summary> internal static readonly StandardOpenIdExtensionFactory.CreateDelegate Factory = (typeUri, data, baseMessage, isProviderRole) => { - if (typeUri == Constants.sreg_ns && !isProviderRole) { + if ((typeUri == Constants.sreg_ns || Array.IndexOf(Constants.AdditionalTypeUris, typeUri) >= 0) && !isProviderRole) { return new ClaimsResponse(typeUri); } @@ -69,7 +69,7 @@ namespace DotNetOpenAuth.OpenId.Extensions.SimpleRegistration { /// This value should be the same one the relying party used to send the extension request. /// </param> internal ClaimsResponse(string typeUriToUse) - : base(new Version(1, 0), typeUriToUse, EmptyList<string>.Instance) { + : base(new Version(1, 0), typeUriToUse, Constants.AdditionalTypeUris) { Contract.Requires<ArgumentException>(!String.IsNullOrEmpty(typeUriToUse)); } diff --git a/src/DotNetOpenAuth/OpenId/Extensions/SimpleRegistration/Constants.cs b/src/DotNetOpenAuth/OpenId/Extensions/SimpleRegistration/Constants.cs index 544ba77..9e00137 100644 --- a/src/DotNetOpenAuth/OpenId/Extensions/SimpleRegistration/Constants.cs +++ b/src/DotNetOpenAuth/OpenId/Extensions/SimpleRegistration/Constants.cs @@ -34,5 +34,13 @@ namespace DotNetOpenAuth.OpenId.Extensions.SimpleRegistration { internal const string Male = "M"; internal const string Female = "F"; } + + /// <summary> + /// Additional type URIs that this extension is sometimes known by remote parties. + /// </summary> + internal static readonly string[] AdditionalTypeUris = new string[] { + Constants.sreg_ns10, + Constants.sreg_ns11other, + }; } } |