INT-1662 added FROM tests to support this issue

This commit is contained in:
Oleg Zhurakousky
2010-12-08 14:17:10 -05:00
parent 3775efc616
commit cdb3be5ea2
3 changed files with 690 additions and 1 deletions

View File

@@ -388,7 +388,7 @@ public class DefaultHttpHeaderMapper implements HeaderMapper<HttpHeaders> {
: StringUtils.commaDelimitedListToStringArray((String) value);
Set<HttpMethod> allowedMethods = new HashSet<HttpMethod>();
for (String next : values) {
allowedMethods.add(HttpMethod.valueOf(next));
allowedMethods.add(HttpMethod.valueOf(next.trim()));
}
target.setAllow(allowedMethods);
}

View File

@@ -0,0 +1,246 @@
/**
*
*/
package org.springframework.integration.http.support;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertTrue;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import org.junit.Ignore;
import org.junit.Test;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.integration.MessageHeaders;
import org.springframework.integration.mapping.HeaderMapper;
import org.springframework.util.CollectionUtils;
import com.sun.jndi.toolkit.url.Uri;
/**
* @author ozhurakousky
*
*/
public class DefaultHttpHeaderMapperFromMessageInboundTests {
// Allow tests
@Test(expected=IllegalArgumentException.class)
public void validateAllowWithWrongMethodName(){
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.inboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Allow", "bar");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
}
@Test
public void validateAllowAsString(){
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.inboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Allow", "GET");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertEquals(1, headers.getAllow().size());
assertEquals(HttpMethod.GET, headers.getAllow().iterator().next());
}
@Test
public void validateAllowAsHttpMethod(){
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.inboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Allow", HttpMethod.GET);
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertEquals(1, headers.getAllow().size());
assertEquals(HttpMethod.GET, headers.getAllow().iterator().next());
}
@Test
public void validateAllowAsDelimitedString(){
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.inboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Allow", "GET, POST");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertEquals(2, headers.getAllow().size());
assertTrue(headers.getAllow().contains(HttpMethod.GET));
assertTrue(headers.getAllow().contains(HttpMethod.POST));
}
@Test
public void validateAllowAsStringArray(){
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.inboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Allow", new String[]{"GET", "POST"});
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertEquals(2, headers.getAllow().size());
assertTrue(headers.getAllow().contains(HttpMethod.GET));
assertTrue(headers.getAllow().contains(HttpMethod.POST));
}
@Test
@Ignore // we may want to allow that for consistency
public void validateAllowAsHttpMethodArray(){
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.inboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Allow", new HttpMethod[]{HttpMethod.GET, HttpMethod.POST});
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertEquals(2, headers.getAllow().size());
assertTrue(headers.getAllow().contains(HttpMethod.GET));
assertTrue(headers.getAllow().contains(HttpMethod.POST));
}
@Test
public void validateAllowAsCollectionOfString(){
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.inboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Allow", CollectionUtils.arrayToList(new String[]{"GET", "POST"}));
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertEquals(2, headers.getAllow().size());
assertTrue(headers.getAllow().contains(HttpMethod.GET));
assertTrue(headers.getAllow().contains(HttpMethod.POST));
}
@Test
public void validateAllowAsCollectionOfHttpMethods(){
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.inboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Allow", CollectionUtils.arrayToList(new HttpMethod[]{HttpMethod.GET, HttpMethod.POST}));
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertEquals(2, headers.getAllow().size());
assertTrue(headers.getAllow().contains(HttpMethod.GET));
assertTrue(headers.getAllow().contains(HttpMethod.POST));
}
// Cache-Control tested as part of DefaultHttpHeaderMapperFromMessageOutboundTests
// Content-Length tested as part of DefaultHttpHeaderMapperFromMessageOutboundTests
// Content-Type tested as part of DefaultHttpHeaderMapperFromMessageOutboundTests
// Date tested as part of DefaultHttpHeaderMapperFromMessageOutboundTests
// ETag tests
@Test
public void validateETag(){
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.inboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("ETag", "1234");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertEquals("1234", headers.getETag());
}
// Expires tests
@Test
public void validateExpiresAsNumber() throws ParseException{
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.inboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Expires", 12345678);
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.US);
assertEquals(simpleDateFormat.parse("Thu, 01 Jan 1970 03:25:45 GMT").getTime(), headers.getExpires());
}
@Test
public void validateExpiresAsString() throws ParseException{
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.inboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Expires", "12345678");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.US);
assertEquals(simpleDateFormat.parse("Thu, 01 Jan 1970 03:25:45 GMT").getTime(), headers.getExpires());
}
@Test
public void validateExpiresAsDate() throws ParseException{
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.inboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Expires", new Date(12345678));
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.US);
assertEquals(simpleDateFormat.parse("Thu, 01 Jan 1970 03:25:45 GMT").getTime(), headers.getExpires());
}
// Last-Modified tests
@Test
public void validateLastModifiedAsNumber() throws ParseException{
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.inboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Last-Modified", 12345678);
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.US);
assertEquals(simpleDateFormat.parse("Thu, 01 Jan 1970 03:25:45 GMT").getTime(), headers.getLastModified());
}
@Test
public void validateLastModifiedAsString() throws ParseException{
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.inboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Last-Modified", "12345678");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.US);
assertEquals(simpleDateFormat.parse("Thu, 01 Jan 1970 03:25:45 GMT").getTime(), headers.getLastModified());
}
@Test
public void validateLastModifiedAsDate() throws ParseException{
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.inboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Last-Modified", new Date(12345678));
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.US);
assertEquals(simpleDateFormat.parse("Thu, 01 Jan 1970 03:25:45 GMT").getTime(), headers.getLastModified());
}
// Location tests
@Test
public void validateLocation() throws Exception{
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.inboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Location", "http://foo.com");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertEquals(new Uri("http://foo.com").toString(), headers.getLocation().toString());
}
// Pragma tested as part of DefaultHttpHeaderMapperFromMessageOutboundTests
}

View File

@@ -0,0 +1,443 @@
/**
*
*/
package org.springframework.integration.http.support;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertTrue;
import java.nio.charset.Charset;
import java.nio.charset.UnsupportedCharsetException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import org.junit.Ignore;
import org.junit.Test;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.integration.MessageHeaders;
import org.springframework.integration.mapping.HeaderMapper;
import org.springframework.util.CollectionUtils;
/**
* @author ozhurakousky
*
*/
public class DefaultHttpHeaderMapperFromMessageOutboundTests {
// ACCEPT tests
@Test(expected=IllegalArgumentException.class)
public void validateAcceptHeaderWithNoSlash(){
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Accept", "bar");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
}
@Test
public void validateAcceptHeaderSingleString(){
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Accept", "bar/foo");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertEquals("bar", headers.getAccept().get(0).getType());
assertEquals("foo", headers.getAccept().get(0).getSubtype());
}
@Test
public void validateAcceptHeaderSingleMediaType(){
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Accept", new MediaType("bar", "foo"));
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertEquals("bar", headers.getAccept().get(0).getType());
assertEquals("foo", headers.getAccept().get(0).getSubtype());
}
@Test
public void validateAcceptHeaderMultipleAsDelimitedString(){
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Accept", "bar/foo, text/xml");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertEquals(2, headers.getAccept().size());
assertEquals("bar/foo", headers.getAccept().get(0).toString());
assertEquals("text/xml", headers.getAccept().get(1).toString());
}
@Test
public void validateAcceptHeaderMultipleAsStringArray(){
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Accept", new String[]{"bar/foo", "text/xml"});
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertEquals(2, headers.getAccept().size());
assertEquals("bar/foo", headers.getAccept().get(0).toString());
assertEquals("text/xml", headers.getAccept().get(1).toString());
}
@Test
public void validateAcceptHeaderMultipleAsStringCollection(){
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Accept", CollectionUtils.arrayToList(new String[]{"bar/foo", "text/xml"}));
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertEquals(2, headers.getAccept().size());
assertEquals("bar/foo", headers.getAccept().get(0).toString());
assertEquals("text/xml", headers.getAccept().get(1).toString());
}
@Test
public void validateAcceptHeaderMultipleAsMediatypeCollection(){
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Accept",
CollectionUtils.arrayToList(new MediaType[]{new MediaType("bar", "foo"), new MediaType("text", "xml")}));
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertEquals(2, headers.getAccept().size());
assertEquals("bar/foo", headers.getAccept().get(0).toString());
assertEquals("text/xml", headers.getAccept().get(1).toString());
}
// ACCEPT_CHARSET tests
@Test(expected=UnsupportedCharsetException.class)
public void validateAcceptCharsetHeaderWithWrongCharset(){
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Accept-Charset", "foo");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
}
@Test
public void validateAcceptCharsetHeaderSingleString(){
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Accept-Charset", "UTF-8");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertEquals(1, headers.getAcceptCharset().size());
assertEquals("UTF-8", headers.getAcceptCharset().get(0).displayName());
}
@Test
public void validateAcceptCharsetHeaderSingleCharset(){
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Accept-Charset", Charset.forName("UTF-8"));
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertEquals(1, headers.getAcceptCharset().size());
assertEquals("UTF-8", headers.getAcceptCharset().get(0).displayName());
}
@Test
@Ignore // Since we allow coma delimited strings for ACCEPT, we may allow it here
public void validateAcceptCharsetHeaderMultipleAsDelimitedString(){
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Accept-Charset", "UTF-8, ISO-8859-1");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertEquals(2, headers.getAcceptCharset().size());
// validate contains since the order is not enforsed
assertTrue(headers.getAcceptCharset().contains(Charset.forName("UTF-8")));
assertTrue(headers.getAcceptCharset().contains(Charset.forName("ISO-8859-1")));
}
@Test
@Ignore // we may want to support String[] as well
public void validateAcceptCharsetHeaderMultipleAsStringArray(){
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Accept-Charset", new String[]{"UTF-8", "ISO-8859-1"});
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertEquals(2, headers.getAcceptCharset().size());
// validate contains since the order is not enforsed
assertTrue(headers.getAcceptCharset().contains(Charset.forName("UTF-8")));
assertTrue(headers.getAcceptCharset().contains(Charset.forName("ISO-8859-1")));
}
@Test
public void validateAcceptCharsetHeaderMultipleAsCollectionOfStrings(){
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Accept-Charset", CollectionUtils.arrayToList(new String[]{"UTF-8", "ISO-8859-1"}));
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertEquals(2, headers.getAcceptCharset().size());
// validate contains since the order is not enforsed
assertTrue(headers.getAcceptCharset().contains(Charset.forName("UTF-8")));
assertTrue(headers.getAcceptCharset().contains(Charset.forName("ISO-8859-1")));
}
@Test
public void validateAcceptCharsetHeaderMultipleAsCollectionOfCharsets(){
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Accept-Charset",
CollectionUtils.arrayToList(new Charset[]{Charset.forName("UTF-8"), Charset.forName("ISO-8859-1")}));
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertEquals(2, headers.getAcceptCharset().size());
// validate contains since the order is not enforsed
assertTrue(headers.getAcceptCharset().contains(Charset.forName("UTF-8")));
assertTrue(headers.getAcceptCharset().contains(Charset.forName("ISO-8859-1")));
}
// Cache-Control tests
@Test
public void validateCacheControl(){
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Cache-Control", "foo");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertEquals("foo", headers.getCacheControl());
}
// Content-Length tests
@Test
public void validateContentLengthAsString(){
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Content-Length", "1");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertEquals(1, headers.getContentLength());
}
@Test
public void validateContentLengthAsNumber(){
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Content-Length", 1);
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertEquals(1, headers.getContentLength());
}
@Test(expected=NumberFormatException.class)
public void validateContentLengthAsNonNumericString(){
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Content-Length", "foo");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
}
// Content-Type test
@Test(expected=IllegalArgumentException.class)
public void validateContentTypeWrongValue(){
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Content-Type", "foo");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
}
@Test
public void validateContentTypeAsString(){
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Content-Type", "text/html");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertEquals("text", headers.getContentType().getType());
assertEquals("html", headers.getContentType().getSubtype());
}
@Test
public void validateContentTypeAsMediaType(){
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Content-Type", new MediaType("text", "html"));
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertEquals("text", headers.getContentType().getType());
assertEquals("html", headers.getContentType().getSubtype());
}
// Date test
@Test
public void validateDateAsNumber() throws ParseException{
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Date", 12345678);
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.US);
assertEquals(simpleDateFormat.parse("Thu, 01 Jan 1970 03:25:45 GMT").getTime(), headers.getDate());
}
@Test
public void validateDateAsString() throws ParseException{
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Date", "12345678");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.US);
assertEquals(simpleDateFormat.parse("Thu, 01 Jan 1970 03:25:45 GMT").getTime(), headers.getDate());
}
@Test
public void validateDateAsDate() throws ParseException{
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Date", new Date(12345678));
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.US);
assertEquals(simpleDateFormat.parse("Thu, 01 Jan 1970 03:25:45 GMT").getTime(), headers.getDate());
}
// If-Modified-Since tests
@Test
public void validateIfModifiedSinceAsNumber() throws ParseException{
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("If-Modified-Since", 12345678);
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.US);
assertEquals(simpleDateFormat.parse("Thu, 01 Jan 1970 03:25:45 GMT").getTime(), headers.getIfNotModifiedSince());
}
@Test
public void validateIfModifiedSinceAsString() throws ParseException{
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("If-Modified-Since", "12345678");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.US);
assertEquals(simpleDateFormat.parse("Thu, 01 Jan 1970 03:25:45 GMT").getTime(), headers.getIfNotModifiedSince());
}
@Test
public void validateIfModifiedSinceAsDate() throws ParseException{
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("If-Modified-Since", new Date(12345678));
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.US);
assertEquals(simpleDateFormat.parse("Thu, 01 Jan 1970 03:25:45 GMT").getTime(), headers.getIfNotModifiedSince());
}
// If-None-Match
@Test
public void validateIfNoneMatch() throws ParseException{
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("If-None-Match", "1234567");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertEquals(1, headers.getIfNoneMatch().size());
assertEquals("1234567", headers.getIfNoneMatch().get(0));
}
@Test
public void validateIfNoneMatchAsDelimitedString() throws ParseException{
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("If-None-Match", "1234567, 123");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertEquals(2, headers.getIfNoneMatch().size());
assertEquals("1234567", headers.getIfNoneMatch().get(0));
assertEquals("123", headers.getIfNoneMatch().get(1));
}
@Test
@Ignore // we may want to support it or throw exception
public void validateIfNoneMatchAsStringArray() throws ParseException{
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("If-None-Match", new String[]{"1234567", "123"});
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertEquals(2, headers.getIfNoneMatch().size());
assertEquals("1234567", headers.getIfNoneMatch().get(0));
assertEquals("123", headers.getIfNoneMatch().get(1));
}
@Test
public void validateIfNoneMatchAsStringCollection() throws ParseException{
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("If-None-Match", CollectionUtils.arrayToList(new String[]{"1234567", "123"}));
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertEquals(2, headers.getIfNoneMatch().size());
assertEquals("1234567", headers.getIfNoneMatch().get(0));
assertEquals("123", headers.getIfNoneMatch().get(1));
}
// Pragma tests
@Test
public void validatePragma() throws ParseException{
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Pragma", "foo");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertEquals("foo", headers.getPragma());
}
}