diff options
Diffstat (limited to 'src/DotNetOpenId.TestWeb/ProviderEndpoint.aspx.cs')
-rw-r--r-- | src/DotNetOpenId.TestWeb/ProviderEndpoint.aspx.cs | 34 |
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");
}
|