summaryrefslogtreecommitdiffstats
path: root/src/DotNetOpenId.TestWeb/ProviderEndpoint.aspx.cs
diff options
context:
space:
mode:
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");
}