/*
* Copyright 2002-2016 the original author or authors.
*
* Licensed 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.springframework.http;
import java.net.URI;
import org.junit.Test;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import static org.junit.Assert.*;
/**
* @author Arjen Poutsma
*/
public class HttpEntityTests {
@Test
public void noHeaders() {
String body = "foo";
HttpEntity<String> entity = new HttpEntity<>(body);
assertSame(body, entity.getBody());
assertTrue(entity.getHeaders().isEmpty());
}
@Test
public void httpHeaders() {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.TEXT_PLAIN);
String body = "foo";
HttpEntity<String> entity = new HttpEntity<>(body, headers);
assertEquals(body, entity.getBody());
assertEquals(MediaType.TEXT_PLAIN, entity.getHeaders().getContentType());
assertEquals("text/plain", entity.getHeaders().getFirst("Content-Type"));
}
@Test
public void multiValueMap() {
MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
map.set("Content-Type", "text/plain");
String body = "foo";
HttpEntity<String> entity = new HttpEntity<>(body, map);
assertEquals(body, entity.getBody());
assertEquals(MediaType.TEXT_PLAIN, entity.getHeaders().getContentType());
assertEquals("text/plain", entity.getHeaders().getFirst("Content-Type"));
}
@Test
public void testEquals() {
MultiValueMap<String, String> map1 = new LinkedMultiValueMap<>();
map1.set("Content-Type", "text/plain");
MultiValueMap<String, String> map2 = new LinkedMultiValueMap<>();
map2.set("Content-Type", "application/json");
assertTrue(new HttpEntity<>().equals(new HttpEntity<Object>()));
assertFalse(new HttpEntity<>(map1).equals(new HttpEntity<Object>()));
assertFalse(new HttpEntity<>().equals(new HttpEntity<Object>(map2)));
assertTrue(new HttpEntity<>(map1).equals(new HttpEntity<Object>(map1)));
assertFalse(new HttpEntity<>(map1).equals(new HttpEntity<Object>(map2)));
assertTrue(new HttpEntity<String>(null, null).equals(new HttpEntity<String>(null, null)));
assertFalse(new HttpEntity<>("foo", null).equals(new HttpEntity<String>(null, null)));
assertFalse(new HttpEntity<String>(null, null).equals(new HttpEntity<>("bar", null)));
assertTrue(new HttpEntity<>("foo", map1).equals(new HttpEntity<String>("foo", map1)));
assertFalse(new HttpEntity<>("foo", map1).equals(new HttpEntity<String>("bar", map1)));
}
@Test
public void responseEntity() {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.TEXT_PLAIN);
String body = "foo";
HttpEntity<String> httpEntity = new HttpEntity<>(body, headers);
ResponseEntity<String> responseEntity = new ResponseEntity<>(body, headers, HttpStatus.OK);
ResponseEntity<String> responseEntity2 = new ResponseEntity<>(body, headers, HttpStatus.OK);
assertEquals(body, responseEntity.getBody());
assertEquals(MediaType.TEXT_PLAIN, responseEntity.getHeaders().getContentType());
assertEquals("text/plain", responseEntity.getHeaders().getFirst("Content-Type"));
assertEquals("text/plain", responseEntity.getHeaders().getFirst("Content-Type"));
assertFalse(httpEntity.equals(responseEntity));
assertFalse(responseEntity.equals(httpEntity));
assertTrue(responseEntity.equals(responseEntity2));
assertTrue(responseEntity2.equals(responseEntity));
}
@Test
public void requestEntity() throws Exception {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.TEXT_PLAIN);
String body = "foo";
HttpEntity<String> httpEntity = new HttpEntity<>(body, headers);
RequestEntity<String> requestEntity = new RequestEntity<>(body, headers, HttpMethod.GET, new URI("/"));
RequestEntity<String> requestEntity2 = new RequestEntity<>(body, headers, HttpMethod.GET, new URI("/"));
assertEquals(body, requestEntity.getBody());
assertEquals(MediaType.TEXT_PLAIN, requestEntity.getHeaders().getContentType());
assertEquals("text/plain", requestEntity.getHeaders().getFirst("Content-Type"));
assertEquals("text/plain", requestEntity.getHeaders().getFirst("Content-Type"));
assertFalse(httpEntity.equals(requestEntity));
assertFalse(requestEntity.equals(httpEntity));
assertTrue(requestEntity.equals(requestEntity2));
assertTrue(requestEntity2.equals(requestEntity));
}
}