summaryrefslogtreecommitdiffstats
path: root/src/DotNetOpenId.TestWeb/ProviderEndpoint.aspx.cs
diff options
context:
space:
mode:
authorAndrew Arnott <andrewarnott@gmail.com>2008-04-15 21:15:24 -0700
committerAndrew Arnott <andrewarnott@gmail.com>2008-04-15 22:23:48 -0700
commitea36fd5a24e311cfa399fd36f86b7ec55113cc8f (patch)
tree42bf3c147a7c7adc9da0cd87b5c2d299943647a7 /src/DotNetOpenId.TestWeb/ProviderEndpoint.aspx.cs
parentbedb0be63a15af113ce584b3e24f01a2b9daa1a1 (diff)
downloadDotNetOpenAuth-ea36fd5a24e311cfa399fd36f86b7ec55113cc8f.zip
DotNetOpenAuth-ea36fd5a24e311cfa399fd36f86b7ec55113cc8f.tar.gz
DotNetOpenAuth-ea36fd5a24e311cfa399fd36f86b7ec55113cc8f.tar.bz2
BREAKING CHANGE for SimpleRegistration extension, and other stuff.
* SimpleRegistration changed from struct to class. * SimpleRegistrationFieldValues.None and SimpleRegistrationRequestFields.None removed. * Semantic for extension classes that ReadFromRequest or ReadFromResponse and don't find any matching parameters changed from returning an empty struct to returning null. * Added framework for testing extensions. * Upgraded TestWeb project to .NET 3.5. * Built up bare framework for sending/receiving Attribute Exchange extension messages.
Diffstat (limited to 'src/DotNetOpenId.TestWeb/ProviderEndpoint.aspx.cs')
-rw-r--r--src/DotNetOpenId.TestWeb/ProviderEndpoint.aspx.cs34
1 files changed, 33 insertions, 1 deletions
diff --git a/src/DotNetOpenId.TestWeb/ProviderEndpoint.aspx.cs b/src/DotNetOpenId.TestWeb/ProviderEndpoint.aspx.cs
index 5743628..10cb735 100644
--- a/src/DotNetOpenId.TestWeb/ProviderEndpoint.aspx.cs
+++ b/src/DotNetOpenId.TestWeb/ProviderEndpoint.aspx.cs
@@ -9,13 +9,40 @@ using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Collections.Specialized;
+using DotNetOpenId.Extensions;
public partial class ProviderEndpoint : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) {
}
+ void respondToExtensions(DotNetOpenId.Provider.IRequest request, TestSupport.Scenarios scenario) {
+ var sregRequest = SimpleRegistrationRequestFields.ReadFromRequest(request);
+ var sregResponse = new SimpleRegistrationFieldValues();
+ var aeFetchRequest = AttributeExchangeFetchRequest.ReadFromRequest(request);
+ var aeFetchResponse = new AttributeExchangeFetchResponse();
+ var aeStoreRequest = AttributeExchangeStoreRequest.ReadFromRequest(request);
+ var aeStoreResponse = new AttributeExchangeStoreResponse();
+ switch (scenario) {
+ case TestSupport.Scenarios.ExtensionFullCooperation:
+ if (sregRequest.FullName != SimpleRegistrationRequest.NoRequest)
+ sregResponse.FullName = "Andrew Arnott";
+ if (sregRequest.Email != SimpleRegistrationRequest.NoRequest)
+ sregResponse.Email = "andrewarnott@gmail.com";
+ break;
+ case TestSupport.Scenarios.ExtensionPartialCooperation:
+ if (sregRequest.FullName == SimpleRegistrationRequest.Require)
+ sregResponse.FullName = "Andrew Arnott";
+ if (sregRequest.Email == SimpleRegistrationRequest.Require)
+ sregResponse.Email = "andrewarnott@gmail.com";
+ break;
+ }
+ sregResponse.AddToResponse(request);
+ if (aeFetchRequest != null) aeFetchResponse.AddToResponse(request);
+ if (aeStoreRequest != null) aeStoreResponse.AddToResponse(request);
+ }
+
protected void ProviderEndpoint1_AuthenticationChallenge(object sender, DotNetOpenId.Provider.AuthenticationChallengeEventArgs e) {
- TestSupport.Scenarios scenario = (TestSupport.Scenarios)Enum.Parse(typeof(TestSupport.Scenarios),
+ TestSupport.Scenarios scenario = (TestSupport.Scenarios)Enum.Parse(typeof(TestSupport.Scenarios),
new Uri(e.Request.LocalIdentifier.ToString()).AbsolutePath.TrimStart('/'));
switch (scenario) {
case TestSupport.Scenarios.AutoApproval:
@@ -28,6 +55,11 @@ public partial class ProviderEndpoint : System.Web.UI.Page {
case TestSupport.Scenarios.AlwaysDeny:
e.Request.IsAuthenticated = false;
break;
+ case TestSupport.Scenarios.ExtensionFullCooperation:
+ case TestSupport.Scenarios.ExtensionPartialCooperation:
+ respondToExtensions(e.Request, scenario);
+ e.Request.IsAuthenticated = true;
+ break;
default:
throw new InvalidOperationException("Unrecognized scenario");
}