Java tutorial
/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jackrabbit.webdav.server; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import junit.framework.TestCase; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpException; import org.apache.commons.httpclient.UsernamePasswordCredentials; import org.apache.commons.httpclient.auth.AuthScope; import org.apache.commons.httpclient.methods.PutMethod; import org.apache.commons.httpclient.methods.StringRequestEntity; import org.apache.jackrabbit.webdav.DavConstants; import org.apache.jackrabbit.webdav.DavException; import org.apache.jackrabbit.webdav.MultiStatus; import org.apache.jackrabbit.webdav.MultiStatusResponse; import org.apache.jackrabbit.webdav.client.methods.DeleteMethod; import org.apache.jackrabbit.webdav.client.methods.OptionsMethod; import org.apache.jackrabbit.webdav.client.methods.PropFindMethod; import org.apache.jackrabbit.webdav.property.DavPropertyNameSet; import org.apache.jackrabbit.webdav.property.DavPropertySet; import org.apache.jackrabbit.webdav.version.DeltaVConstants; /** * Test cases for RFC 4918 PROPFIND functionality * (see <a href="http://www.webdav.org/specs/rfc4918.html#rfc.section.9.1">RFC 4918, Section 9.1</a> * <p> * Required system properties: * <ul> * <li>webdav.test.url</li> * <li>webdav.test.username</li> * <li>webdav.test.password</li> * </ul> */ public class RFC4918PropfindTest extends TestCase { private String root; private URI uri; private String username, password; private HttpClient client; @Override protected void setUp() throws Exception { this.uri = URI.create(System.getProperty("webdav.test.url")); this.root = this.uri.toASCIIString(); if (!this.root.endsWith("/")) { this.root += "/"; } this.username = System.getProperty(("webdav.test.username"), ""); this.password = System.getProperty(("webdav.test.password"), ""); this.client = new HttpClient(); this.client.getState().setCredentials(new AuthScope(this.uri.getHost(), this.uri.getPort()), new UsernamePasswordCredentials(this.username, this.password)); super.setUp(); } @Override protected void tearDown() throws Exception { super.tearDown(); } public void testOptions() throws HttpException, IOException, DavException, URISyntaxException { OptionsMethod options = new OptionsMethod(this.root); this.client.executeMethod(options); assertTrue(options.hasComplianceClass("3")); } public void testPropfindInclude() throws HttpException, IOException, DavException, URISyntaxException { String testuri = this.root + "iftest"; int status; try { PutMethod put = new PutMethod(testuri); put.setRequestEntity(new StringRequestEntity("1")); status = this.client.executeMethod(put); assertEquals("status: " + status, 201, status); DavPropertyNameSet names = new DavPropertyNameSet(); names.add(DeltaVConstants.COMMENT); PropFindMethod propfind = new PropFindMethod(testuri, DavConstants.PROPFIND_ALL_PROP_INCLUDE, names, 0); status = client.executeMethod(propfind); assertEquals(207, status); MultiStatus multistatus = propfind.getResponseBodyAsMultiStatus(); MultiStatusResponse[] responses = multistatus.getResponses(); assertEquals(1, responses.length); MultiStatusResponse response = responses[0]; DavPropertySet found = response.getProperties(200); DavPropertySet notfound = response.getProperties(404); assertTrue(found.contains(DeltaVConstants.COMMENT) || notfound.contains(DeltaVConstants.COMMENT)); } finally { DeleteMethod delete = new DeleteMethod(testuri); status = this.client.executeMethod(delete); assertTrue("status: " + status, status == 200 || status == 204 || status == 404); } } }