/*
* Copyright (c) 2012 - 2016 Jadler contributors
* This program is made available under the terms of the MIT License.
*/
package net.jadler.stubbing.server.jdk;
import com.sun.net.httpserver.Headers;
import com.sun.net.httpserver.HttpExchange;
import java.net.URI;
import java.nio.charset.Charset;
import net.jadler.Request;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.assertThat;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.nullValue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
public class RequestUtilsTest {
private static final String CONTENT_TYPE_HEADER = "Content-Type";
private static final String CONTENT_TYPE_WITH_ENCODING = "text/plain; charset=UTF-8";
private static final String CONTENT_TYPE_NO_ENCODING = "text/plain";
private static final String CONTENT_TYPE_CRIPPLED = "text/plain; charset=crippled";
private Headers requestHeaders;
private HttpExchange mockHttpExchange;
@Before
public void setUp() {
this.requestHeaders = new Headers();
this.mockHttpExchange = mock(HttpExchange.class);
when(mockHttpExchange.getRequestHeaders()).thenReturn(requestHeaders);
}
@Test
public void addEncoding() {
this.requestHeaders.add(CONTENT_TYPE_HEADER, CONTENT_TYPE_WITH_ENCODING);
Request.Builder builder = Request.builder().method("GET").requestURI(URI.create("/"));
RequestUtils.addEncoding(builder, mockHttpExchange);
assertThat(builder.build().getEncoding(), is(Charset.forName("UTF-8")));
}
@Test
public void addEncoding_noEncoding() {
this.requestHeaders.add(CONTENT_TYPE_HEADER, CONTENT_TYPE_NO_ENCODING);
Request.Builder builder = Request.builder().method("GET").requestURI(URI.create("/"));
RequestUtils.addEncoding(builder, mockHttpExchange);
assertThat(builder.build().getEncoding(), is(nullValue()));
}
@Test
public void addEncoding_noContentTypeHeader() {
Request.Builder builder = Request.builder().method("GET").requestURI(URI.create("/"));
RequestUtils.addEncoding(builder, mockHttpExchange);
assertThat(builder.build().getEncoding(), is(nullValue()));
}
@Test
public void addEncoding_crippledCharset() {
this.requestHeaders.add(CONTENT_TYPE_HEADER, CONTENT_TYPE_CRIPPLED);
Request.Builder builder = Request.builder().method("GET").requestURI(URI.create("/"));
RequestUtils.addEncoding(builder, mockHttpExchange);
assertThat(builder.build().getEncoding(), is(nullValue()));
}
}