org.apache.sling.launchpad.webapp.integrationtest.servlets.HeadServletTest.java Source code

Java tutorial

Introduction

Here is the source code for org.apache.sling.launchpad.webapp.integrationtest.servlets.HeadServletTest.java

Source

/*
 * 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.servlets;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;

import java.io.IOException;
import java.util.UUID;
import java.util.regex.Pattern;

import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.HeadMethod;
import org.apache.sling.commons.testing.integration.HttpTest;
import org.apache.sling.commons.testing.integration.HttpTestBase;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

/** Test HEAD requests */
public class HeadServletTest {

    private final HttpTest H = new HttpTest();

    /** Test content provided by the test-services bundle */
    public static final String HTML_URL = HttpTestBase.HTTP_BASE_URL + "/sling-test/some.html";

    /** Test content provided by the test-services bundle */
    public static final String PNG_URL = HttpTestBase.HTTP_BASE_URL + "/sling-test/sling-logo.png";

    public static final String NONEXISTENT_URL = HttpTestBase.HTTP_BASE_URL + "/notfound-"
            + UUID.randomUUID().toString();

    private void assertResponseHeader(HttpMethod m, String name, String expectedRegex) {
        final Header h = m.getResponseHeader(name);
        assertNotNull("Expecting header " + name, h);
        final String value = h.getValue();
        assertTrue("Expected regexp " + expectedRegex + " for header " + name + ", header value is " + value,
                Pattern.matches(expectedRegex, value));
    }

    private void assertCommonHeaders(HttpMethod m, String expectedContentType) {
        assertResponseHeader(m, "Content-Length", "[0-9][0-9][0-9]+");
        assertResponseHeader(m, "Content-Type", expectedContentType);
        assertResponseHeader(m, "Last-Modified", ".*[a-zA-Z0-9]+.*");
    }

    @Before
    public void setup() throws Exception {
        H.setUp();
    }

    @After
    public void cleanup() throws Exception {
        H.tearDown();
    }

    @Test
    public void htmlGet() throws IOException {
        final String content = H.getContent(HTML_URL, HttpTest.CONTENT_TYPE_HTML);
        HttpTest.assertContains(content, "This is some HTML for testing Sling.");
    }

    @Test
    public void htmlHead() throws IOException {
        final HeadMethod head = new HeadMethod(HTML_URL);
        final int status = H.getHttpClient().executeMethod(head);
        assertEquals(200, status);
        assertNull("Expecting null body", head.getResponseBody());
        assertCommonHeaders(head, "text/html");
    }

    @Test
    public void pngGet() throws IOException {
        final GetMethod get = new GetMethod(PNG_URL);
        final int status = H.getHttpClient().executeMethod(get);
        assertEquals(200, status);
        assertNotNull(get.getResponseBody());
        assertTrue("Expecting non-empty body", get.getResponseBody().length > 500);
        assertCommonHeaders(get, "image/png");
    }

    @Test
    public void pngHead() throws IOException {
        final HeadMethod head = new HeadMethod(PNG_URL);
        final int status = H.getHttpClient().executeMethod(head);
        assertEquals(200, status);
        assertNull("Expecting null body", head.getResponseBody());
        assertCommonHeaders(head, "image/png");
    }

    @Test
    public void nonexistentGet() throws IOException {
        final GetMethod get = new GetMethod(NONEXISTENT_URL);
        assertEquals(404, H.getHttpClient().executeMethod(get));
    }

    @Test
    public void nonexistentHead() throws IOException {
        final HeadMethod head = new HeadMethod(NONEXISTENT_URL);
        assertEquals(404, H.getHttpClient().executeMethod(head));
    }
}