package org.exist.xmldb; import java.net.URI; import java.net.URISyntaxException; import org.exist.test.TestConstants; import org.junit.Test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; public class XmldbURITest { @Test public void xmldbURIConstructors() throws URISyntaxException { XmldbURI.xmldbUriFor("."); XmldbURI.xmldbUriFor(".."); XmldbURI.xmldbUriFor("/db"); XmldbURI.xmldbUriFor("xmldb:exist:///db"); XmldbURI.xmldbUriFor("xmldb:exist://localhost/db"); XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/db"); XmldbURI.xmldbUriFor("//localhost:8080/db"); XmldbURI.xmldbUriFor("./db"); XmldbURI.xmldbUriFor("../db"); XmldbURI.xmldbUriFor("/db/test"); XmldbURI.xmldbUriFor("xmldb:exist:///db/test"); XmldbURI.xmldbUriFor("xmldb:exist://localhost/db/test"); XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/db/test"); XmldbURI.xmldbUriFor("//localhost:8080/db/test"); XmldbURI.xmldbUriFor("./"); XmldbURI.xmldbUriFor("../"); XmldbURI.xmldbUriFor("/db/"); XmldbURI.xmldbUriFor("xmldb:exist:///db/"); XmldbURI.xmldbUriFor("xmldb:exist://localhost/db/"); XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/db/"); XmldbURI.xmldbUriFor("//localhost:8080/db/"); //XXX: this MUST work or no MS OS support at all //XmldbURI.xmldbUriFor("D:\\workspace\\"); XmldbURI.xmldbUriFor("xmldb:///db/"); XmldbURI.xmldbUriFor("xmldb:///db/test"); XmldbURI.xmldbUriFor("xmldb:/db/"); XmldbURI.xmldbUriFor("xmldb:/db/test"); } @Test public void failingXmldbURIConstructors() { try{ XmldbURI.xmldbUriFor("exist:///db"); fail("Invalid constructor threw no exception!"); } catch (URISyntaxException e) { } try{ XmldbURI.xmldbUriFor("exist://localhost/db"); fail("Invalid constructor threw no exception!"); } catch (URISyntaxException e) { } try{ XmldbURI.xmldbUriFor("exist://localhost:8080/db"); fail("Invalid constructor threw no exception!"); } catch (URISyntaxException e) { } try{ XmldbURI.xmldbUriFor("["); fail("Invalid constructor threw no exception!"); } catch (URISyntaxException e) { } } @Test public void xmldbURIConstructor1() throws URISyntaxException { XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist:///db"); assertEquals("exist", xmldbURI.getInstanceName()); assertNull(xmldbURI.getHost()); assertEquals(-1, xmldbURI.getPort()); assertNull(xmldbURI.getContext()); assertEquals("/db", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_LOCAL, xmldbURI.getApiName()); xmldbURI = XmldbURI.create("xmldb:exist:///db"); assertEquals("exist", xmldbURI.getInstanceName()); assertNull(xmldbURI.getHost()); assertEquals(-1, xmldbURI.getPort()); assertNull(xmldbURI.getContext()); assertEquals("/db", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_LOCAL, xmldbURI.getApiName()); } @Test public void xmldbURIConstructor2() throws URISyntaxException { XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/exist/xmlrpc"); assertEquals("exist", xmldbURI.getInstanceName()); assertEquals("localhost", xmldbURI.getHost()); assertEquals("8080", "" + xmldbURI.getPort()); assertEquals("/exist/xmlrpc", xmldbURI.getContext()); assertEquals("", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_XMLRPC, xmldbURI.getApiName()); xmldbURI = XmldbURI.create("xmldb:exist://localhost:8080/exist/xmlrpc"); assertEquals("exist", xmldbURI.getInstanceName()); assertEquals("localhost", xmldbURI.getHost()); assertEquals("8080", "" + xmldbURI.getPort()); assertEquals("/exist/xmlrpc", xmldbURI.getContext()); assertEquals("", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_XMLRPC, xmldbURI.getApiName()); } @Test public void xmldbURIConstructor3() throws URISyntaxException { XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/xmlrpc"); assertEquals("exist", xmldbURI.getInstanceName()); assertEquals("localhost", xmldbURI.getHost()); assertEquals("8080", "" + xmldbURI.getPort()); assertEquals("/xmlrpc", xmldbURI.getContext()); assertEquals("", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_XMLRPC, xmldbURI.getApiName()); xmldbURI = XmldbURI.create("xmldb:exist://localhost:8080/xmlrpc"); assertEquals("exist", xmldbURI.getInstanceName()); assertEquals("localhost", xmldbURI.getHost()); assertEquals("8080", "" + xmldbURI.getPort()); assertEquals("/xmlrpc", xmldbURI.getContext()); assertEquals("", xmldbURI.getCollectionPath()); assertEquals("xmlrpc", xmldbURI.getApiName()); } @Test public void xmldbURIConstructor4() throws URISyntaxException { XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/webdav"); assertEquals("exist", xmldbURI.getInstanceName()); assertEquals("localhost", xmldbURI.getHost()); assertEquals("8080", "" + xmldbURI.getPort()); assertEquals("/webdav", xmldbURI.getContext()); assertEquals("", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_WEBDAV, xmldbURI.getApiName()); xmldbURI = XmldbURI.create("xmldb:exist://localhost:8080/webdav"); assertEquals("exist", xmldbURI.getInstanceName()); assertEquals("localhost", xmldbURI.getHost()); assertEquals("8080", "" + xmldbURI.getPort()); assertEquals("/webdav", xmldbURI.getContext()); assertEquals("", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_WEBDAV, xmldbURI.getApiName()); } @Test public void xmldbURIConstructor5() throws URISyntaxException { XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist:///db/"); assertEquals("/db", xmldbURI.getCollectionPath()); //assertEquals("xmldb:exist:///db", xmldbURI.toString()); xmldbURI = XmldbURI.create("xmldb:exist:///db/"); assertEquals("/db", xmldbURI.getCollectionPath()); //assertEquals("xmldb:exist:///db", xmldbURI.toString()); } @Test public void xmldbURIConstructor6() throws URISyntaxException { XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist2://localhost:8080/webdav/db"); assertEquals("exist2", xmldbURI.getInstanceName()); xmldbURI = XmldbURI.create("xmldb:exist2://localhost:8080/webdav/db"); assertEquals("exist2", xmldbURI.getInstanceName()); } @Test public void xmldbURIConstructor7() throws URISyntaxException { XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/xmlrpc/db"); assertEquals("exist", xmldbURI.getInstanceName()); assertEquals("localhost", xmldbURI.getHost()); assertEquals("8080", "" + xmldbURI.getPort()); assertEquals("/xmlrpc", xmldbURI.getContext()); assertEquals("/db", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_XMLRPC, xmldbURI.getApiName()); xmldbURI = XmldbURI.create("xmldb:exist://localhost:8080/xmlrpc/db"); assertEquals("exist", xmldbURI.getInstanceName()); assertEquals("localhost", xmldbURI.getHost()); assertEquals("8080", "" + xmldbURI.getPort()); assertEquals("/xmlrpc", xmldbURI.getContext()); assertEquals("/db", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_XMLRPC, xmldbURI.getApiName()); } @Test public void xmldbURIConstructor8() throws URISyntaxException { XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/webdav/db"); assertEquals("exist", xmldbURI.getInstanceName()); assertEquals("localhost", xmldbURI.getHost()); assertEquals("8080", "" + xmldbURI.getPort()); assertEquals("/webdav", xmldbURI.getContext()); assertEquals("/db", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_WEBDAV, xmldbURI.getApiName()); xmldbURI = XmldbURI.create("xmldb:exist://localhost:8080/webdav/db"); assertEquals("exist", xmldbURI.getInstanceName()); assertEquals("localhost", xmldbURI.getHost()); assertEquals("8080", "" + xmldbURI.getPort()); assertEquals("/webdav", xmldbURI.getContext()); assertEquals("/db", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_WEBDAV, xmldbURI.getApiName()); } @Test public void xmldbURIConstructor9() throws URISyntaxException { XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/xmlrpc/webdav/db"); assertEquals("exist", xmldbURI.getInstanceName()); assertEquals("localhost", xmldbURI.getHost()); assertEquals("8080", "" + xmldbURI.getPort()); assertEquals("/xmlrpc/webdav", xmldbURI.getContext()); assertEquals("/db", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_WEBDAV, xmldbURI.getApiName()); xmldbURI = XmldbURI.create("xmldb:exist://localhost:8080/xmlrpc/webdav/db"); assertEquals("exist", xmldbURI.getInstanceName()); assertEquals("localhost", xmldbURI.getHost()); assertEquals("8080", "" + xmldbURI.getPort()); assertEquals("/xmlrpc/webdav", xmldbURI.getContext()); assertEquals("/db", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_WEBDAV, xmldbURI.getApiName()); } @Test public void xmldbURIConstructor10() throws URISyntaxException { XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/webdav/xmlrpc/db"); assertEquals("exist", xmldbURI.getInstanceName()); assertEquals("localhost", xmldbURI.getHost()); assertEquals("8080", "" + xmldbURI.getPort()); assertEquals("/webdav/xmlrpc", xmldbURI.getContext()); assertEquals("/db", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_XMLRPC, xmldbURI.getApiName()); xmldbURI = XmldbURI.create("xmldb:exist://localhost:8080/webdav/xmlrpc/db"); assertEquals("exist", xmldbURI.getInstanceName()); assertEquals("localhost", xmldbURI.getHost()); assertEquals("8080", "" + xmldbURI.getPort()); assertEquals("/webdav/xmlrpc", xmldbURI.getContext()); assertEquals("/db", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_XMLRPC, xmldbURI.getApiName()); } @Test public void xmldbURIConstructor11() throws URISyntaxException { XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost/db"); assertEquals("exist", xmldbURI.getInstanceName()); assertEquals("localhost", xmldbURI.getHost()); assertEquals(-1, xmldbURI.getPort()); assertNull(xmldbURI.getContext()); assertEquals("/db", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_REST, xmldbURI.getApiName()); } @Test public void xmldbURIConstructor12() throws URISyntaxException { XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist:///db/aa/bb/ccc"); assertEquals("exist", xmldbURI.getInstanceName()); assertNull(xmldbURI.getHost()); assertEquals(-1, xmldbURI.getPort()); assertNull(xmldbURI.getContext()); assertEquals("/db/aa/bb/ccc", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_LOCAL, xmldbURI.getApiName()); xmldbURI = XmldbURI.create("xmldb:exist:///db/aa/bb/ccc"); assertEquals("exist", xmldbURI.getInstanceName()); assertEquals(-1, xmldbURI.getPort()); assertNull(xmldbURI.getContext()); assertEquals("/db/aa/bb/ccc", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_LOCAL, xmldbURI.getApiName()); } /* * These are no longer faulty */ @Test public void xmldbURIConstructor13() throws URISyntaxException { XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist:///db?param=value"); assertEquals("exist", xmldbURI.getInstanceName()); assertNull(xmldbURI.getHost()); assertEquals(-1, xmldbURI.getPort()); assertNull(xmldbURI.getContext()); assertEquals("/db", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_LOCAL, xmldbURI.getApiName()); assertEquals("param=value",xmldbURI.getQuery()); xmldbURI = XmldbURI.create("xmldb:exist:///db?param=value"); assertEquals("exist", xmldbURI.getInstanceName()); assertNull(xmldbURI.getHost()); assertEquals(-1, xmldbURI.getPort()); assertNull(xmldbURI.getContext()); assertEquals("/db", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_LOCAL, xmldbURI.getApiName()); assertEquals("param=value",xmldbURI.getQuery()); } @Test public void xmldbURIConstructor14() throws URISyntaxException { XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist:///db#123"); assertEquals("exist", xmldbURI.getInstanceName()); assertNull(xmldbURI.getHost()); assertEquals(-1, xmldbURI.getPort()); assertNull(xmldbURI.getContext()); assertEquals("/db", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_LOCAL, xmldbURI.getApiName()); assertEquals("123",xmldbURI.getFragment()); xmldbURI = XmldbURI.create("xmldb:exist:///db#123"); assertEquals("exist", xmldbURI.getInstanceName()); assertNull(xmldbURI.getHost()); assertEquals(-1, xmldbURI.getPort()); assertNull(xmldbURI.getContext()); assertEquals("/db", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_LOCAL, xmldbURI.getApiName()); assertEquals("123",xmldbURI.getFragment()); } @Test public void xmldbURIConstructor15() throws URISyntaxException { XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist:///db?param=value#123"); assertEquals("exist", xmldbURI.getInstanceName()); assertNull(xmldbURI.getHost()); assertEquals(-1, xmldbURI.getPort()); assertNull(xmldbURI.getContext()); assertEquals("/db", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_LOCAL, xmldbURI.getApiName()); assertEquals("123",xmldbURI.getFragment()); assertEquals("param=value",xmldbURI.getQuery()); xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist:///db?param=value#123"); assertEquals("exist", xmldbURI.getInstanceName()); assertNull(xmldbURI.getHost()); assertEquals(-1, xmldbURI.getPort()); assertNull(xmldbURI.getContext()); assertEquals("/db", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_LOCAL, xmldbURI.getApiName()); assertEquals("123",xmldbURI.getFragment()); assertEquals("param=value",xmldbURI.getQuery()); } @Test public void xmldbURIConstructor16() throws URISyntaxException { XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:///db/aa/bb/ccc"); assertEquals("xmldb", xmldbURI.getInstanceName()); assertNull(xmldbURI.getHost()); assertEquals(-1, xmldbURI.getPort()); assertNull(xmldbURI.getContext()); assertEquals("/db/aa/bb/ccc", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_LOCAL, xmldbURI.getApiName()); } @Test public void xmldbURIFaultyConstructor1() { boolean exceptionThrown = false; try{ @SuppressWarnings("unused") XmldbURI xmldbURI = XmldbURI.xmldbUriFor("exist:///db"); } catch (URISyntaxException e) { exceptionThrown = true; } assertTrue(exceptionThrown); exceptionThrown = false; try{ @SuppressWarnings("unused") XmldbURI xmldbURI = XmldbURI.create("exist:///db"); } catch (Exception e) { exceptionThrown = true; } assertTrue(exceptionThrown); } @Test public void xmldbURIFaultyConstructor3() { boolean exceptionThrown = false; try{ @SuppressWarnings("unused") XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://"); } catch (URISyntaxException e) { exceptionThrown = true; } assertTrue(exceptionThrown); exceptionThrown = false; try{ @SuppressWarnings("unused") XmldbURI xmldbURI = XmldbURI.create("xmldb:exist://"); } catch (Exception e) { exceptionThrown = true; } assertTrue(exceptionThrown); } @Test public void xmldbURIFaultyConstructor4() { boolean exceptionThrown = false; try{ @SuppressWarnings("unused") XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://"); } catch (URISyntaxException e) { exceptionThrown = true; } assertTrue(exceptionThrown); exceptionThrown = false; try{ @SuppressWarnings("unused") XmldbURI xmldbURI = XmldbURI.create("xmldb:exist://"); } catch (Exception e) { exceptionThrown = true; } assertTrue(exceptionThrown); } /* * These test are irrelevant for immutable URIs */ /* public void testXmldbURIChangePart1() { try { XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:" + jettyPort + "/xmlrpc/webdav/db"); xmldbURI.setInstanceName("exist2"); assertEquals("xmldb:exist2://localhost:" + jettyPort + "/xmlrpc/webdav/db", xmldbURI.toString()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIChangePart2() { try { XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:" + jettyPort + "/xmlrpc/webdav/db"); xmldbURI.setHost("remotehost"); assertEquals("xmldb:exist://remotehost:" + jettyPort + "/xmlrpc/webdav/db", xmldbURI.toString()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIChangePart3() { try { XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:" + jettyPort + "/xmlrpc/webdav/db"); xmldbURI.setPort(jettyPort); assertEquals("xmldb:exist://localhost:" + jettyPort + "/xmlrpc/webdav/db", xmldbURI.toString()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIChangePart4() { try { XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:" + jettyPort + "/xmlrpc/webdav/db"); xmldbURI.setPort(-1); assertEquals("xmldb:exist://localhost/xmlrpc/webdav/db", xmldbURI.toString()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIChangePart5() { try { XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:" + jettyPort + "/xmlrpc/webdav/db"); xmldbURI.setContext("/webdav"); assertEquals("xmldb:exist://localhost:" + jettyPort + "/webdav/db", xmldbURI.toString()); } catch (URISyntaxException e) { fail(e.getMessage()); } } */ @Test public void xmldbURICompareTo1() throws URISyntaxException { XmldbURI xmldbURI1 = XmldbURI.xmldbUriFor("xmldb:exist:///db"); XmldbURI xmldbURI2 = XmldbURI.xmldbUriFor("xmldb:exist:///db/collection1"); assertTrue(xmldbURI1.compareTo(xmldbURI2) < 0); assertTrue(xmldbURI2.compareTo(xmldbURI1) > 0); } @Test public void xmldbURICompareTo2() throws URISyntaxException { XmldbURI xmldbURI1 = XmldbURI.xmldbUriFor("xmldb:exist:///db/collection1"); XmldbURI xmldbURI2 = XmldbURI.xmldbUriFor("xmldb:exist:///db/collection1"); assertEquals(0, xmldbURI1.compareTo(xmldbURI2)); } @Test public void xmldbURICompareTo3() throws URISyntaxException { XmldbURI xmldbURI1 = XmldbURI.xmldbUriFor("xmldb:exist:///collection1"); XmldbURI xmldbURI2 = XmldbURI.xmldbUriFor("xmldb:exist:///collection2"); assertTrue(xmldbURI1.compareTo(xmldbURI2) < 0); assertTrue(xmldbURI2.compareTo(xmldbURI1) > 0); } @Test public void xmldbURICompareTo4() throws URISyntaxException { XmldbURI xmldbURI1 = XmldbURI.xmldbUriFor("xmldb:exist1:///db"); XmldbURI xmldbURI2 = XmldbURI.xmldbUriFor("xmldb:exist2:///db"); assertTrue(xmldbURI1.compareTo(xmldbURI2) < 0); assertTrue(xmldbURI2.compareTo(xmldbURI1) > 0); } @Test public void xmldbURIEquals1() throws URISyntaxException { XmldbURI xmldbURI1 = XmldbURI.xmldbUriFor("xmldb:exist:///db"); XmldbURI xmldbURI2 = XmldbURI.xmldbUriFor("xmldb:exist:///db"); assertTrue(xmldbURI1.equals(xmldbURI2)); } @Test public void xmldbURIEquals2() throws URISyntaxException { XmldbURI xmldbURI1 = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/db"); XmldbURI xmldbURI2 = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/db"); assertTrue(xmldbURI1.equals(xmldbURI2)); } @Test public void xmldbURIEquals3() throws URISyntaxException { XmldbURI xmldbURI1 = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/exist/xmlrpc"); XmldbURI xmldbURI2 = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/exist/xmlrpc"); assertTrue(xmldbURI1.equals(xmldbURI2)); } @Test public void xmldbURIEquals4() throws URISyntaxException { XmldbURI xmldbURI1 = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/exist/xmlrpc/db"); XmldbURI xmldbURI2 = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/exist/xmlrpc/db"); assertTrue(xmldbURI1.equals(xmldbURI2)); } @Test public void xmldbURIEquals5() throws URISyntaxException { XmldbURI xmldbURI1 = XmldbURI.xmldbUriFor("xmldb:exist1://localhost:8080/db"); XmldbURI xmldbURI2 = XmldbURI.xmldbUriFor("xmldb:exist1://localhost:8080/db"); assertTrue(xmldbURI1.equals(xmldbURI2)); } @Test public void xmldbURIIsAbsolute1() throws URISyntaxException { XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist:///db"); assertTrue(xmldbURI.isAbsolute()); } @Test public void xmldbURIIsAbsolute2() throws URISyntaxException { XmldbURI xmldbURI = XmldbURI.xmldbUriFor("."); assertFalse(xmldbURI.isAbsolute()); } @Test public void xmldbURIIsAbsolute3() throws URISyntaxException { XmldbURI xmldbURI = XmldbURI.xmldbUriFor(".."); assertFalse(xmldbURI.isAbsolute()); } @Test public void xmldbURIIsContextAbsolute1() throws URISyntaxException { XmldbURI xmldbURI1 = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/exist/exist/xmlrpc/db"); assertTrue(xmldbURI1.isContextAbsolute()); } @Test public void xmldbURINormalizeContext1() throws URISyntaxException { XmldbURI xmldbURI1 = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/exist/./xmlrpc/db"); XmldbURI xmldbURI2 = xmldbURI1.normalizeContext(); assertEquals("xmldb:exist://localhost:8080/exist/xmlrpc/db", xmldbURI2.toString()); } @Test public void xmldbURINormalizeContext2() throws URISyntaxException { XmldbURI xmldbURI1 = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/exist/../xmlrpc/db"); XmldbURI xmldbURI2 = xmldbURI1.normalizeContext(); assertEquals("xmldb:exist://localhost:8080/xmlrpc/db", xmldbURI2.toString()); } @Test public void xmldbURINormalizeContext3() throws URISyntaxException { XmldbURI xmldbURI1 = XmldbURI.xmldbUriFor("xmldb:exist:///db"); XmldbURI xmldbURI2 = xmldbURI1.normalizeContext(); assertEquals("xmldb:exist:///db", xmldbURI2.toString()); } @Test public void xmldbURIRelativizeContext1() throws URISyntaxException { XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/exist/exist/xmlrpc/db"); URI uri = new URI("/exist/xmlrpc"); assertEquals("/exist/xmlrpc", xmldbURI.relativizeContext(uri).toString()); } @Test public void xmldbURIRelativizeContext2() throws URISyntaxException { XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/exist/xmlrpc/db"); URI uri = new URI("/exist/exist/xmlrpc"); assertEquals("/exist/exist/xmlrpc", xmldbURI.relativizeContext(uri).toString()); } @Test public void xmldbURIRelativizeContext3() { @SuppressWarnings("unused") boolean exceptionThrown = false; try{ XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist:///db"); URI uri = new URI("/db"); assertEquals("/exist/exist/xmlrpc", xmldbURI.relativizeContext(uri).toString()); } catch (URISyntaxException e) { fail(e.getMessage()); } catch (NullPointerException e) { exceptionThrown = true; } } @Test public void xmldbURIResolveContext1() throws URISyntaxException { XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/a/b/xmlrpc/db"); URI uri = new URI(".."); //Strange but it's like this assertEquals("/a/b/", xmldbURI.resolveContext(uri).toString()); } @Test public void xmldbURIResolveContext2() throws URISyntaxException { XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/a/b/xmlrpc/db"); URI uri = new URI("../.."); //Strange but it's like this assertEquals("/a/", xmldbURI.resolveContext(uri).toString()); } @Test public void xmldbURIResolveContext3() { boolean exceptionThrown = false; try{ //Null context here ;-) XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist:///a/db"); URI uri = new URI(".."); xmldbURI.resolveContext(uri); } catch (URISyntaxException e) { fail(e.getMessage()); } catch (NullPointerException e) { exceptionThrown = true; } assertTrue(exceptionThrown); } @Test public void xmldbURIResolveContext4() throws URISyntaxException { //Null context here ;-) XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/xmlrpc/db"); //Up and up... URI uri = new URI("/../../.."); //Strange but it's like this assertEquals("/../../..", xmldbURI.resolveContext(uri).toString()); } @Test public void xmldbURIIsCollectionNameAbsolute1() throws URISyntaxException { XmldbURI xmldbURI1 = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/xmlrpc/db"); assertTrue(xmldbURI1.isCollectionPathAbsolute()); } @Test public void xmldbURINormalizeCollectionName1() throws URISyntaxException { XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/xmlrpc/db/./collection"); assertEquals("xmldb:exist://localhost:8080/xmlrpc/db/collection", xmldbURI.normalizeCollectionPath().toString()); } @Test public void xmldbURINormalizeCollectionName2() throws URISyntaxException { XmldbURI xmldbURI1 = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/xmlrpc/db/../collection"); XmldbURI xmldbURI2 = xmldbURI1.normalizeCollectionPath(); assertEquals("xmldb:exist://localhost:8080/xmlrpc/collection", xmldbURI2.toString()); } @Test public void xmldbURINormalizeCollectionName3() throws URISyntaxException { XmldbURI xmldbURI1 = XmldbURI.xmldbUriFor("xmldb:exist:///"); XmldbURI xmldbURI2 = xmldbURI1.normalizeCollectionPath(); assertEquals("xmldb:exist:///", xmldbURI2.toString()); } @Test public void xmldbURIRelativizeCollectionName1() throws URISyntaxException { XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/xmlrpc/db/db/collection"); URI uri = new URI("/db/collection"); assertEquals("/db/collection", xmldbURI.relativizeCollectionPath(uri).toString()); } @Test public void xmldbURIRelativizeCollectionName2() throws URISyntaxException { XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/xmlrpc/db/collection"); URI uri = new URI("/db/db/collection"); assertEquals("/db/db/collection", xmldbURI.relativizeCollectionPath(uri).toString()); } @Test public void xmldbURIRelativizeCollectionName3() { @SuppressWarnings("unused") boolean exceptionThrown = false; try{ XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist:///"); URI uri = new URI("/"); assertEquals("", xmldbURI.relativizeCollectionPath(uri).toString()); } catch (URISyntaxException e) { fail(e.getMessage()); } catch (NullPointerException e) { exceptionThrown = true; } } @Test public void xmldbURIResolveCollectionName1() throws URISyntaxException { XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/xmlrpc/db/a/b"); URI uri = new URI(".."); assertEquals("/db/a/", xmldbURI.resolveCollectionPath(uri).toString()); } @Test public void xmldbURIResolveCollectionName2() throws URISyntaxException { XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/xmlrpc/db/a/b"); URI uri = new URI("../.."); assertEquals("/db/", xmldbURI.resolveCollectionPath(uri).toString()); } @Test public void xmldbURIResolveCollectionName3() throws URISyntaxException { //Null context here ;-) XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist:///"); URI uri = new URI(".."); assertEquals("/..", xmldbURI.resolveCollectionPath(uri).toString()); } @Test public void xmldbURIResolveCollectionName4() throws URISyntaxException { //Null context here ;-) XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/xmlrpc/db"); //Up and up... URI uri = new URI("/../../.."); //Strange but it's like this assertEquals("/../../..", xmldbURI.resolveCollectionPath(uri).toString()); } @Test public void xmldbURICollectionPathEncoding1() throws URISyntaxException { //Should return decoded path XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist:///xmlrpc/"+TestConstants.SPECIAL_NAME); assertEquals(xmldbURI.getCollectionPath(),"/xmlrpc/"+TestConstants.DECODED_SPECIAL_NAME); } @Test public void xmldbURICollectionPathEncoding2() throws URISyntaxException { //Should return encoded path XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist:///xmlrpc/"+TestConstants.SPECIAL_NAME); assertEquals(xmldbURI.getRawCollectionPath(),"/xmlrpc/"+TestConstants.SPECIAL_NAME); } @Test public void xmldbURILastSegment() throws URISyntaxException { //Should return encoded path XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist:///xmlrpc/test/"+TestConstants.SPECIAL_NAME); assertEquals(xmldbURI.lastSegment(),TestConstants.SPECIAL_URI); xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist:///xmlrpc/"+TestConstants.SPECIAL_NAME); assertEquals(xmldbURI.lastSegment(),TestConstants.SPECIAL_URI); xmldbURI = XmldbURI.xmldbUriFor("test/"+TestConstants.SPECIAL_NAME); assertEquals(xmldbURI.lastSegment(),TestConstants.SPECIAL_URI); xmldbURI = XmldbURI.xmldbUriFor("test/"+TestConstants.SPECIAL_NAME+"/"); assertEquals(xmldbURI.lastSegment(),TestConstants.SPECIAL_URI); xmldbURI = XmldbURI.xmldbUriFor("/test/"+TestConstants.SPECIAL_NAME+"/"); assertEquals(xmldbURI.lastSegment(),TestConstants.SPECIAL_URI); xmldbURI = XmldbURI.xmldbUriFor(TestConstants.SPECIAL_NAME+"/"); assertEquals(xmldbURI.lastSegment(),TestConstants.SPECIAL_URI); assertEquals(TestConstants.SPECIAL_URI.lastSegment(),TestConstants.SPECIAL_URI); assertEquals(XmldbURI.EMPTY_URI.lastSegment(),XmldbURI.EMPTY_URI); assertEquals(XmldbURI.create("/").lastSegment(),XmldbURI.EMPTY_URI); } @Test public void xmldbURIRemoveLastSegment() throws URISyntaxException { //Should return encoded path XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist:///xmlrpc/test/"+TestConstants.SPECIAL_NAME); assertEquals(xmldbURI.removeLastSegment(),XmldbURI.xmldbUriFor("xmldb:exist:///xmlrpc/test")); xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist:///xmlrpc/test/"+TestConstants.SPECIAL_NAME+"/"); assertEquals(xmldbURI.removeLastSegment(),XmldbURI.xmldbUriFor("xmldb:exist:///xmlrpc/test")); xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist:///xmlrpc/"+TestConstants.SPECIAL_NAME); assertEquals(xmldbURI.removeLastSegment(),XmldbURI.xmldbUriFor("xmldb:exist:///xmlrpc")); xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist:///xmlrpc/"+TestConstants.SPECIAL_NAME+"/"); assertEquals(xmldbURI.removeLastSegment(),XmldbURI.xmldbUriFor("xmldb:exist:///xmlrpc")); xmldbURI = XmldbURI.xmldbUriFor("test/"+TestConstants.SPECIAL_NAME); assertEquals(xmldbURI.removeLastSegment(),XmldbURI.xmldbUriFor("test")); xmldbURI = XmldbURI.xmldbUriFor("test/"+TestConstants.SPECIAL_NAME+"/"); assertEquals(xmldbURI.removeLastSegment(),XmldbURI.xmldbUriFor("test")); xmldbURI = XmldbURI.xmldbUriFor("/test/"+TestConstants.SPECIAL_NAME); assertEquals(xmldbURI.removeLastSegment(),XmldbURI.xmldbUriFor("/test")); xmldbURI = XmldbURI.xmldbUriFor("/test/"+TestConstants.SPECIAL_NAME+"/"); assertEquals(xmldbURI.removeLastSegment(),XmldbURI.xmldbUriFor("/test")); xmldbURI = XmldbURI.xmldbUriFor(TestConstants.SPECIAL_NAME+"/"); assertEquals(xmldbURI.removeLastSegment(),XmldbURI.EMPTY_URI); assertEquals(TestConstants.SPECIAL_URI.removeLastSegment(),XmldbURI.xmldbUriFor("")); } @Test public void appenders(){ String append_txt_1 = "test/new_test.xml"; XmldbURI root = XmldbURI.ROOT_COLLECTION_URI; XmldbURI append_uri_1 = root.append(append_txt_1); assertEquals( root.toString() +"/"+ append_txt_1 , append_uri_1.toString() ); assertEquals( TestConstants.TEST_COLLECTION_URI.toString() + "/" + TestConstants.TEST_BINARY_URI.toString() , (TestConstants.TEST_COLLECTION_URI.append(TestConstants.TEST_BINARY_URI)).toString() ); } @Test public void appendRelative() { final XmldbURI originalUri = XmldbURI.create("/db/colA/col1/col2/col3"); final XmldbURI newUri = originalUri.append("../../../../colB/other"); assertEquals("/db/colB/other", newUri.toString()); } @Test public void lastSegment() { XmldbURI uri = XmldbURI.create("/db/xmldb:something 1.xml"); assertEquals("/db/xmldb:something%201.xml", uri.toString()); assertEquals("xmldb:something%201.xml", uri.lastSegment().toString()); } @Test public void startsWith() { assertTrue(XmldbURI.create("/db/test").startsWith(XmldbURI.create("/db/test"))); assertFalse(XmldbURI.create("/db/test").startsWith(XmldbURI.create("/db/test2"))); assertTrue(XmldbURI.create("/db/test/db").startsWith(XmldbURI.create("/db/test"))); assertTrue(XmldbURI.create("/db/test/db").startsWith(XmldbURI.create("/db/test/"))); assertFalse(XmldbURI.create("/db/test_db").startsWith(XmldbURI.create("/db/test"))); } }