summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAndrew Arnott <andrewarnott@gmail.com>2010-11-24 21:00:27 -0800
committerAndrew Arnott <andrewarnott@gmail.com>2010-11-24 21:00:58 -0800
commit6115cc19190ef7ddf8b02a0370ea4279f09d76e4 (patch)
treec8a3cab75cb173a5df6e9e0468b843f69a03d62b /src
parent31f1630014f48fc9ea9b3083b76d93bb631be036 (diff)
downloadDotNetOpenAuth-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')
-rw-r--r--src/DotNetOpenAuth.Test/OpenId/Extensions/SimpleRegistration/ClaimsResponseTests.cs12
-rw-r--r--src/DotNetOpenAuth/OpenId/Extensions/SimpleRegistration/ClaimsRequest.cs10
-rw-r--r--src/DotNetOpenAuth/OpenId/Extensions/SimpleRegistration/ClaimsResponse.cs4
-rw-r--r--src/DotNetOpenAuth/OpenId/Extensions/SimpleRegistration/Constants.cs8
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,
+ };
}
}