public RegexWebRequestRoute(string routeRegex, string httpMethod, IWebCommand command) { Contract.Requires(routeRegex != null); Contract.Requires(command != null); this.routeRegex = new Regex(routeRegex, RegexOptions.Compiled | RegexOptions.IgnoreCase); this.httpMethod = httpMethod; this.command = command; }
public void RoutesMustBeUrlDecoded() { IWebCommand command = MockRepository.GenerateMock <IWebCommand>(); command.Expect(x => x.Execute(null, null)).IgnoreArguments() .Do(new Func <IWebContext, WebRequestRouteMatch, IWebCommandResult>( (c, r) => { Assert.AreEqual("côte-d'ivoire", r["PlaceId"]); return(new HttpStatusResult(HttpStatusCode.Accepted)); })); SetupRoutingTest("^place/(?<PlaceId>.+)$", "/place/côte-d'ivoire", "GET", true, command); }
private void SetupRoutingTest(string routePattern, string rawUrl, string method, bool expectMatch, IWebCommand overrideCommand = null) { route = new RegexWebRequestRoute(routePattern, "GET", overrideCommand ?? webCommand); Uri url = new Uri("http://azuritemaps.com" + rawUrl); webContext.Stub(x => x.Url).Return(url); webContext.Stub(x => x.RawUrl).Return(rawUrl); webContext.Stub(x => x.HttpMethod).Return(method); if (expectMatch && overrideCommand == null) { webCommand.Stub(x => x.Execute(null, null)) .IgnoreArguments() .Return(new HttpStatusResult(HttpStatusCode.Accepted)); } IWebCommandResult expectedCommandResult; Assert.AreEqual(expectMatch, route.ProcessIfMatch(webContext, out expectedCommandResult)); if (expectMatch) { Assert.IsInstanceOf <HttpStatusResult>(expectedCommandResult); Assert.AreEqual((int)HttpStatusCode.Accepted, ((HttpStatusResult)expectedCommandResult).StatusCode); } }
public static void AddCommand(IWebCommand command) { }