summaryrefslogtreecommitdiffstats
path: root/src/DotNetOpenId.TestWeb/DirectedProviderEndpoint.aspx.cs
blob: 2dae40e3cd8732658273491c70acbbf0803db3dd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
using System;
using System.Web.UI;
using DotNetOpenId;
using DotNetOpenId.Provider;

public partial class DirectedProviderEndpoint : System.Web.UI.Page {
	protected void Page_Load(object sender, EventArgs e) {
		TestSupport.Scenarios scenario = (TestSupport.Scenarios)Enum.Parse(typeof(TestSupport.Scenarios), Request.QueryString["user"]);
		UriBuilder providerEndpoint = new UriBuilder(Request.Url);
		providerEndpoint.Query = "user=" + scenario;
		OpenIdProvider provider = new OpenIdProvider(TestSupport.ProviderStoreContext, providerEndpoint.Uri,
			Request.Url, Request.HttpMethod == "GET" ? Request.QueryString : Request.Form);
		if (provider.Request != null) {
			if (!provider.Request.IsResponseReady) {
				var idreq = provider.Request as IAuthenticationRequest;
				idreq.ClaimedIdentifier = new Uri(Request.Url, Page.ResolveUrl("~/DirectedIdentityEndpoint.aspx?user=" + scenario + "&version=" + ProtocolVersion.V20));

				switch (scenario) {
					case TestSupport.Scenarios.AutoApproval:
						// immediately approve
						idreq.IsAuthenticated = true;
						break;
					case TestSupport.Scenarios.AutoApprovalAddFragment:
						idreq.SetClaimedIdentifierFragment("frag");
						idreq.IsAuthenticated = true;
						break;
					case TestSupport.Scenarios.ApproveOnSetup:
						idreq.IsAuthenticated = !idreq.Immediate;
						break;
					case TestSupport.Scenarios.AlwaysDeny:
						idreq.IsAuthenticated = false;
						break;
					case TestSupport.Scenarios.ExtensionFullCooperation:
					case TestSupport.Scenarios.ExtensionPartialCooperation:
						throw new NotImplementedException();
						//idreq.IsAuthenticated = true;
						//break;
					default:
						throw new InvalidOperationException("Unrecognized scenario");
				}
			}
			provider.Request.Response.Send();
		}
	}
}