/*******************************************************************************
* 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.wink.server.internal;
import java.util.Collections;
import java.util.List;
import java.util.Locale;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Request;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Variant;
import org.apache.wink.server.internal.servlet.MockServletInvocationTest;
import org.apache.wink.test.mock.MockRequestConstructor;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
public class RequestsTest extends MockServletInvocationTest {
@Override
protected Class<?>[] getClasses() {
return new Class[] {RequestRootResource.class};
}
@Path("/root")
public static class RequestRootResource {
@GET
public Response getOnlyMediaType(@Context Request request) {
List<Variant> responseVariants =
Variant.mediaTypes(MediaType.TEXT_PLAIN_TYPE,
MediaType.APPLICATION_XML_TYPE,
MediaType.APPLICATION_JSON_TYPE).add().build();
Variant bestResponseVariant = request.selectVariant(responseVariants);
if (bestResponseVariant != null) {
return Response.ok("Hello world!").variant(request.selectVariant(responseVariants))
.build();
}
return Response.notAcceptable(responseVariants).build();
}
@GET
@Path("language")
public Response getOnlyLanguage(@Context Request request) {
List<Variant> responseVariants =
Variant.languages(Locale.ENGLISH, Locale.FRENCH, Locale.KOREAN).add().build();
Variant bestResponseVariant = request.selectVariant(responseVariants);
if (bestResponseVariant != null) {
return Response.ok("Hello world!").variant(bestResponseVariant).build();
}
return Response.notAcceptable(responseVariants).build();
}
@GET
@Path("encoding")
public Response getOnlyEncoding(@Context Request request) {
List<Variant> responseVariants =
Collections.unmodifiableList(Variant.encodings("gzip", "identity", "deflate").add()
.build());
Variant bestResponseVariant = request.selectVariant(responseVariants);
if (bestResponseVariant != null) {
return Response.ok("Hello world!").variant(bestResponseVariant).build();
}
return Response.notAcceptable(responseVariants).build();
}
@GET
@Path("noidentityencoding")
public Response getNoIdentityEncoding(@Context Request request) {
List<Variant> responseVariants =
Collections.unmodifiableList(Variant.encodings("gzip", "deflate").add().build());
Variant bestResponseVariant = request.selectVariant(responseVariants);
if (bestResponseVariant != null) {
return Response.ok("Hello world!").variant(bestResponseVariant).build();
}
return Response.notAcceptable(responseVariants).build();
}
@GET
@Path("defaultcharset")
public Response getDefaultCharset() {
return Response.ok("Hello world!").build();
}
@GET
@Path("charset")
public Response getOnlyCharset(@Context Request request) {
List<Variant> responseVariants =
Variant.mediaTypes(MediaType.valueOf(MediaType.TEXT_PLAIN + ";charset=iso-8859-1"),
MediaType.valueOf(MediaType.TEXT_PLAIN + ";charset=UTF-8"),
MediaType.valueOf(MediaType.TEXT_PLAIN + ";charset=shift_jis"))
.add().build();
Variant bestResponseVariant = request.selectVariant(responseVariants);
if (bestResponseVariant != null) {
return Response.ok("Hello world!").variant(bestResponseVariant).build();
}
return Response.notAcceptable(responseVariants).build();
}
@GET
@Path("multipleheaders")
public Response getMultipleAcceptHeaders(@Context Request request) {
List<Variant> responseVariants =
Collections.unmodifiableList(Variant.mediaTypes(MediaType.APPLICATION_XML_TYPE,
MediaType.APPLICATION_JSON_TYPE,
MediaType.TEXT_PLAIN_TYPE)
.encodings("gzip", "identity", "deflate").languages(Locale.ENGLISH,
Locale.FRENCH,
Locale.US).add().build());
Variant bestResponseVariant = request.selectVariant(responseVariants);
if (bestResponseVariant != null) {
return Response.ok("Hello world!").variant(bestResponseVariant).build();
}
return Response.notAcceptable(responseVariants).build();
}
@GET
@Path("moremultipleheaders")
public Response getMoreMultipleAcceptHeaders(@Context Request request) {
List<Variant> responseVariants =
Collections.unmodifiableList(Variant
.mediaTypes(MediaType.valueOf(MediaType.APPLICATION_JSON + ";charset=utf-8"),
MediaType.valueOf(MediaType.TEXT_PLAIN + ";charset=shift_jis"),
MediaType.valueOf(MediaType.APPLICATION_XML),
MediaType
.valueOf(MediaType.APPLICATION_JSON + ";charset=iso-8859-1"),
MediaType.valueOf(MediaType.TEXT_PLAIN + ";charset=iso-8859-1"))
.encodings("gzip", "identity", "deflate").languages(Locale.ENGLISH,
Locale.FRENCH,
Locale.US).add().build());
Variant bestResponseVariant = request.selectVariant(responseVariants);
if (bestResponseVariant != null) {
return Response.ok("Hello world!").variant(bestResponseVariant).build();
}
return Response.notAcceptable(responseVariants).build();
}
}
public void testSimpleMediaTypeSelect() throws Exception {
MockHttpServletRequest request =
MockRequestConstructor.constructMockRequest("GET", "/root", MediaType.TEXT_PLAIN);
MockHttpServletResponse response = invoke(request);
assertEquals(200, response.getStatus());
assertEquals(MediaType.TEXT_PLAIN, response.getContentType());
assertEquals(HttpHeaders.ACCEPT, response.getHeader(HttpHeaders.VARY));
request = MockRequestConstructor.constructMockRequest("GET", "/root", "text/*");
response = invoke(request);
assertEquals(200, response.getStatus());
assertEquals(MediaType.TEXT_PLAIN, response.getContentType());
assertEquals(HttpHeaders.ACCEPT, response.getHeader(HttpHeaders.VARY));
request =
MockRequestConstructor.constructMockRequest("GET", "/root", MediaType.APPLICATION_XML);
response = invoke(request);
assertEquals(200, response.getStatus());
assertEquals(MediaType.APPLICATION_XML, response.getContentType());
assertEquals(HttpHeaders.ACCEPT, response.getHeader(HttpHeaders.VARY));
request =
MockRequestConstructor.constructMockRequest("GET", "/root", MediaType.APPLICATION_JSON);
response = invoke(request);
assertEquals(200, response.getStatus());
assertEquals(MediaType.APPLICATION_JSON, response.getContentType());
assertEquals(HttpHeaders.ACCEPT, response.getHeader(HttpHeaders.VARY));
request =
MockRequestConstructor.constructMockRequest("GET",
"/root",
MediaType.APPLICATION_ATOM_XML);
response = invoke(request);
assertEquals(406, response.getStatus());
assertEquals(HttpHeaders.ACCEPT, response.getHeader(HttpHeaders.VARY));
}
public void testMultipleMediaTypeSelect() throws Exception {
MockHttpServletRequest request =
MockRequestConstructor.constructMockRequest("GET",
"/root",
MediaType.TEXT_PLAIN + ";q=1.0,"
+ MediaType.APPLICATION_XML
+ ";q=0.9");
MockHttpServletResponse response = invoke(request);
assertEquals(200, response.getStatus());
assertEquals(response.getContentType(), MediaType.TEXT_PLAIN);
assertEquals(HttpHeaders.ACCEPT, response.getHeader(HttpHeaders.VARY));
assertNull(response.getHeader(HttpHeaders.CONTENT_LANGUAGE));
assertNull(response.getHeader(HttpHeaders.CONTENT_ENCODING));
request =
MockRequestConstructor.constructMockRequest("GET",
"/root",
MediaType.APPLICATION_XML + ";q=0.9,"
+ "text/*"
+ ";q=1.0");
response = invoke(request);
assertEquals(200, response.getStatus());
assertEquals(MediaType.TEXT_PLAIN, response.getContentType());
assertEquals(HttpHeaders.ACCEPT, response.getHeader(HttpHeaders.VARY));
assertNull(response.getHeader(HttpHeaders.CONTENT_LANGUAGE));
assertNull(response.getHeader(HttpHeaders.CONTENT_ENCODING));
request =
MockRequestConstructor.constructMockRequest("GET",
"/root",
MediaType.TEXT_PLAIN + ";q=0.9,"
+ MediaType.APPLICATION_XML
+ ";q=1.0");
response = invoke(request);
assertEquals(200, response.getStatus());
assertEquals(MediaType.APPLICATION_XML, response.getContentType());
assertEquals(HttpHeaders.ACCEPT, response.getHeader(HttpHeaders.VARY));
assertNull(response.getHeader(HttpHeaders.CONTENT_LANGUAGE));
assertNull(response.getHeader(HttpHeaders.CONTENT_ENCODING));
request =
MockRequestConstructor.constructMockRequest("GET", "/root", MediaType.WILDCARD + ","
+ MediaType.TEXT_PLAIN
+ ";q=0.0,"
+ MediaType.APPLICATION_XML
+ ";q=0.0");
response = invoke(request);
assertEquals(200, response.getStatus());
assertEquals(MediaType.APPLICATION_JSON, response.getContentType());
assertEquals(HttpHeaders.ACCEPT, response.getHeader(HttpHeaders.VARY));
assertNull(response.getHeader(HttpHeaders.CONTENT_LANGUAGE));
assertNull(response.getHeader(HttpHeaders.CONTENT_ENCODING));
request =
MockRequestConstructor.constructMockRequest("GET",
"/root",
MediaType.APPLICATION_ATOM_XML);
request =
MockRequestConstructor.constructMockRequest("GET",
"/root",
MediaType.APPLICATION_ATOM_XML + ";q=1.0,"
+ MediaType.TEXT_PLAIN
+ ";q=0.0,"
+ MediaType.APPLICATION_XML
+ ";q=0.0");
response = invoke(request);
assertEquals(406, response.getStatus());
assertEquals(HttpHeaders.ACCEPT, response.getHeader(HttpHeaders.VARY));
assertNull(response.getHeader(HttpHeaders.CONTENT_LANGUAGE));
assertNull(response.getHeader(HttpHeaders.CONTENT_ENCODING));
request =
MockRequestConstructor.constructMockRequest("GET",
"/root",
MediaType.WILDCARD + ";q=0.1 ,"
+ MediaType.APPLICATION_ATOM_XML
+ ";q=1.0,"
+ MediaType.TEXT_PLAIN
+ ";q=0.0,"
+ MediaType.APPLICATION_XML
+ ";q=0.0");
response = invoke(request);
assertEquals(200, response.getStatus());
assertEquals(MediaType.APPLICATION_JSON, response.getContentType());
assertEquals(HttpHeaders.ACCEPT, response.getHeader(HttpHeaders.VARY));
assertNull(response.getHeader(HttpHeaders.CONTENT_LANGUAGE));
assertNull(response.getHeader(HttpHeaders.CONTENT_ENCODING));
}
public void testSimpleLanguagesSelect() throws Exception {
MockHttpServletRequest request =
MockRequestConstructor.constructMockRequest("GET",
"/root/language",
MediaType.TEXT_PLAIN);
request.addHeader(HttpHeaders.ACCEPT_LANGUAGE, "en");
MockHttpServletResponse response = invoke(request);
assertEquals(200, response.getStatus());
assertEquals(MediaType.TEXT_PLAIN, response.getContentType());
assertEquals("en", response.getHeader(HttpHeaders.CONTENT_LANGUAGE));
assertEquals(HttpHeaders.ACCEPT_LANGUAGE, response.getHeader(HttpHeaders.VARY));
assertNull(response.getHeader(HttpHeaders.CONTENT_ENCODING));
request =
MockRequestConstructor.constructMockRequest("GET",
"/root/language",
MediaType.TEXT_PLAIN);
request.addHeader(HttpHeaders.ACCEPT_LANGUAGE, "fr");
response = invoke(request);
assertEquals(200, response.getStatus());
assertEquals(MediaType.TEXT_PLAIN, response.getContentType());
assertEquals("fr", response.getHeader(HttpHeaders.CONTENT_LANGUAGE));
assertEquals(HttpHeaders.ACCEPT_LANGUAGE, response.getHeader(HttpHeaders.VARY));
assertNull(response.getHeader(HttpHeaders.CONTENT_ENCODING));
}
public void testMultipleLanguagesSelect() throws Exception {
MockHttpServletRequest request =
MockRequestConstructor.constructMockRequest("GET",
"/root/language",
MediaType.TEXT_PLAIN);
request.addHeader(HttpHeaders.ACCEPT_LANGUAGE, "en;q=0.6,fr;q=0.5");
MockHttpServletResponse response = invoke(request);
assertEquals(200, response.getStatus());
assertEquals(MediaType.TEXT_PLAIN, response.getContentType());
assertEquals("en", response.getHeader(HttpHeaders.CONTENT_LANGUAGE));
assertEquals(HttpHeaders.ACCEPT_LANGUAGE, response.getHeader(HttpHeaders.VARY));
request =
MockRequestConstructor.constructMockRequest("GET",
"/root/language",
MediaType.TEXT_PLAIN);
request.addHeader(HttpHeaders.ACCEPT_LANGUAGE, "en;q=0.6,fr;q=0.7");
response = invoke(request);
assertEquals(200, response.getStatus());
assertEquals(MediaType.TEXT_PLAIN, response.getContentType());
assertEquals("fr", response.getHeader(HttpHeaders.CONTENT_LANGUAGE));
assertEquals(HttpHeaders.ACCEPT_LANGUAGE, response.getHeader(HttpHeaders.VARY));
}
public void testSimpleEncoding() throws Exception {
// test that a null Accept-Encoding means the only thing that can come
// back is identity
MockHttpServletRequest request =
MockRequestConstructor.constructMockRequest("GET",
"/root/encoding",
MediaType.TEXT_PLAIN);
MockHttpServletResponse response = invoke(request);
assertEquals(200, response.getStatus());
assertEquals(MediaType.TEXT_PLAIN, response.getContentType());
assertEquals("identity", response.getHeader(HttpHeaders.CONTENT_ENCODING));
assertEquals(HttpHeaders.ACCEPT_ENCODING, response.getHeader(HttpHeaders.VARY));
request =
MockRequestConstructor.constructMockRequest("GET",
"/root/encoding",
MediaType.TEXT_PLAIN);
request.addHeader(HttpHeaders.ACCEPT_ENCODING, "gzip");
response = invoke(request);
assertEquals(200, response.getStatus());
assertEquals(MediaType.TEXT_PLAIN, response.getContentType());
assertEquals("gzip", response.getHeader(HttpHeaders.CONTENT_ENCODING));
assertEquals(HttpHeaders.ACCEPT_ENCODING, response.getHeader(HttpHeaders.VARY));
request =
MockRequestConstructor.constructMockRequest("GET",
"/root/noidentityencoding",
MediaType.TEXT_PLAIN);
response = invoke(request);
assertEquals(406, response.getStatus());
assertEquals(HttpHeaders.ACCEPT_ENCODING, response.getHeader(HttpHeaders.VARY));
request =
MockRequestConstructor.constructMockRequest("GET",
"/root/noidentityencoding",
MediaType.TEXT_PLAIN);
request.addHeader(HttpHeaders.ACCEPT_ENCODING, "gzip");
response = invoke(request);
assertEquals(200, response.getStatus());
assertEquals(MediaType.TEXT_PLAIN, response.getContentType());
assertEquals("gzip", response.getHeader(HttpHeaders.CONTENT_ENCODING));
assertEquals(HttpHeaders.ACCEPT_ENCODING, response.getHeader(HttpHeaders.VARY));
}
public void testMultipleEncoding() throws Exception {
MockHttpServletRequest request =
MockRequestConstructor.constructMockRequest("GET",
"/root/encoding",
MediaType.TEXT_PLAIN);
request.addHeader(HttpHeaders.ACCEPT_ENCODING, "gzip;q=0.8,deflate;q=0.7");
MockHttpServletResponse response = invoke(request);
assertEquals(200, response.getStatus());
assertEquals(MediaType.TEXT_PLAIN, response.getContentType());
assertEquals("gzip", response.getHeader(HttpHeaders.CONTENT_ENCODING));
assertEquals(HttpHeaders.ACCEPT_ENCODING, response.getHeader(HttpHeaders.VARY));
request =
MockRequestConstructor.constructMockRequest("GET",
"/root/encoding",
MediaType.TEXT_PLAIN);
request.addHeader(HttpHeaders.ACCEPT_ENCODING, "deflate;q=0.8,gzip;q=0.7");
response = invoke(request);
assertEquals(200, response.getStatus());
assertEquals(MediaType.TEXT_PLAIN, response.getContentType());
assertEquals("deflate", response.getHeader(HttpHeaders.CONTENT_ENCODING));
assertEquals(HttpHeaders.ACCEPT_ENCODING, response.getHeader(HttpHeaders.VARY));
}
public void testCharset() throws Exception {
// test that a null Accept-Charset means iso-8859-1 is automatically
// chosen
MockHttpServletRequest request =
MockRequestConstructor.constructMockRequest("GET",
"/root/charset",
MediaType.TEXT_PLAIN);
MockHttpServletResponse response = invoke(request);
assertEquals(200, response.getStatus());
assertEquals(MediaType.TEXT_PLAIN + ";charset=iso-8859-1", response.getContentType());
assertEquals(HttpHeaders.ACCEPT, response.getHeader(HttpHeaders.VARY));
/*
* due to not mentioning of iso-8859-1 and no wildcard, iso-8859-1 is
* given a q-factor of 1.0 and since it is the first in the list of
* variants, should get chosen
*/
request =
MockRequestConstructor.constructMockRequest("GET", "/root/charset", MediaType.WILDCARD);
request.addHeader(HttpHeaders.ACCEPT_CHARSET, "shift_jis");
response = invoke(request);
assertEquals(200, response.getStatus());
assertEquals(MediaType.TEXT_PLAIN + ";charset=iso-8859-1", response.getContentType());
assertEquals("Accept, Accept-Charset", response.getHeader(HttpHeaders.VARY));
request =
MockRequestConstructor.constructMockRequest("GET", "/root/charset", MediaType.WILDCARD);
request.addHeader(HttpHeaders.ACCEPT_CHARSET, "shift_jis, *;q=0.5");
response = invoke(request);
assertEquals(200, response.getStatus());
assertEquals(MediaType.TEXT_PLAIN + ";charset=shift_jis", response.getContentType());
assertEquals("Accept, Accept-Charset", response.getHeader(HttpHeaders.VARY));
request =
MockRequestConstructor.constructMockRequest("GET", "/root/charset", MediaType.WILDCARD);
request.addHeader(HttpHeaders.ACCEPT_CHARSET, "SHIFT_jis, *;q=0.5");
response = invoke(request);
assertEquals(200, response.getStatus());
assertEquals(MediaType.TEXT_PLAIN + ";charset=shift_jis", response.getContentType());
assertEquals("Accept, Accept-Charset", response.getHeader(HttpHeaders.VARY));
request =
MockRequestConstructor.constructMockRequest("GET", "/root/charset", MediaType.WILDCARD);
request.addHeader(HttpHeaders.ACCEPT_CHARSET, "shift_jis, iso-8859-1;q=0.5");
response = invoke(request);
assertEquals(200, response.getStatus());
assertEquals(MediaType.TEXT_PLAIN + ";charset=shift_jis", response.getContentType());
assertEquals("Accept, Accept-Charset", response.getHeader(HttpHeaders.VARY));
request =
MockRequestConstructor.constructMockRequest("GET", "/root/charset", MediaType.WILDCARD);
request.addHeader(HttpHeaders.ACCEPT_CHARSET, "iso-8859-1");
response = invoke(request);
assertEquals(200, response.getStatus());
assertEquals(MediaType.TEXT_PLAIN + ";charset=iso-8859-1", response.getContentType());
assertEquals("Accept, Accept-Charset", response.getHeader(HttpHeaders.VARY));
/*
* due to not mentioning of iso-8859-1 and no wildcard, iso-8859-1 is
* given a q-factor of 1.0
*/
request =
MockRequestConstructor.constructMockRequest("GET",
"/root/charset",
MediaType.TEXT_PLAIN);
request.addHeader(HttpHeaders.ACCEPT_CHARSET, "abcd");
response = invoke(request);
assertEquals(200, response.getStatus());
assertEquals(MediaType.TEXT_PLAIN + ";charset=iso-8859-1", response.getContentType());
assertEquals("Accept, Accept-Charset", response.getHeader(HttpHeaders.VARY));
}
public void testSimpleMultipleAcceptHeaders() throws Exception {
MockHttpServletRequest request =
MockRequestConstructor.constructMockRequest("GET",
"/root/multipleheaders",
MediaType.TEXT_PLAIN + ";q=1.0,"
+ MediaType.APPLICATION_XML
+ ";q=0.8");
request.addHeader(HttpHeaders.ACCEPT_ENCODING, "gzip;q=0.8,deflate;q=0.7");
request.addHeader(HttpHeaders.ACCEPT_LANGUAGE, "en-us");
MockHttpServletResponse response = invoke(request);
assertEquals(200, response.getStatus());
assertEquals(MediaType.TEXT_PLAIN, response.getContentType());
assertEquals("gzip", response.getHeader(HttpHeaders.CONTENT_ENCODING));
assertEquals("en_US", response.getHeader(HttpHeaders.CONTENT_LANGUAGE));
assertEquals(HttpHeaders.ACCEPT + ", "
+ HttpHeaders.ACCEPT_LANGUAGE
+ ", "
+ HttpHeaders.ACCEPT_ENCODING, response.getHeader(HttpHeaders.VARY));
request =
MockRequestConstructor.constructMockRequest("GET",
"/root/multipleheaders",
MediaType.TEXT_PLAIN + ";q=0.9,"
+ MediaType.APPLICATION_XML
+ ";q=1.0");
request.addHeader(HttpHeaders.ACCEPT_ENCODING, "deflate;q=0.8,gzip;q=0.7");
request.addHeader(HttpHeaders.ACCEPT_LANGUAGE, "en-us;q=0.9,fr;q=1.0");
response = invoke(request);
assertEquals(200, response.getStatus());
assertEquals(MediaType.APPLICATION_XML, response.getContentType());
assertEquals("deflate", response.getHeader(HttpHeaders.CONTENT_ENCODING));
assertEquals("fr", response.getHeader(HttpHeaders.CONTENT_LANGUAGE));
assertEquals(HttpHeaders.ACCEPT + ", "
+ HttpHeaders.ACCEPT_LANGUAGE
+ ", "
+ HttpHeaders.ACCEPT_ENCODING, response.getHeader(HttpHeaders.VARY));
request =
MockRequestConstructor.constructMockRequest("GET",
"/root/multipleheaders",
"text/*" + ";q=0.9,"
+ MediaType.APPLICATION_XML
+ ";q=1.0");
request.addHeader(HttpHeaders.ACCEPT_LANGUAGE, "fr;q=1.0, en-us;q=0.9");
response = invoke(request);
assertEquals(200, response.getStatus());
assertEquals(MediaType.APPLICATION_XML, response.getContentType());
assertEquals("fr", response.getHeader(HttpHeaders.CONTENT_LANGUAGE));
assertEquals(HttpHeaders.ACCEPT + ", "
+ HttpHeaders.ACCEPT_LANGUAGE
+ ", "
+ HttpHeaders.ACCEPT_ENCODING, response.getHeader(HttpHeaders.VARY));
}
public void testDefaultCharset() throws Exception {
MockHttpServletRequest request =
MockRequestConstructor.constructMockRequest("GET",
"/root/defaultcharset",
MediaType.TEXT_PLAIN);
MockHttpServletResponse response = invoke(request);
assertEquals(MediaType.TEXT_PLAIN, response.getContentType());
}
public void testMoreSimpleMultipleAcceptHeaders() throws Exception {
MockHttpServletRequest request =
MockRequestConstructor.constructMockRequest("GET",
"/root/moremultipleheaders",
MediaType.TEXT_PLAIN + ";q=1.0,"
+ MediaType.APPLICATION_XML
+ ";q=0.8");
request.addHeader(HttpHeaders.ACCEPT_ENCODING, "gzip;q=0.8,deflate;q=0.7");
request.addHeader(HttpHeaders.ACCEPT_LANGUAGE, "en-us");
MockHttpServletResponse response = invoke(request);
assertEquals(200, response.getStatus());
assertEquals(MediaType.TEXT_PLAIN + ";charset=shift_jis", response.getContentType());
assertEquals("gzip", response.getHeader(HttpHeaders.CONTENT_ENCODING));
assertEquals("en_US", response.getHeader(HttpHeaders.CONTENT_LANGUAGE));
assertEquals(HttpHeaders.ACCEPT + ", "
+ HttpHeaders.ACCEPT_LANGUAGE
+ ", "
+ HttpHeaders.ACCEPT_ENCODING, response.getHeader(HttpHeaders.VARY));
request =
MockRequestConstructor.constructMockRequest("GET",
"/root/moremultipleheaders",
MediaType.TEXT_PLAIN + ";q=0.9,"
+ MediaType.APPLICATION_XML
+ ";q=1.0");
request.addHeader(HttpHeaders.ACCEPT_ENCODING, "deflate;q=0.8,gzip;q=0.7");
request.addHeader(HttpHeaders.ACCEPT_LANGUAGE, "en-us;q=0.9,fr;q=1.0");
response = invoke(request);
assertEquals(200, response.getStatus());
assertEquals(MediaType.APPLICATION_XML, response.getContentType());
assertEquals("deflate", response.getHeader(HttpHeaders.CONTENT_ENCODING));
assertEquals("fr", response.getHeader(HttpHeaders.CONTENT_LANGUAGE));
assertEquals(HttpHeaders.ACCEPT + ", "
+ HttpHeaders.ACCEPT_LANGUAGE
+ ", "
+ HttpHeaders.ACCEPT_ENCODING, response.getHeader(HttpHeaders.VARY));
request =
MockRequestConstructor.constructMockRequest("GET",
"/root/moremultipleheaders",
"text/*" + ";q=0.9,"
+ MediaType.APPLICATION_XML
+ ";q=1.0");
request.addHeader(HttpHeaders.ACCEPT_LANGUAGE, "fr;q=1.0, en-us;q=0.9");
response = invoke(request);
assertEquals(200, response.getStatus());
assertEquals(MediaType.APPLICATION_XML, response.getContentType());
assertEquals("fr", response.getHeader(HttpHeaders.CONTENT_LANGUAGE));
assertEquals(HttpHeaders.ACCEPT + ", "
+ HttpHeaders.ACCEPT_LANGUAGE
+ ", "
+ HttpHeaders.ACCEPT_ENCODING, response.getHeader(HttpHeaders.VARY));
request =
MockRequestConstructor.constructMockRequest("GET",
"/root/moremultipleheaders",
"text/*" + ";q=0.9,"
+ MediaType.APPLICATION_XML
+ ";q=1.0");
request.addHeader(HttpHeaders.ACCEPT_LANGUAGE, "fr;q=1.0, en-us;q=0.9");
request.addHeader(HttpHeaders.ACCEPT_CHARSET, "shift_jis, *;q=0.8");
response = invoke(request);
assertEquals(200, response.getStatus());
assertEquals(MediaType.APPLICATION_XML, response.getContentType());
assertEquals("fr", response.getHeader(HttpHeaders.CONTENT_LANGUAGE));
assertEquals(HttpHeaders.ACCEPT + ", "
+ HttpHeaders.ACCEPT_LANGUAGE
+ ", "
+ HttpHeaders.ACCEPT_ENCODING, response.getHeader(HttpHeaders.VARY));
request =
MockRequestConstructor.constructMockRequest("GET",
"/root/moremultipleheaders",
"text/*" + ";q=0.9,"
+ MediaType.APPLICATION_XML
+ ";q=0.8");
request.addHeader(HttpHeaders.ACCEPT_LANGUAGE, "fr;q=1.0, en-us;q=0.9");
request.addHeader(HttpHeaders.ACCEPT_CHARSET, "shift_jis, *;q=0.8");
response = invoke(request);
assertEquals(200, response.getStatus());
assertEquals(MediaType.TEXT_PLAIN + ";charset=shift_jis", response.getContentType());
assertEquals("fr", response.getHeader(HttpHeaders.CONTENT_LANGUAGE));
assertEquals(HttpHeaders.ACCEPT + ", "
+ HttpHeaders.ACCEPT_LANGUAGE
+ ", "
+ HttpHeaders.ACCEPT_ENCODING
+ ", "
+ HttpHeaders.ACCEPT_CHARSET, response.getHeader(HttpHeaders.VARY));
request =
MockRequestConstructor.constructMockRequest("GET",
"/root/moremultipleheaders",
"text/*" + ";q=0.9,"
+ MediaType.APPLICATION_XML
+ ";q=0.8");
request.addHeader(HttpHeaders.ACCEPT_LANGUAGE, "fr;q=1.0, en-us;q=0.9");
request.addHeader(HttpHeaders.ACCEPT_CHARSET, "shift_jis;q=0.7");
response = invoke(request);
assertEquals(200, response.getStatus());
assertEquals(MediaType.TEXT_PLAIN + ";charset=iso-8859-1", response.getContentType());
assertEquals("fr", response.getHeader(HttpHeaders.CONTENT_LANGUAGE));
assertEquals(HttpHeaders.ACCEPT + ", "
+ HttpHeaders.ACCEPT_LANGUAGE
+ ", "
+ HttpHeaders.ACCEPT_ENCODING
+ ", "
+ HttpHeaders.ACCEPT_CHARSET, response.getHeader(HttpHeaders.VARY));
}
}