net.handle.servlet.RequestAdapterTest.java Source code

Java tutorial

Introduction

Here is the source code for net.handle.servlet.RequestAdapterTest.java

Source

/*
 * Created by: christopher
 * Date: 3 Mar 2008
 * Time: 17:20:18
 *
 * <p>Copyright (C) 2008 Nature Publishing Group, Inc.</p>
 *
 * <p><a rel="license" href="http://creativecommons.org/licenses/GPL/2.0/">
 * <img alt="Creative Commons License" style="border-width:0"
 * src="http://i.creativecommons.org/l/GPL/2.0/88x62.png" /></a><br />
 * This work is licensed under a <a rel="license"
 * href="http://creativecommons.org/licenses/GPL/2.0/">Creative Commons GNU
 * General Public License License</a>.</p>
 */

package net.handle.servlet;

import static org.junit.Assert.*;

import org.apache.commons.configuration.XMLConfiguration;
import org.junit.Before;
import org.junit.Test;
import org.springframework.mock.web.MockHttpServletRequest;

/**
 * <p>
 * JUnit test case for {@link RequestAdapter}.
 * </p>
 *
 * @author <a href="mailto:christopher.townson@googlemail.com">Christopher Townson</a>
 */
public class RequestAdapterTest {

    private MockHttpServletRequest request;

    private Settings settings;

    private String handle;

    @Before
    public void setup() throws Exception {
        settings = new Settings(new XMLConfiguration(RequestAdapterTest.class.getResource("/OpenHandleTest.xml")));
        handle = "10101/nature";
        request = new MockHttpServletRequest();
    }

    @Test
    public void testHandleIdNull() {
        assertNull(new RequestAdapter(request, settings).getHandle());
    }

    @Test
    public void testHandleId() {
        request.addParameter(settings.getHandleIdRequestParameterName(), handle);
        assertEquals(handle, new RequestAdapter(request, settings).getHandle());
    }

    @Test
    public void testIndicesNull() {
        assertNull(new RequestAdapter(request, settings).getIndices());
    }

    @Test
    public void testIndicesSingle() {
        request.addParameter(settings.getIndexRequestParameterName(), "1");
        assertEquals(1, new RequestAdapter(request, settings).getIndices()[0]);
    }

    @Test
    public void testIndicesMultiple() {
        request.addParameter(settings.getIndexRequestParameterName(), new String[] { "1", "2", "3" });
        RequestAdapter adapter = new RequestAdapter(request, settings);
        assertEquals(1, adapter.getIndices()[0]);
        assertEquals(2, adapter.getIndices()[1]);
        assertEquals(3, adapter.getIndices()[2]);
    }

    /*
     * the test settings file has 3 configured error templates - let's make sure
     * we can get each one with the relevant param and that we get the first
     * configured for null
     */

    @Test
    public void testGetErrorResponseTemplateNull() {
        assertEquals(new Template(Mimetype.APPLICATION_RDF_XML, "error", Template.Type.ERROR_RESPONSE),
                new RequestAdapter(request, settings).getErrorResponseTemplate());
    }

    @Test
    public void testGetErrorResponseTemplateTextPlain() {
        request.addParameter(settings.getFormatRequestParameterName(), "txt");
        assertEquals(new Template(Mimetype.TEXT_PLAIN, "error", Template.Type.ERROR_RESPONSE),
                new RequestAdapter(request, settings).getErrorResponseTemplate());
    }

    @Test
    public void testGetErrorResponseTemplateXhtml() {
        request.addParameter(settings.getFormatRequestParameterName(), "xhtml");
        assertEquals(new Template(Mimetype.APPLICATION_XHTML_XML, "error", Template.Type.ERROR_RESPONSE),
                new RequestAdapter(request, settings).getErrorResponseTemplate());
    }

    @Test
    public void testGetErrorResponseTemplateRdf() {
        request.addParameter(settings.getFormatRequestParameterName(), "rdf");
        assertEquals(new Template(Mimetype.APPLICATION_RDF_XML, "error", Template.Type.ERROR_RESPONSE),
                new RequestAdapter(request, settings).getErrorResponseTemplate());
    }

    /*
     * and the same for the handle response templates ...
     */

    @Test
    public void testGetHandleResponseTemplateNull() {
        assertEquals(new Template(Mimetype.APPLICATION_RDF_XML, "handle", Template.Type.HANDLE_RESPONSE),
                new RequestAdapter(request, settings).getHandleResponseTemplate());
    }

    @Test
    public void testGetHandleResponseTemplateJson() {
        request.addParameter(settings.getFormatRequestParameterName(), "json");
        assertEquals(new Template(Mimetype.APPLICATION_JSON, "handle", Template.Type.HANDLE_RESPONSE),
                new RequestAdapter(request, settings).getHandleResponseTemplate());
    }

    @Test
    public void testGetHandleResponseTemplateN3() {
        request.addParameter(settings.getFormatRequestParameterName(), "n3");
        assertEquals(new Template(Mimetype.TEXT_RDF_N3, "handle", Template.Type.HANDLE_RESPONSE),
                new RequestAdapter(request, settings).getHandleResponseTemplate());
    }

    @Test
    public void testGetHandleResponseTemplateRdf() {
        request.addParameter(settings.getFormatRequestParameterName(), "rdf");
        assertEquals(new Template(Mimetype.APPLICATION_RDF_XML, "handle", Template.Type.HANDLE_RESPONSE),
                new RequestAdapter(request, settings).getHandleResponseTemplate());
    }

    @Test
    public void testGetTypesNull() {
        assertNull(new RequestAdapter(request, settings).getTypes());
    }

    @Test
    public void testGetTypesSingleValid() {
        request.addParameter(settings.getTypeRequestParameterName(), HandleRecordType.HS_ADMIN.toString());
        assertEquals(HandleRecordType.HS_ADMIN, new RequestAdapter(request, settings).getTypes()[0]);
    }

    @Test
    public void testGetTypesSingleInvalid() {
        request.addParameter(settings.getTypeRequestParameterName(), "non-existent type");
        assertNull(new RequestAdapter(request, settings).getTypes());
    }

    @Test
    public void testGetTypesMultipleValid() {
        request.addParameter(settings.getTypeRequestParameterName(),
                new String[] { HandleRecordType.HS_ADMIN.toString(), HandleRecordType.HS_ALIAS.toString(),
                        HandleRecordType.HS_NA_DELEGATE.toString() });
        RequestAdapter adapter = new RequestAdapter(request, settings);
        assertEquals(HandleRecordType.HS_ADMIN, adapter.getTypes()[0]);
        assertEquals(HandleRecordType.HS_ALIAS, adapter.getTypes()[1]);
        assertEquals(HandleRecordType.HS_NA_DELEGATE, adapter.getTypes()[2]);
    }

    @Test
    public void testGetTypesMultipleInvalid() {
        request.addParameter(settings.getTypeRequestParameterName(),
                new String[] { "this", "type", "does", "not", "exist" });
        assertNull(new RequestAdapter(request, settings).getTypes());
    }

    @Test
    public void testGetTypesMultipleMixedValidAndInvalid() {
        request.addParameter(settings.getTypeRequestParameterName(),
                new String[] { HandleRecordType.HS_ADMIN.toString(), "this", HandleRecordType.HS_ALIAS.toString(),
                        "does not", HandleRecordType.HS_NA_DELEGATE.toString(), "exist" });
        RequestAdapter adapter = new RequestAdapter(request, settings);
        assertEquals(HandleRecordType.HS_ADMIN, adapter.getTypes()[0]);
        assertEquals(HandleRecordType.HS_ALIAS, adapter.getTypes()[1]);
        assertEquals(HandleRecordType.HS_NA_DELEGATE, adapter.getTypes()[2]);
    }

}