eionet.webq.converter.CdrRequestConverterTest.java Source code

Java tutorial

Introduction

Here is the source code for eionet.webq.converter.CdrRequestConverterTest.java

Source

/*
 * The contents of this file are subject to the Mozilla Public
 * License Version 1.1 (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.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS
 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
 * implied. See the License for the specific language governing
 * rights and limitations under the License.
 *
 * The Original Code is Web Questionnaires 2
 *
 * The Initial Owner of the Original Code is European Environment
 * Agency. Portions created by TripleDev are Copyright
 * (C) European Environment Agency.  All Rights Reserved.
 *
 * Contributor(s):
 *        Anton Dmitrijev
 */
package eionet.webq.converter;

import eionet.webq.dto.CdrRequest;
import eionet.webq.service.CookieValueManagerImpl;
import eionet.webq.service.RequestBasedUserIdProviderImpl;
import eionet.webq.web.interceptor.CdrAuthorizationInterceptor;
import org.apache.commons.net.util.Base64;
import org.junit.Test;
import org.springframework.mock.web.MockHttpServletRequest;

import static org.hamcrest.core.IsEqual.equalTo;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;

public class CdrRequestConverterTest {

    private CdrRequestConverter cdrRequestConverter = new CdrRequestConverter(
            new RequestBasedUserIdProviderImpl(new CookieValueManagerImpl()));
    private MockHttpServletRequest request = new MockHttpServletRequest();

    @Test
    public void buildsCdrRequestFromHttpRequest() throws Exception {
        request.addParameter("envelope", "cdr-envelope.url");
        request.addParameter("schema", "requested-schema");
        request.addParameter("add", "true");
        request.addParameter("file_id", "new-file-name");
        request.addParameter("instance", "http://instance.url");
        request.addParameter("instance_title", "instance title");
        request.setContextPath("/contextPath");

        CdrRequest cdrRequest = cdrRequestConverter.convert(request);

        assertThat(cdrRequest.getEnvelopeUrl(), equalTo(request.getParameter("envelope")));
        assertThat(cdrRequest.getSchema(), equalTo(request.getParameter("schema")));
        assertThat(cdrRequest.isNewFormCreationAllowed(), equalTo(true));
        assertThat(cdrRequest.getNewFileName(), equalTo(request.getParameter("file_id")));
        assertThat(cdrRequest.getInstanceUrl(), equalTo(request.getParameter("instance")));
        assertThat(cdrRequest.getInstanceTitle(), equalTo(request.getParameter("instance_title")));
        assertThat(cdrRequest.getContextPath(), equalTo(request.getContextPath()));
    }

    @Test
    public void doesNotSetAuthorizationInfoIfNoAuthenticationHeaderInRequest() throws Exception {
        CdrRequest parameters = cdrRequestConverter.convert(request);

        assertFalse(parameters.isAuthorizationSet());
        assertNull(parameters.getUserName());
        assertNull(parameters.getPassword());
        assertNull(parameters.getBasicAuthorization());
    }

    @Test
    public void doesNotSetAuthorizationInfoIfAuthorizationHeaderValueIsNotBASIC() throws Exception {
        request.setParameter("Authorization", "FORM 123");

        CdrRequest parameters = cdrRequestConverter.convert(request);

        assertFalse(parameters.isAuthorizationSet());
        assertNull(parameters.getUserName());
        assertNull(parameters.getPassword());
        assertNull(parameters.getBasicAuthorization());
    }

    @Test
    public void setUserNameAndPasswordIfAuthorizationHeaderIsBASIC() throws Exception {
        String authorizationInfo = getBasicAuthHeader();
        request.addHeader("Authorization", authorizationInfo);

        CdrRequest parameters = cdrRequestConverter.convert(request);

        assertTrue(parameters.isAuthorizationSet());
        assertThat(parameters.getUserName(), equalTo("username"));
        assertThat(parameters.getPassword(), equalTo("password"));
        assertThat(parameters.getBasicAuthorization(), equalTo(authorizationInfo));
    }

    @Test
    public void additionalParametersStringWillNotContainWebQParameters() throws Exception {
        request.addParameter("instance", "instance.url/file.xml");
        request.addParameter("country", "ee");
        CdrRequest parameters = cdrRequestConverter.convert(request);
        assertThat(parameters.getAdditionalParametersAsQueryString(), equalTo("&country=ee"));
    }

    @Test
    public void additionalParametersStringWillBePrepared() throws Exception {
        request.addParameter("country", "ee");
        request.addParameter("reporter", "reporter");
        CdrRequest parameters = cdrRequestConverter.convert(request);
        assertThat(parameters.getAdditionalParametersAsQueryString(), equalTo("&country=ee&reporter=reporter"));
    }

    @Test
    public void additionalParametersAreEmptyIfNoSuchParameters() throws Exception {
        CdrRequest parameters = cdrRequestConverter.convert(request);
        assertThat(parameters.getAdditionalParametersAsQueryString(), equalTo(""));
    }

    @Test
    public void splitInstanceUrlToEnvelopeAndInstanceName() throws Exception {
        String fileName = "file.xml";
        String envelopeUrl = "http://instance.url";
        request.setParameter("instance", envelopeUrl + "/" + fileName);
        CdrRequest convert = cdrRequestConverter.convert(request);

        assertThat(convert.getInstanceName(), equalTo(fileName));
        assertThat(convert.getEnvelopeUrl(), equalTo(envelopeUrl));
    }

    @Test
    public void ifAuthenticationAgainstCdrUnsuccessful_DoNotSetAuthenticationInfo() throws Exception {
        request.setAttribute(CdrAuthorizationInterceptor.AUTHORIZATION_FAILED_ATTRIBUTE, "not null attribute");
        request.addHeader("Authorization", getBasicAuthHeader());
        CdrRequest convert = cdrRequestConverter.convert(request);

        assertFalse(convert.isAuthorizationSet());
        assertNull(convert.getBasicAuthorization());
    }

    private String getBasicAuthHeader() {
        return "Basic " + new String(Base64.encodeBase64("username:password".getBytes()));
    }
}