From 0626f1ecdc8d86eaf0d6b6d28b07099b566f40b2 Mon Sep 17 00:00:00 2001 From: rfc2822 Date: Sun, 3 Nov 2013 01:40:24 +0100 Subject: [PATCH] basic WebDAV tests --- src/at/bitfire/davdroid/Utils.java | 2 +- .../davdroid/webdav/WebDavResource.java | 3 +- test/res/values/strings.xml | 2 +- .../webdav/test/WebDavCollectionTest.java | 42 ++++++++++++ .../webdav/test/WebDavResourceTest.java | 66 +++++++++++++++++++ 5 files changed, 111 insertions(+), 4 deletions(-) create mode 100644 test/src/at/bitfire/davdroid/webdav/test/WebDavCollectionTest.java create mode 100644 test/src/at/bitfire/davdroid/webdav/test/WebDavResourceTest.java diff --git a/src/at/bitfire/davdroid/Utils.java b/src/at/bitfire/davdroid/Utils.java index 517fd05b..872f678b 100644 --- a/src/at/bitfire/davdroid/Utils.java +++ b/src/at/bitfire/davdroid/Utils.java @@ -15,7 +15,7 @@ public class Utils { } public static URI resolveURI(URI parent, String member) { - if (!member.startsWith("/")) + if (!member.startsWith("/") && !member.startsWith("http:") && !member.startsWith("https://")) member = "./" + member; return parent.resolve(member); diff --git a/src/at/bitfire/davdroid/webdav/WebDavResource.java b/src/at/bitfire/davdroid/webdav/WebDavResource.java index 8b405ac0..22445b0e 100644 --- a/src/at/bitfire/davdroid/webdav/WebDavResource.java +++ b/src/at/bitfire/davdroid/webdav/WebDavResource.java @@ -216,13 +216,12 @@ public class WebDavResource { /* resource operations */ - public boolean get() throws IOException, HttpException { + public void get() throws IOException, HttpException { HttpGet get = new HttpGet(location); HttpResponse response = client.execute(get); checkResponse(response); content = response.getEntity().getContent(); - return true; } public void put(byte[] data, PutMode mode) throws IOException, HttpException { diff --git a/test/res/values/strings.xml b/test/res/values/strings.xml index eb6df3d5..2539643a 100644 --- a/test/res/values/strings.xml +++ b/test/res/values/strings.xml @@ -1,6 +1,6 @@ - DavdroidTestTest + DavdroidTest diff --git a/test/src/at/bitfire/davdroid/webdav/test/WebDavCollectionTest.java b/test/src/at/bitfire/davdroid/webdav/test/WebDavCollectionTest.java new file mode 100644 index 00000000..08c2f77d --- /dev/null +++ b/test/src/at/bitfire/davdroid/webdav/test/WebDavCollectionTest.java @@ -0,0 +1,42 @@ +package at.bitfire.davdroid.webdav.test; + +import java.io.IOException; +import java.net.URI; + +import org.apache.http.HttpException; + +import android.test.InstrumentationTestCase; +import at.bitfire.davdroid.webdav.HttpPropfind; +import at.bitfire.davdroid.webdav.InvalidDavResponseException; +import at.bitfire.davdroid.webdav.WebDavCollection; +import at.bitfire.davdroid.webdav.WebDavResource; + +public class WebDavCollectionTest extends InstrumentationTestCase { + WebDavCollection dav; + + protected void setUp() throws Exception { + dav = new WebDavCollection(new URI("https://wurd.dev001.net/radicale/test/"), "test", "test", true); + } + + + public void testAutoDetection() throws InvalidDavResponseException, IOException, HttpException { + WebDavCollection myDav = dav; + + myDav.propfind(HttpPropfind.Mode.CURRENT_USER_PRINCIPAL); + String currentUserPrincipal = myDav.getCurrentUserPrincipal(); + assertEquals("/radicale/test/", currentUserPrincipal); + + myDav = new WebDavCollection(dav, currentUserPrincipal); + myDav.propfind(HttpPropfind.Mode.HOME_SETS); + String homeSet = myDav.getAddressbookHomeSet(); + assertEquals("/radicale/test/", homeSet); + assertEquals("/radicale/test/", myDav.getCalendarHomeSet()); + + myDav = new WebDavCollection(dav, homeSet); + myDav.propfind(HttpPropfind.Mode.MEMBERS_COLLECTIONS); + assertEquals(3, myDav.getMembers().size()); + for (WebDavResource member : myDav.getMembers()) + assertTrue(member.isAddressBook() || member.isCalendar()); + } + +} diff --git a/test/src/at/bitfire/davdroid/webdav/test/WebDavResourceTest.java b/test/src/at/bitfire/davdroid/webdav/test/WebDavResourceTest.java new file mode 100644 index 00000000..3a6919ed --- /dev/null +++ b/test/src/at/bitfire/davdroid/webdav/test/WebDavResourceTest.java @@ -0,0 +1,66 @@ +package at.bitfire.davdroid.webdav.test; + +import java.io.IOException; +import java.io.InputStream; +import java.net.URI; +import java.net.URISyntaxException; + +import org.apache.http.HttpException; + +import android.test.InstrumentationTestCase; +import at.bitfire.davdroid.webdav.WebDavResource; + +public class WebDavResourceTest extends InstrumentationTestCase { + URI davBaseURI, uriWithoutDAV, uriWithRedirection; + final static String davUsername = "test", davPassword = "test"; + + protected void setUp() throws Exception { + davBaseURI = new URI("https://wurd.dev001.net/radicale/test/"); + uriWithoutDAV = new URI("http://www.apache.org"); + uriWithRedirection = new URI("http://wurd.dev001.net/public/"); + } + + + public void testGet() throws URISyntaxException, IOException, HttpException { + WebDavResource dav = new WebDavResource(uriWithoutDAV, "", "", false, true); + dav.get(); + InputStream is = dav.getContent(); + assertNotNull(is); + } + + public void testTrailingSlash() throws URISyntaxException { + WebDavResource dav = new WebDavResource(new URI("http://server/path"), "", "", false, true); + assertEquals("/path/", dav.getLocation().getPath()); + } + + public void testOptions() throws URISyntaxException, IOException, HttpException { + String[] davMethods = new String[] { "PROPFIND", "PUT", "DELETE" }, + davCapabilities = new String[] { "addressbook", "calendar-access" }; + + // server without DAV + WebDavResource dav = new WebDavResource(uriWithoutDAV, "", "", false, true); + dav.options(); + for (String method : davMethods) + assertFalse(dav.supportsMethod(method)); + for (String capability : davCapabilities) + assertFalse(dav.supportsDAV(capability)); + + // server with DAV + dav = new WebDavResource(davBaseURI, davUsername, davPassword, false, true); + dav.options(); + for (String davMethod : davMethods) + assert(dav.supportsMethod(davMethod)); + for (String capability : davCapabilities) + assert(dav.supportsDAV(capability)); + } + + public void testRedirections() throws URISyntaxException, IOException { + WebDavResource dav = new WebDavResource(uriWithRedirection, "", "", false, true); + try { + dav.options(); + } catch (HttpException e) { + return; + } + fail(); + } +}