/* * 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.sling.launchpad.webapp.integrationtest; import org.apache.commons.io.IOUtils; import org.apache.sling.commons.testing.integration.HttpAnyMethod; import java.io.IOException; import java.io.InputStream; /* * handler ranking identifier * ------------------------------------------- * TestHandler1 3 test-io-handler-1- * TestHandler2 2 test-io-handler-11- * TestHandler3 1 test-io-handler-111- * */ public class SlingWebDavServletTest extends RenderingTestBase { private final String testDir = "/sling-test/" + getClass().getSimpleName() + System.currentTimeMillis(); // TODO there was previously no /default and the test passed, with a // before the testDir path // - need to clarify if this was by design private final String testDirUrl = HTTP_BASE_URL + "/dav/default" + testDir; private final String HANDLER = "test-io-handler-"; private final String HANDLER_1 = "test-io-handler-1"; private final String HANDLER_11 = "test-io-handler-11"; private final String HANDLER_111 = "test-io-handler-111"; private static final String NUMMY_DATA = "dummy-data"; @Override protected void setUp() throws Exception { super.setUp(); testClient.mkdirs(HTTP_BASE_URL, testDir); uploadFile(getHandlerUrl(HANDLER_1), NUMMY_DATA); uploadFile(getHandlerUrl(HANDLER_11), NUMMY_DATA); uploadFile(getHandlerUrl(HANDLER_111), NUMMY_DATA); } @Override protected void tearDown() throws Exception { super.tearDown(); testClient.delete(testDirUrl); } public void testServiceRunning() throws IOException { final String url = getHandlerUrl(HANDLER_1); final HttpAnyMethod propfind = new HttpAnyMethod("PROPFIND",url); int status = httpClient.executeMethod(propfind); assertEquals("PROPFIND " + url + " must return status 207", 207, status); final String content = propfind.getResponseBodyAsString(); assertContains(content, HANDLER); } public void testHandlerOrder() throws IOException { checkHandler(getHandlerUrl(HANDLER_1), getHandlerIdentifier(HANDLER_1)); checkHandler(getHandlerUrl(HANDLER_11), getHandlerIdentifier(HANDLER_11)); checkHandler(getHandlerUrl(HANDLER_111), getHandlerIdentifier(HANDLER_111)); } // /** * @param handlerName * @param identifier The expected handler identifier to be returned as a property. * @throws IOException */ private void checkHandler(String handlerName, String identifier) throws IOException { final HttpAnyMethod propfind = new HttpAnyMethod("PROPFIND",handlerName); int status = httpClient.executeMethod(propfind); assertEquals("PROPFIND " + handlerName + " must return status 207", 207, status); final String content = propfind.getResponseBodyAsString(); assertContains(content, identifier); } private void uploadFile(String url, String content) throws IOException { InputStream is = null; try { is = IOUtils.toInputStream(content); testClient.upload(url, is); } finally { IOUtils.closeQuietly(is); } } private String getHandlerUrl(String handlerName){ return testDirUrl + "/" + handlerName; } private String getHandlerIdentifier(String handlerName){ return handlerName + "-"; } }