net.jadler.stubbing.MutableStubResponseTest.java Source code

Java tutorial

Introduction

Here is the source code for net.jadler.stubbing.MutableStubResponseTest.java

Source

/*
 * Copyright (c) 2013 Jadler contributors
 * This program is made available under the terms of the MIT License.
 */
package net.jadler.stubbing;

import java.nio.charset.Charset;
import java.util.Collection;
import java.util.Set;
import net.jadler.KeyValues;
import org.apache.commons.collections.MultiMap;
import org.apache.commons.collections.map.MultiValueMap;
import org.junit.Before;
import org.junit.Test;

import static org.junit.Assert.assertThat;
import static org.hamcrest.Matchers.*;

public class MutableStubResponseTest {

    private static final int STATUS = 215;
    private static final long DELAY = 1500;
    private static final Charset CHARSET = Charset.forName("UTF-8");
    private static final String STRING_BODY = "string_body";
    private static final byte[] BYTES_BODY = "bytes_body".getBytes(CHARSET);
    private static final MultiMap HEADERS_MAP;
    static {
        HEADERS_MAP = new MultiValueMap();
        HEADERS_MAP.put("header1", "value1_1");
        HEADERS_MAP.put("header2", "value2_1");
        HEADERS_MAP.put("header3", "value3_1");
    }
    private static final KeyValues HEADERS = new KeyValues().add("header1", "value1_1").add("header2", "value2_1")
            .add("header3", "value3_1");

    private MutableStubResponse msr;

    @Before
    public void setUp() {
        this.msr = new MutableStubResponse();
    }

    @Test
    public void setBodyString() {
        this.msr.setBody(BYTES_BODY);
        this.msr.setBody(STRING_BODY); //this must reset the BYTES_BODY
        assertThat(this.msr.getRawBody(), is(nullValue()));
        assertThat(this.msr.getStringBody(), is(STRING_BODY));
    }

    @Test
    public void setBodyBytes() {
        this.msr.setBody(STRING_BODY);
        this.msr.setBody(BYTES_BODY); //this must reset the STRING_BODY

        assertThat(this.msr.getStringBody(), is(nullValue()));
        assertThat(this.msr.getRawBody(), is(BYTES_BODY));
    }

    @Test
    @SuppressWarnings("unchecked")
    public void addHeader() {
        this.msr.addHeaders(HEADERS_MAP);
        this.msr.addHeader("header3", "value3_1");

        assertThat(this.msr.getHeaders().size(), is(3));
        assertThat((Set<String>) this.msr.getHeaders().keySet(),
                containsInAnyOrder("header1", "header2", "header3"));
    }

    @Test
    @SuppressWarnings("unchecked")
    public void addHeaderTwoValues() {
        this.msr.addHeaders(HEADERS_MAP);
        this.msr.addHeader("header2", "value2_2");

        assertThat(this.msr.getHeaders().size(), is(3));
        assertThat((Set<String>) this.msr.getHeaders().keySet(),
                containsInAnyOrder("header1", "header2", "header3"));
        assertThat((Collection<String>) this.msr.getHeaders().get("header2"),
                containsInAnyOrder("value2_1", "value2_2"));
    }

    @Test
    @SuppressWarnings("unchecked")
    public void addHeaders() {
        this.msr.addHeaders(HEADERS_MAP);

        final MultiMap additionalHeaders = new MultiValueMap();
        additionalHeaders.put("header3", "value3_1");
        this.msr.addHeaders(additionalHeaders);

        assertThat(this.msr.getHeaders().size(), is(3));
        assertThat((Set<String>) this.msr.getHeaders().keySet(),
                containsInAnyOrder("header1", "header2", "header3"));
    }

    @Test
    @SuppressWarnings("unchecked")
    public void addHeadersTwoValues() {
        this.msr.addHeaders(HEADERS_MAP);

        final MultiMap additionalHeaders = new MultiValueMap();
        additionalHeaders.put("header2", "value2_2");
        this.msr.addHeaders(additionalHeaders);

        assertThat(this.msr.getHeaders().size(), is(3));
        assertThat((Set<String>) this.msr.getHeaders().keySet(),
                containsInAnyOrder("header1", "header2", "header3"));
        assertThat((Collection<String>) this.msr.getHeaders().get("header2"),
                containsInAnyOrder("value2_1", "value2_2"));
    }

    @Test
    @SuppressWarnings("unchecked")
    public void setHeaderCaseInsensitive() {
        this.msr.addHeaders(HEADERS_MAP);
        this.msr.setHeaderCaseInsensitive("hEaDer2", "value2_2");

        final MultiMap expected = new MultiValueMap();
        expected.put("header1", "value1_1");
        expected.put("hEaDer2", "value2_2");
        expected.put("header3", "value3_1");
        assertThat(this.msr.getHeaders(), is(expected));
    }

    @Test(expected = IllegalStateException.class)
    public void toStubResponseBodyNotSet() {
        this.msr.toStubResponse();
    }

    @Test(expected = IllegalStateException.class)
    public void toStubResponseEncodingNotSet() {
        this.msr.setBody(STRING_BODY);
        this.msr.toStubResponse();
    }

    @Test
    public void toStubResponse() {
        this.msr.setStatus(STATUS);
        this.msr.setDelay(DELAY);
        this.msr.setEncoding(CHARSET);
        this.msr.addHeaders(HEADERS_MAP);
        this.msr.setBody(STRING_BODY);

        final StubResponse resp = this.msr.toStubResponse();
        assertThat(resp.getStatus(), is(STATUS));
        assertThat(resp.getDelay(), is(DELAY));
        assertThat(resp.getEncoding(), is(CHARSET));
        assertThat(resp.getHeaders(), is(HEADERS));
        assertThat(resp.getBody(), is(STRING_BODY.getBytes(CHARSET)));
    }

    @Test
    public void toStubResponseByteBody() {
        this.msr.setStatus(STATUS);
        this.msr.setBody(BYTES_BODY);

        final StubResponse resp = this.msr.toStubResponse();
        assertThat(resp.getBody(), is(BYTES_BODY));
    }
}