// ======================================================================== // Copyright 2006-2007 Mort Bay Consulting Pty. Ltd. // ------------------------------------------------------------------------ // Licensed 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.mortbay.jetty.client; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import junit.framework.TestCase; import org.mortbay.io.Buffer; import org.mortbay.jetty.Connector; import org.mortbay.jetty.HttpMethods; import org.mortbay.jetty.Server; import org.mortbay.jetty.client.security.HashRealmResolver; import org.mortbay.jetty.client.security.Realm; import org.mortbay.jetty.client.security.SimpleRealmResolver; import org.mortbay.jetty.client.webdav.WebdavListener; /** * Functional testing for HttpExchange. * * @author Matthew Purland * @author Greg Wilkins */ public class WebdavListenerTest extends TestCase//extends HttpExchangeTest { protected String _scheme = "http://"; protected Server _server; protected int _port; protected HttpClient _httpClient; protected Connector _connector; private String _username = "janb"; private String _password = "xxxxx"; private String _singleFileURL; private String _dirFileURL; private String _dirURL; protected void setUp() throws Exception { _singleFileURL = "https://dav.codehaus.org/user/" + _username + "/foo.txt"; _dirURL = "https://dav.codehaus.org/user/" + _username + "/ttt/"; _dirFileURL = _dirURL+"foo.txt"; _scheme="https://"; _httpClient=new HttpClient(); _httpClient.setConnectorType(HttpClient.CONNECTOR_SELECT_CHANNEL); //_httpClient.setMaxConnectionsPerAddress(4); _httpClient.setRealmResolver( new SimpleRealmResolver ( new Realm(){ public String getId() { return _username + "'s webspace"; //To change body of implemented methods use File | Settings | File Templates. } public String getPrincipal() { return _username; //To change body of implemented methods use File | Settings | File Templates. } public String getCredentials() { return _password; //To change body of implemented methods use File | Settings | File Templates. } } )); _httpClient.registerListener( "org.mortbay.jetty.client.webdav.WebdavListener"); _httpClient.start(); } public void tearDown () throws Exception { _httpClient.stop(); } public void testPUTandDELETEwithSSL() throws Exception { File file = new File("src/test/resources/foo.txt"); assertTrue(file.exists()); /* * UNCOMMENT TO TEST WITH REAL DAV SERVER * Remember to set _username and _password to a real user's account. * */ /* //PUT a FILE ContentExchange singleFileExchange = new ContentExchange(); singleFileExchange.setURL(_singleFileURL); singleFileExchange.setMethod( HttpMethods.PUT ); singleFileExchange.setFileForUpload(file); singleFileExchange.setRequestHeader( "Content-Type", "application/octet-stream"); singleFileExchange.setRequestHeader("Content-Length", String.valueOf( file.length() )); _httpClient.send(singleFileExchange); singleFileExchange.waitForDone(); String result = singleFileExchange.getResponseContent(); assertEquals(201, singleFileExchange.getResponseStatus()); //PUT a FILE in a directory hierarchy ContentExchange dirFileExchange = new ContentExchange(); dirFileExchange.setURL(_dirFileURL); dirFileExchange.setMethod( HttpMethods.PUT ); dirFileExchange.setFileForUpload(file); dirFileExchange.setRequestHeader( "Content-Type", "application/octet-stream"); dirFileExchange.setRequestHeader("Content-Length", String.valueOf( file.length() )); _httpClient.send(dirFileExchange); dirFileExchange.waitForDone(); result = dirFileExchange.getResponseContent(); assertEquals(201, singleFileExchange.getResponseStatus()); //DELETE the single file HttpExchange del = new HttpExchange(); del.setURL(_singleFileURL); del.setMethod(HttpMethods.DELETE); _httpClient.send(del); del.waitForCompletion(); //DELETE the whole dir del.setURL(_dirURL); del.setMethod(HttpMethods.DELETE); del.setRequestHeader("Depth", "infinity"); _httpClient.send(del); del.waitForCompletion(); */ } }