summaryrefslogtreecommitdiffstats
path: root/src/DotNetOpenId.Test/Extensions/ExtensionTestBase.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.Test/Extensions/ExtensionTestBase.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.Test/Extensions/ExtensionTestBase.cs')
-rw-r--r--src/DotNetOpenId.Test/Extensions/ExtensionTestBase.cs56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/DotNetOpenId.Test/Extensions/ExtensionTestBase.cs b/src/DotNetOpenId.Test/Extensions/ExtensionTestBase.cs
new file mode 100644
index 0000000..adb93bb
--- /dev/null
+++ b/src/DotNetOpenId.Test/Extensions/ExtensionTestBase.cs
@@ -0,0 +1,56 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using DotNetOpenId.RelyingParty;
+using NUnit.Framework;
+using System.Net;
+using DotNetOpenId.Extensions;
+using System.IO;
+using System.Diagnostics;
+
+namespace DotNetOpenId.Test.Extensions {
+ public class ExtensionTestBase {
+ protected IRelyingPartyApplicationStore Store;
+ protected const ProtocolVersion Version = ProtocolVersion.V20;
+
+ [SetUp]
+ public virtual void Setup() {
+ Store = new ApplicationMemoryStore();
+ }
+
+ protected T ParameterizedTest<T>(Identifier identityUrl, IExtensionRequest extensionArgs)
+ where T : IExtensionResponse, new() {
+ Debug.Assert(identityUrl != null);
+ var returnTo = TestSupport.GetFullUrl(TestSupport.ConsumerPage);
+ var realm = new Realm(TestSupport.GetFullUrl(TestSupport.ConsumerPage).AbsoluteUri);
+ var consumer = new OpenIdRelyingParty(Store, null);
+ var request = consumer.CreateRequest(identityUrl, realm, returnTo);
+ if (extensionArgs != null)
+ extensionArgs.AddToRequest(request);
+
+ HttpWebRequest providerRequest = (HttpWebRequest)WebRequest.Create(request.RedirectToProviderUrl);
+ providerRequest.AllowAutoRedirect = false;
+ Uri redirectUrl;
+ try {
+ using (HttpWebResponse providerResponse = (HttpWebResponse)providerRequest.GetResponse()) {
+ Assert.AreEqual(HttpStatusCode.Redirect, providerResponse.StatusCode);
+ redirectUrl = new Uri(providerResponse.Headers[HttpResponseHeader.Location]);
+ }
+ } catch (WebException ex) {
+ Trace.WriteLine(ex);
+ if (ex.Response != null) {
+ using (StreamReader sr = new StreamReader(ex.Response.GetResponseStream())) {
+ Trace.WriteLine(sr.ReadToEnd());
+ }
+ }
+ throw;
+ }
+ consumer = new OpenIdRelyingParty(Store, redirectUrl);
+ Assert.AreEqual(AuthenticationStatus.Authenticated, consumer.Response.Status);
+ Assert.AreEqual(identityUrl, consumer.Response.ClaimedIdentifier);
+ T r = new T();
+ return r.ReadFromResponse(consumer.Response) ? r : default(T);
+ }
+ }
+}