package org.jboss.resteasy.test.util; import org.jboss.resteasy.specimpl.ResteasyUriBuilder; import org.junit.Test; import javax.ws.rs.core.UriBuilder; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertSame; /** * @tpSubChapter Util tests * @tpChapter Unit tests * @tpTestCaseDetails Test for ResteasyUriBuilder class. * @tpSince RESTEasy 3.0.16 */ public class ResteasyUriBuilderTest { private static final String URI_ERROR = "Uri function of ResteasyUriBuilder should return builder itself."; private static final String URI_FRAGMENT_ERROR = "ResteasyUriBuilder object encodes valid characters in the fragment uri"; /** * @tpTestDetails Uri method of ResteasyUriBuilder object should return same object. * @tpSince RESTEasy 3.0.16 */ @Test public void testParseHierarchicalUri() { ResteasyUriBuilder builder = new ResteasyUriBuilder(); assertSame(URI_ERROR, builder, builder.uri("foo/bar:id")); builder = new ResteasyUriBuilder(); assertSame(URI_ERROR, builder, builder.uri("/bar:id")); builder = new ResteasyUriBuilder(); assertSame(URI_ERROR, builder, builder.uri("foo:bar/bar:id")); builder = new ResteasyUriBuilder(); assertSame(URI_ERROR, builder, builder.uri("foo:/bar")); builder = new ResteasyUriBuilder(); assertSame(URI_ERROR, builder, builder.uri("foo:bar")); } /** * @tpTestDetails ResteasyUriBuilder object should not encode valid characters in the fragment uri * @tpTestDetails RESTEASY-1261 * @tpSince RESTEasy 3.0.16 */ @Test public void testUriWithFragment() { UriBuilder builder = ResteasyUriBuilder.fromTemplate("http://domain.com/path#fragment=with/allowed/special-chars"); assertEquals(URI_FRAGMENT_ERROR, "http://domain.com/path#fragment=with/allowed/special-chars", builder.build().toString()); builder = ResteasyUriBuilder.fromTemplate("http://domain.com/path#fragment%with[forbidden}special<chars"); assertEquals(URI_FRAGMENT_ERROR, "http://domain.com/path#fragment%25with%5Bforbidden%7Dspecial%3Cchars", builder.build().toString()); } }