@Test public void testPreservePath() throws Exception { RouterAssert router = new RouterAssert(); router.append("/{a}", Collections.singletonMap(Names.A, PathParam.matching(".*").preservePath(true))); router.assertRoute(Collections.singletonMap(Names.A, "a"), "/a"); router.assertRoute(Collections.singletonMap(Names.A, "//"), "///"); router.assertRoute(Collections.singletonMap(Names.A, "a/"), "/a/"); } }
@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 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 testZeroOrOneFollowedBySubRoute() throws Exception { RouterAssert router = new RouterAssert(); Route a = router.append("/{a}", Collections.singletonMap(Names.A, PathParam.matching("a?").preservePath(true))); Route b = a.append("/b"); // Map<String, String> expectedParameters = new HashMap<String, String>(); expectedParameters.put(Names.A, "a"); router.assertRoute(expectedParameters, "/a/b"); RouteMatch resolve = b.matches(expectedParameters); assertNotNull(resolve); assertEquals("/a/b", resolve.render()); // router.assertRoute(b, "/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 testOptionalParameter() throws Exception { RouterAssert router = new RouterAssert(); Route a = router.append("/{a}/b", Collections.singletonMap(Names.A, PathParam.matching("a?").preservePath(true))); // Map<String, String> expectedParameters = new HashMap<String, String>(); expectedParameters.put(Names.A, "a"); router.assertRoute(a, Collections.singletonMap(Names.A, "a"), "/a/b"); assertEquals("/a/b", a.matches(expectedParameters).render()); // expectedParameters.put(Names.A, ""); router.assertRoute(expectedParameters, "/b"); assertEquals("/b", a.matches(expectedParameters).render()); }
@Test public void testOptionalParameter() throws Exception { RouterAssert router = new RouterAssert(); Route a = router.append("/{a}/b", Collections.singletonMap(Names.A, PathParam.matching("a?").preservePath(true))); // Map<String, String> expectedParameters = new HashMap<String, String>(); expectedParameters.put(Names.A, "a"); router.assertRoute(a, Collections.singletonMap(Names.A, "a"), "/a/b"); assertEquals("/a/b", a.matches(expectedParameters).render()); // expectedParameters.put(Names.A, ""); router.assertRoute(expectedParameters, "/b"); assertEquals("/b", a.matches(expectedParameters).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 testPreservePath() throws Exception { RouterAssert router = new RouterAssert(); router.append("/{a}", Collections.singletonMap(Names.A, PathParam.matching(".*").preservePath(true))); router.assertRoute(Collections.singletonMap(Names.A, "a"), "/a"); router.assertRoute(Collections.singletonMap(Names.A, "//"), "///"); router.assertRoute(Collections.singletonMap(Names.A, "a/"), "/a/"); } }
@Test public void testLang() throws Exception { Router router = new Router(); Route r = router.append("/{a}b", Collections.singletonMap(Names.A, PathParam.matching("(([A-Za-z]{2})/)?").preservePath(true))); // assertEquals("/fr/b", r.matches(Collections.singletonMap(Names.A, "fr/")).render()); assertEquals("/b", r.matches(Collections.singletonMap(Names.A, "")).render()); }
@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 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"); }
@Override public void setUp() throws Exception { this.router = new RouterAssert(); Map<String, PathParam.Builder> params = Collections.singletonMap(Names.GTN_PATH, PathParam.matching(".*").preservePath(true)); portal = router.append("/private/{gtn:sitetype}/{gtn:sitename}{gtn:path}", params); group = router.append("/groups/{gtn:sitetype}/{gtn:sitename}{gtn:path}", params); user = router.append("/users/{gtn:sitetype}/{gtn:sitename}{gtn:path}", params); }
@Test public void testPartialMatching() throws Exception { RouterAssert router = new RouterAssert(); router.append("/{a}", Collections.singletonMap(Names.A, PathParam.matching("abc").preservePath(true))); // assertNull(router.route("/abcdef")); }
@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 testLang() throws Exception { Router router = new Router(); Route r = router.append("/{a}b", Collections.singletonMap(Names.A, PathParam.matching("(([A-Za-z]{2})/)?").preservePath(true))); // assertEquals("/fr/b", r.matches(Collections.singletonMap(Names.A, "fr/")).render()); assertEquals("/b", r.matches(Collections.singletonMap(Names.A, "")).render()); }
@Test public void testPartialMatching() throws Exception { RouterAssert router = new RouterAssert(); router.append("/{a}", Collections.singletonMap(Names.A, PathParam.matching("abc").preservePath(true))); // assertNull(router.route("/abcdef")); }
@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"); }
@Override public void setUp() throws Exception { this.router = new RouterAssert(); Map<String, PathParam.Builder> params = Collections.singletonMap(Names.GTN_PATH, PathParam.matching(".*").preservePath(true)); portal = router.append("/private/{gtn:sitetype}/{gtn:sitename}{gtn:path}", params); group = router.append("/groups/{gtn:sitetype}/{gtn:sitename}{gtn:path}", params); user = router.append("/users/{gtn:sitetype}/{gtn:sitename}{gtn:path}", params); }
@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()); }