summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Arnott <andrewarnott@gmail.com>2013-03-25 08:28:15 -0700
committerAndrew Arnott <andrewarnott@gmail.com>2013-03-25 08:28:15 -0700
commit257e43bcb3bf8f5181059450283eba832be5b1fa (patch)
tree6367f201368e648d7533cac9a991d7cf6a4ef481
parent742e5d61f34454f7a61aa7c7594e0af366549635 (diff)
downloadDotNetOpenAuth-257e43bcb3bf8f5181059450283eba832be5b1fa.zip
DotNetOpenAuth-257e43bcb3bf8f5181059450283eba832be5b1fa.tar.gz
DotNetOpenAuth-257e43bcb3bf8f5181059450283eba832be5b1fa.tar.bz2
Registered handlers now overwrite previous ones rather than getting silently appended, never to be invoked.
10 test failures.
-rw-r--r--src/DotNetOpenAuth.Test/MockingHostFactories.cs23
-rw-r--r--src/DotNetOpenAuth.Test/TestBase.cs9
2 files changed, 12 insertions, 20 deletions
diff --git a/src/DotNetOpenAuth.Test/MockingHostFactories.cs b/src/DotNetOpenAuth.Test/MockingHostFactories.cs
index ae10435..b8cbeb0 100644
--- a/src/DotNetOpenAuth.Test/MockingHostFactories.cs
+++ b/src/DotNetOpenAuth.Test/MockingHostFactories.cs
@@ -15,19 +15,16 @@ namespace DotNetOpenAuth.Test {
using DotNetOpenAuth.OpenId;
using Validation;
+ using System;
internal class MockingHostFactories : IHostFactories {
- private readonly List<TestBase.Handler> handlers;
-
- public MockingHostFactories(List<TestBase.Handler> handlers = null) {
- this.handlers = handlers ?? new List<TestBase.Handler>();
+ public MockingHostFactories(Dictionary<Uri, Func<HttpRequestMessage, Task<HttpResponseMessage>>> handlers = null) {
+ this.Handlers = handlers ?? new Dictionary<Uri, Func<HttpRequestMessage, Task<HttpResponseMessage>>>();
this.CookieContainer = new CookieContainer();
this.AllowAutoRedirects = true;
}
- public List<TestBase.Handler> Handlers {
- get { return this.handlers; }
- }
+ public Dictionary<Uri, Func<HttpRequestMessage, Task<HttpResponseMessage>>> Handlers { get; private set; }
public CookieContainer CookieContainer { get; set; }
@@ -36,7 +33,7 @@ namespace DotNetOpenAuth.Test {
public bool InstallUntrustedWebReqestHandler { get; set; }
public HttpMessageHandler CreateHttpMessageHandler() {
- var forwardingMessageHandler = new ForwardingMessageHandler(this.handlers, this);
+ var forwardingMessageHandler = new ForwardingMessageHandler(this.Handlers, this);
var cookieDelegatingHandler = new CookieDelegatingHandler(forwardingMessageHandler, this.CookieContainer);
if (this.InstallUntrustedWebReqestHandler) {
var untrustedHandler = new UntrustedWebRequestHandler(cookieDelegatingHandler);
@@ -54,11 +51,11 @@ namespace DotNetOpenAuth.Test {
}
private class ForwardingMessageHandler : HttpMessageHandler {
- private readonly IEnumerable<TestBase.Handler> handlers;
+ private readonly Dictionary<Uri, Func<HttpRequestMessage, Task<HttpResponseMessage>>> handlers;
private readonly IHostFactories hostFactories;
- public ForwardingMessageHandler(IEnumerable<TestBase.Handler> handlers, IHostFactories hostFactories) {
+ public ForwardingMessageHandler(Dictionary<Uri, Func<HttpRequestMessage, Task<HttpResponseMessage>>> handlers, IHostFactories hostFactories) {
Requires.NotNull(handlers, "handlers");
this.handlers = handlers;
@@ -66,9 +63,9 @@ namespace DotNetOpenAuth.Test {
}
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) {
- foreach (var handler in this.handlers) {
- if (handler.Uri.IsBaseOf(request.RequestUri) && handler.Uri.AbsolutePath == request.RequestUri.AbsolutePath) {
- var response = await handler.MessageHandler(request);
+ foreach (var pair in this.handlers) {
+ if (pair.Key.IsBaseOf(request.RequestUri) && pair.Key.AbsolutePath == request.RequestUri.AbsolutePath) {
+ var response = await pair.Value(request);
if (response != null) {
if (response.RequestMessage == null) {
response.RequestMessage = request;
diff --git a/src/DotNetOpenAuth.Test/TestBase.cs b/src/DotNetOpenAuth.Test/TestBase.cs
index 96ce98d..4758b7d 100644
--- a/src/DotNetOpenAuth.Test/TestBase.cs
+++ b/src/DotNetOpenAuth.Test/TestBase.cs
@@ -131,21 +131,16 @@ namespace DotNetOpenAuth.Test {
this.Uri = uri;
}
- private Handler(Handler previous, Func<HttpRequestMessage, Task<HttpResponseMessage>> handler)
- : this(previous.test, previous.Uri) {
- this.MessageHandler = handler;
- }
-
internal Uri Uri { get; private set; }
internal Func<HttpRequestMessage, Task<HttpResponseMessage>> MessageHandler { get; private set; }
internal void By(Func<HttpRequestMessage, CancellationToken, Task<HttpResponseMessage>> handler) {
- this.test.HostFactories.Handlers.Add(new Handler(this, req => handler(req, CancellationToken.None)));
+ this.test.HostFactories.Handlers[this.Uri] = req => handler(req, CancellationToken.None);
}
internal void By(Func<HttpRequestMessage, Task<HttpResponseMessage>> handler) {
- this.test.HostFactories.Handlers.Add(new Handler(this, handler));
+ this.test.HostFactories.Handlers[this.Uri] = handler;
}
internal void By(Func<HttpRequestMessage, HttpResponseMessage> handler) {