public void escaping()

in javatests/com/google/gitiles/GitilesViewTest.java [755:802]


  public void escaping() throws Exception {
    ObjectId id = ObjectId.fromString("abcd1234abcd1234abcd1234abcd1234abcd1234");
    ObjectId parent = ObjectId.fromString("efab5678efab5678efab5678efab5678efab5678");
    // Some of these values are not valid for Git, but check them anyway.
    GitilesView view =
        GitilesView.log()
            .copyFrom(HOST)
            .setRepositoryName("foo?bar")
            .setRevision(Revision.unpeeled("ba/d#name", id))
            .setOldRevision(Revision.unpeeled("other\"na/me", parent))
            .setPathPart("we ird/pa'th/name")
            .putParam("k e y", "val/ue")
            .setAnchor("anc#hor")
            .build();

    // Fields returned by getters are not escaped.
    assertThat(view.getServletPath()).isEqualTo("/b");
    assertThat(view.getType()).isEqualTo(Type.LOG);
    assertThat(view.getHostName()).isEqualTo("host");
    assertThat(view.getRepositoryName()).isEqualTo("foo?bar");
    assertThat(view.getRevision().getId()).isEqualTo(id);
    assertThat(view.getRevision().getName()).isEqualTo("ba/d#name");
    assertThat(view.getOldRevision().getId()).isEqualTo(parent);
    assertThat(view.getOldRevision().getName()).isEqualTo("other\"na/me");
    assertThat(view.getPathPart()).isEqualTo("we ird/pa'th/name");
    assertThat(view.getParameters())
        .isEqualTo(ImmutableListMultimap.<String, String>of("k e y", "val/ue"));

    String qs = "?k+e+y=val%2Fue";
    assertThat(view.toUrl())
        .isEqualTo(
            "/b/foo%3Fbar/+log/other%22na/me..ba/d%23name/we%20ird/pa%27th/name"
                + qs
                + "#anc%23hor");
    assertThat(view.getBreadcrumbs())
        .containsExactly(
            // Names are not escaped (auto-escaped by Soy) but values are.
            breadcrumb("host", "/b/?format=HTML"),
            breadcrumb("foo?bar", "/b/foo%3Fbar/"),
            breadcrumb(
                "other\"na/me..ba/d#name", "/b/foo%3Fbar/+log/other%22na/me..ba/d%23name" + qs),
            breadcrumb("we ird", "/b/foo%3Fbar/+log/other%22na/me..ba/d%23name/we%20ird" + qs),
            breadcrumb(
                "pa'th", "/b/foo%3Fbar/+log/other%22na/me..ba/d%23name/we%20ird/pa%27th" + qs),
            breadcrumb(
                "name", "/b/foo%3Fbar/+log/other%22na/me..ba/d%23name/we%20ird/pa%27th/name" + qs))
        .inOrder();
  }