public void assertRoute(Route expectedRoute, Map<String, String> expectedParameters, String path) { Map<String, String> parameters = assertRoute(expectedRoute, path, Collections.<String, String>emptyMap()); Assert.assertEquals(expectedParameters, parameters); }
@Test public void testEmpty2() throws Exception { RouterAssert router = new RouterAssert(); router.append("/foo").append("/").append("/bar"); // router.assertRoute(Collections.<String, String>emptyMap(), "/foo"); router.assertRoute(Collections.<String, String>emptyMap(), "foo"); router.assertRoute(Collections.<String, String>emptyMap(), "foo/bar"); router.assertRoute(Collections.<String, String>emptyMap(), "/foo/bar"); }
@Test public void testLanguage1() throws Exception { RouterAssert router = new RouterAssert(); router.append("/public/{gtn:lang}", Collections.singletonMap(Names.GTN_LANG, PathParam.matching(LANG_PATTERN).preservePath(true))); // router.assertRoute(Collections.singletonMap(Names.GTN_LANG, ""), "/public"); router.assertRoute(Collections.singletonMap(Names.GTN_LANG, "fr"), "/public/fr"); router.assertRoute(Collections.singletonMap(Names.GTN_LANG, "fr-FR"), "/public/fr-FR"); }
@Test public void testDisjunction() throws Exception { RouterAssert router = new RouterAssert(); router.append("/{a}{b}", Collections.singletonMap(Names.A, PathParam.matching("a|b"))); // Map<String, String> expectedParameters = new HashMap<String, String>(); expectedParameters.put(Names.A, "a"); expectedParameters.put(Names.B, "c"); // router.assertRoute(expectedParameters, "/ac"); expectedParameters.put(Names.A, "b"); router.assertRoute(expectedParameters, "/bc"); }
@Test public void testTwoRules2() throws Exception { RouterAssert router = new RouterAssert(); Route a = router.append("/{a}"); Route b = router.append("/{a}/b"); // router.assertRoute(a, Collections.singletonMap(Names.A, "a"), "/a"); router.assertRoute(b, Collections.singletonMap(Names.A, "a"), "/a/b"); }
@Test public void testPrecedence() throws Exception { RouterAssert router = new RouterAssert(); router.append("/a"); router.append("/{p}/b", Collections.singletonMap(Names.P, PathParam.matching("a"))); // router.assertRoute(Collections.<String, String>emptyMap(), "a"); router.assertRoute(Collections.<String, String>emptyMap(), "/a"); assertNull(router.route("/a/")); router.assertRoute(Collections.singletonMap(Names.P, "a"), "/a/b"); }
@Test public void testComponent() throws Exception { Map<String, String> expectedParameters = new HashMap<String, String>(); expectedParameters.put(Names.GTN_SITENAME, "classic"); expectedParameters.put(Names.GTN_SITETYPE, "portal"); expectedParameters.put(Names.GTN_PATH, "/"); // router.assertRoute(portal, expectedParameters, "/private/portal/classic/"); assertEquals("/private/portal/classic/", portal.matches(expectedParameters).render()); }
@Test public void testPrivateClassicSlash() throws Exception { Map<String, String> expectedParameters = new HashMap<String, String>(); expectedParameters.put(Names.GTN_SITENAME, "classic"); expectedParameters.put(Names.GTN_SITETYPE, "portal"); expectedParameters.put(Names.GTN_PATH, "/"); // router.assertRoute(portal, expectedParameters, "/private/portal/classic/"); assertEquals("/private/portal/classic/", portal.matches(expectedParameters).render()); }
@Test public void testLang() throws Exception { RouterAssert router = new RouterAssert(); router.append("/{a}b", Collections.singletonMap(Names.A, PathParam.matching("(([A-Za-z]{2})/)?").preservePath(true))); // router.assertRoute(Collections.singletonMap(Names.A, "fr/"), "/fr/b"); router.assertRoute(Collections.singletonMap(Names.A, ""), "/b"); }
@Test public void testTwoRules1() throws Exception { RouterAssert router = new RouterAssert(); Route a = router.append("/a"); Route b = router.append("/a/b"); // router.assertRoute(a, "/a"); router.assertRoute(b, "/a/b"); }
@Test public void testParameter() throws Exception { RouterAssert router = new RouterAssert(); router.append("/{p}"); // router.assertRoute(Collections.singletonMap(Names.P, "a"), "/a"); }
@Test public void testSimplePattern() throws Exception { RouterAssert router = new RouterAssert(); router.append("/{p}", Collections.singletonMap(Names.P, PathParam.matching("a"))); // router.assertRoute(Collections.singletonMap(Names.P, "a"), "/a"); router.assertRoute(Collections.singletonMap(Names.P, "a"), "a"); assertNull(router.route("/ab")); assertNull(router.route("ab")); }
@Test public void testRoot3() throws Exception { RouterAssert router = new RouterAssert(); router.append("/", RouteKind.MATCH_ANY); // router.assertRoute(Collections.<String, String>emptyMap(), ""); router.assertRoute(Collections.<String, String>emptyMap(), "/"); assertNull(router.route("/a")); assertNull(router.route("a")); }
@Test public void testRoot1() throws Exception { RouterAssert router = new RouterAssert(); Route foo = router.append("/"); assertNotSame(foo, router); // router.assertRoute(Collections.<String, String>emptyMap(), ""); router.assertRoute(Collections.<String, String>emptyMap(), "/"); assertNull(router.route("/a")); assertNull(router.route("a")); }
@Test public void testCaptureGroup() throws Exception { RouterAssert router = new RouterAssert(); router.append("/{a}", Collections.singletonMap(Names.A, PathParam.matching("a(.)c").captureGroup(true))); // router.assertRoute(Collections.singletonMap(Names.A, "b"), "/abc"); }
@Test public void testAvoidMatchingPrefix() throws Exception { RouterAssert router = new RouterAssert(); Route a = router.append("/{a}/ab/c", Collections.singletonMap(Names.A, PathParam.matching("a?").preservePath(true))); // Map<String, String> expectedParameters = new HashMap<String, String>(); expectedParameters.put(Names.A, ""); router.assertRoute(a, expectedParameters, "/ab/c"); assertEquals("/ab/c", a.matches(expectedParameters).render()); }
@Test public void testParameterPropagationToDescendants() throws Exception { RouterAssert router = new RouterAssert(); Route a = router.append("/a").append("/b"); // router.assertRoute(a, "/a/b"); }
@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 testFoo() throws Exception { RouterAssert router = new RouterAssert(); Route a = router.append("/a", RouteKind.CONNECT); Route b= a.append("/b"); // // assertEquals(Collections.singletonMap(QualifiedName.create("foo"), "bar"), router.route("/a")); assertNull(router.route("/a")); // router.assertRoute(b, "/a/b"); } }
@Test public void testExactMatchingAfterWildcard() throws Exception { RouterAssert router = new RouterAssert(); Route a = router.append("/{foo}"); Route b = router.append("/foo"); router.assertRoute(a, "/foo"); assertEquals("/foo", a.matches(Collections.singletonMap(Names.FOO, "foo")).render()); assertEquals("/b", a.matches(Collections.singletonMap(Names.FOO, "b")).render()); assertEquals("/foo", b.matches(Collections.singletonMap(Names.FOO, "foo")).render()); assertEquals("/foo", b.matches(Collections.singletonMap(Names.FOO, "b")).render()); }