@Test public void testBug() throws Exception { Router router = new Router(); Route a = router.append("/{p}", Collections.singletonMap(Names.P, PathParam.matching("[^_]+"))); // This is a *known* bug assertNull(router.route("/_")); // This is expected assertEquals("/_", a.matches(Collections.singletonMap(Names.P, "/")).render()); // This is expected assertNull(router.route("/%5F")); assertNull(a.matches(Collections.singletonMap(Names.P, "_"))); }
@Test public void testAlternativeSepartorEscape() throws Exception { RouterAssert router = new RouterAssert(':'); Route a = router.append("/{p}", Collections.singletonMap(Names.P, PathParam.matching(".+"))); // Route router.assertRoute(Collections.singletonMap(Names.P, "/"), "/:"); router.assertRoute(Collections.singletonMap(Names.P, "_"), "/_"); router.assertRoute(Collections.singletonMap(Names.P, ":"), "/%3A"); // Render assertEquals("/:", a.matches(Collections.singletonMap(Names.P, "/")).render()); assertEquals("/_", a.matches(Collections.singletonMap(Names.P, "_")).render()); assertEquals("/%3A", a.matches(Collections.singletonMap(Names.P, ":")).render()); }
@Test public void testParamPreservePath() throws Exception { RouterAssert router = new RouterAssert(); Route a = router.append("/{p}", Collections.singletonMap(Names.P, PathParam.matching("[^/]+").preservePath(true))); // Route router.assertRoute(Collections.singletonMap(Names.P, "_"), "/_"); assertNull(router.route("//")); // Render assertNull(a.matches(Collections.singletonMap(Names.P, "/"))); }
@Test public void testAlternativeSepartorEscape() throws Exception { RouterAssert router = new RouterAssert(':'); Route a = router.append("/{p}", Collections.singletonMap(Names.P, PathParam.matching(".+"))); // Route router.assertRoute(Collections.singletonMap(Names.P, "/"), "/:"); router.assertRoute(Collections.singletonMap(Names.P, "_"), "/_"); router.assertRoute(Collections.singletonMap(Names.P, ":"), "/%3A"); // Render assertEquals("/:", a.matches(Collections.singletonMap(Names.P, "/")).render()); assertEquals("/_", a.matches(Collections.singletonMap(Names.P, "_")).render()); assertEquals("/%3A", a.matches(Collections.singletonMap(Names.P, ":")).render()); }
@Test public void testParamPreservePath() throws Exception { RouterAssert router = new RouterAssert(); Route a = router.append("/{p}", Collections.singletonMap(Names.P, PathParam.matching("[^/]+").preservePath(true))); // Route router.assertRoute(Collections.singletonMap(Names.P, "_"), "/_"); assertNull(router.route("//")); // Render assertNull(a.matches(Collections.singletonMap(Names.P, "/"))); }
@Test public void testBug() throws Exception { Router router = new Router(); Route a = router.append("/{p}", Collections.singletonMap(Names.P, PathParam.matching("[^_]+"))); // This is a *known* bug assertNull(router.route("/_")); // This is expected assertEquals("/_", a.matches(Collections.singletonMap(Names.P, "/")).render()); // This is expected assertNull(router.route("/%5F")); assertNull(a.matches(Collections.singletonMap(Names.P, "_"))); }
@Test public void testParamDefaultForm() throws Exception { RouterAssert router = new RouterAssert(); Route a = router.append("/{p}", Collections.singletonMap(Names.P, PathParam.matching(".+"))); // Route router.assertRoute(Collections.singletonMap(Names.P, "/"), "/_"); router.assertRoute(Collections.singletonMap(Names.P, "_"), "/%5F"); router.assertRoute(Collections.singletonMap(Names.P, "_/"), "/%5F_"); router.assertRoute(Collections.singletonMap(Names.P, "/_"), "/_%5F"); router.assertRoute(Collections.singletonMap(Names.P, "?"), "/%3F"); // Render assertEquals("/_", a.matches(Collections.singletonMap(Names.P, "/")).render()); assertEquals("/%5F", a.matches(Collections.singletonMap(Names.P, "_")).render()); assertEquals("/%5F_", a.matches(Collections.singletonMap(Names.P, "_/")).render()); assertEquals("/_%5F", a.matches(Collections.singletonMap(Names.P, "/_")).render()); assertEquals("/%3F", a.matches(Collections.singletonMap(Names.P, "?")).render()); }
@Test public void testD() throws Exception { RouterAssert router = new RouterAssert(); Route a = router.append("/{p}", RouteKind.MATCH_ANY, Collections.singletonMap(Names.P, PathParam.matching("/[a-z]+/[a-z]+/?"))); // Route router.assertRoute(Collections.singletonMap(Names.P, "/platform/administrator"), "/_platform_administrator"); router.assertRoute(Collections.singletonMap(Names.P, "/platform/administrator"), "/_platform_administrator/"); router.assertRoute(Collections.singletonMap(Names.P, "/platform/administrator/"), "/_platform_administrator_"); router.assertRoute(Collections.singletonMap(Names.P, "/platform/administrator/"), "/_platform_administrator_/"); // Render assertEquals("/_platform_administrator", a.matches(Collections.singletonMap(Names.P, "/platform/administrator")).render()); assertEquals("/_platform_administrator_", a.matches(Collections.singletonMap(Names.P, "/platform/administrator/")).render()); assertNull(a.matches(Collections.singletonMap(Names.P, "/platform/administrator//"))); }
@Test public void testParamDefaultForm() throws Exception { RouterAssert router = new RouterAssert(); Route a = router.append("/{p}", Collections.singletonMap(Names.P, PathParam.matching(".+"))); // Route router.assertRoute(Collections.singletonMap(Names.P, "/"), "/_"); router.assertRoute(Collections.singletonMap(Names.P, "_"), "/%5F"); router.assertRoute(Collections.singletonMap(Names.P, "_/"), "/%5F_"); router.assertRoute(Collections.singletonMap(Names.P, "/_"), "/_%5F"); router.assertRoute(Collections.singletonMap(Names.P, "?"), "/%3F"); // Render assertEquals("/_", a.matches(Collections.singletonMap(Names.P, "/")).render()); assertEquals("/%5F", a.matches(Collections.singletonMap(Names.P, "_")).render()); assertEquals("/%5F_", a.matches(Collections.singletonMap(Names.P, "_/")).render()); assertEquals("/_%5F", a.matches(Collections.singletonMap(Names.P, "/_")).render()); assertEquals("/%3F", a.matches(Collections.singletonMap(Names.P, "?")).render()); }
@Test public void testD() throws Exception { RouterAssert router = new RouterAssert(); Route a = router.append("/{p}", RouteKind.MATCH_ANY, Collections.singletonMap(Names.P, PathParam.matching("/[a-z]+/[a-z]+/?"))); // Route router.assertRoute(Collections.singletonMap(Names.P, "/platform/administrator"), "/_platform_administrator"); router.assertRoute(Collections.singletonMap(Names.P, "/platform/administrator"), "/_platform_administrator/"); router.assertRoute(Collections.singletonMap(Names.P, "/platform/administrator/"), "/_platform_administrator_"); router.assertRoute(Collections.singletonMap(Names.P, "/platform/administrator/"), "/_platform_administrator_/"); // Render assertEquals("/_platform_administrator", a.matches(Collections.singletonMap(Names.P, "/platform/administrator")).render()); assertEquals("/_platform_administrator_", a.matches(Collections.singletonMap(Names.P, "/platform/administrator/")).render()); assertNull(a.matches(Collections.singletonMap(Names.P, "/platform/administrator//"))); }
@Test public void testWildcardPathParamWithPreservePath() throws Exception { RouterAssert router = new RouterAssert(); Route a= router.append("/{p}", Collections.singletonMap(Names.P, PathParam.matching(".*").preservePath(true))); // Render assertEquals("/", a.matches(Collections.singletonMap(Names.P, "")).render()); assertEquals("//", a.matches(Collections.singletonMap(Names.P, "/")).render()); assertEquals("/a", a.matches(Collections.singletonMap(Names.P, "a")).render()); assertEquals("/a/b", a.matches(Collections.singletonMap(Names.P, "a/b")).render()); // Route router.assertRoute(Collections.singletonMap(Names.P, ""), "/"); router.assertRoute(Collections.singletonMap(Names.P, "/"), "//"); router.assertRoute(Collections.singletonMap(Names.P, "a"), "/a"); router.assertRoute(Collections.singletonMap(Names.P, "a/b"), "/a/b"); }
@Test public void testWildcardPathParamWithPreservePath() throws Exception { RouterAssert router = new RouterAssert(); Route a= router.append("/{p}", Collections.singletonMap(Names.P, PathParam.matching(".*").preservePath(true))); // Render assertEquals("/", a.matches(Collections.singletonMap(Names.P, "")).render()); assertEquals("//", a.matches(Collections.singletonMap(Names.P, "/")).render()); assertEquals("/a", a.matches(Collections.singletonMap(Names.P, "a")).render()); assertEquals("/a/b", a.matches(Collections.singletonMap(Names.P, "a/b")).render()); // Route router.assertRoute(Collections.singletonMap(Names.P, ""), "/"); router.assertRoute(Collections.singletonMap(Names.P, "/"), "//"); router.assertRoute(Collections.singletonMap(Names.P, "a"), "/a"); router.assertRoute(Collections.singletonMap(Names.P, "a/b"), "/a/b"); }
@Test public void testWildcardParamPathWithDefaultForm() throws Exception { Router router = new Router(); Route a= router.append("/{p}", Collections.singletonMap(Names.P, PathParam.matching(".*"))); // assertEquals("/_", a.matches(Collections.singletonMap(Names.P, "/")).render()); }
@Test public void testWildcardParamPathWithDefaultForm() throws Exception { Router router = new Router(); Route a= router.append("/{p}", Collections.singletonMap(Names.P, PathParam.matching(".*"))); // assertEquals("/_", a.matches(Collections.singletonMap(Names.P, "/")).render()); }