public void MultiPartRouteResolvesWithDifferentSlashes() { var router = new Router(); var handler = new object(); router.AddRoute("GET", "foo/bar", MakeNoArgumentHandler(handler)); Assert.Equal(handler, router.ResolveRoute("GET", "/foo/bar", _request.RouteTokens).HandleRequest(_request, _binders)); Assert.Equal(handler, router.ResolveRoute("GET", "/foo/bar/", _request.RouteTokens).HandleRequest(_request, _binders)); Assert.Equal(handler, router.ResolveRoute("GET", "foo/bar", _request.RouteTokens).HandleRequest(_request, _binders)); Assert.Equal(handler, router.ResolveRoute("GET", "foo/bar/", _request.RouteTokens).HandleRequest(_request, _binders)); }
public void RootRouteResolves() { var router = new Router(); var handler = new object(); router.AddRoute("GET", "", MakeNoArgumentHandler(handler)); Assert.Equal(handler, router.ResolveRoute("GET", "/", _request.RouteTokens).HandleRequest(_request, _binders)); }
public void MissingRouteIsNull() { var router = new Router(); var handler = new object(); router.AddRoute("GET", "foo", MakeNoArgumentHandler(handler)); Assert.Null(router.ResolveRoute("GET", "foo/bar", _request.RouteTokens)); }
public void MultipleMultiPartRoutes() { var router = new Router(); var handler1 = new object(); var handler2 = new object(); var handler3 = new object(); var handler4 = new object(); var handler5 = new object(); router.AddRoute("GET", "", MakeNoArgumentHandler(handler1)); router.AddRoute("GET", "foo", MakeNoArgumentHandler(handler2)); router.AddRoute("GET", "foo/bar", MakeNoArgumentHandler(handler3)); router.AddRoute("GET", "bar", MakeNoArgumentHandler(handler4)); router.AddRoute("GET", "bar/foo", MakeNoArgumentHandler(handler5)); Assert.Equal(handler1, router.ResolveRoute("GET", "/", _request.RouteTokens).HandleRequest(_request, _binders)); Assert.Equal(handler2, router.ResolveRoute("GET", "/foo", _request.RouteTokens).HandleRequest(_request, _binders)); Assert.Equal(handler3, router.ResolveRoute("GET", "/foo/bar", _request.RouteTokens).HandleRequest(_request, _binders)); Assert.Equal(handler4, router.ResolveRoute("GET", "bar/", _request.RouteTokens).HandleRequest(_request, _binders)); Assert.Equal(handler5, router.ResolveRoute("GET", "bar/foo/", _request.RouteTokens).HandleRequest(_request, _binders)); }
public void TokenizedRoutesSetValuesInRouteTokens() { var router = new Router(); var handler = new object(); var handler2 = new object(); router.AddRoute("GET", "foo/{nah}", MakeNoArgumentHandler(handler)); router.AddRoute("GET", "foo/{yep}/bar", MakeNoArgumentHandler(handler2)); //since these tests should write to the dictionary use a local instead of being lazy var routeTokens = new Dictionary<string, string>(); Assert.Equal(handler, router.ResolveRoute("GET", "foo/bar", routeTokens).HandleRequest(_request, _binders)); Assert.Equal(routeTokens.Count, 1); Assert.Equal(routeTokens["nah"], "bar"); Assert.Equal(handler2, router.ResolveRoute("GET", "foo/buzz/bar", routeTokens).HandleRequest(_request, _binders)); Assert.Equal(routeTokens["yep"], "buzz"); }