@Test public void ambiguousProducesPreflightRequest() throws Exception { this.headers.add(HttpHeaders.ACCESS_CONTROL_REQUEST_METHOD, "GET"); ResponseEntity<String> entity = performOptions("/ambiguous-produces", this.headers, String.class); assertEquals(HttpStatus.OK, entity.getStatusCode()); assertEquals("http://site1.com", entity.getHeaders().getAccessControlAllowOrigin()); assertArrayEquals(new HttpMethod[] {HttpMethod.GET}, entity.getHeaders().getAccessControlAllowMethods().toArray()); assertTrue(entity.getHeaders().getAccessControlAllowCredentials()); }
@Test public void preFlightRequestWithCorsEnabled() throws Exception { this.headers.add(HttpHeaders.ACCESS_CONTROL_REQUEST_METHOD, "GET"); ResponseEntity<String> entity = performOptions("/cors", this.headers, String.class); assertEquals(HttpStatus.OK, entity.getStatusCode()); assertEquals("*", entity.getHeaders().getAccessControlAllowOrigin()); assertThat(entity.getHeaders().getAccessControlAllowMethods(), contains(HttpMethod.GET, HttpMethod.HEAD, HttpMethod.POST)); }
@Test public void testRequestToHeaderSettingHandler() throws Exception { URI url = new URI("http://localhost:" + this.port + "/header"); RequestEntity<Void> request = RequestEntity.get(url).build(); ResponseEntity<byte[]> response = new RestTemplate().exchange(request, byte[].class); assertEquals(HttpStatus.OK, response.getStatusCode()); assertEquals("bar", response.getHeaders().getFirst("foo")); }
@Test public void getEntity() throws Exception { Future<ResponseEntity<String>> future = template.getForEntity(baseUrl + "/{method}", String.class, "get"); ResponseEntity<String> entity = future.get(); assertEquals("Invalid content", helloWorld, entity.getBody()); assertFalse("No headers", entity.getHeaders().isEmpty()); assertEquals("Invalid content-type", textContentType, entity.getHeaders().getContentType()); assertEquals("Invalid status code", HttpStatus.OK, entity.getStatusCode()); }
@Test public void actualRequestWithCustomizedAnnotation() throws Exception { ResponseEntity<String> entity = performGet("/customized", this.headers, String.class); assertEquals(HttpStatus.OK, entity.getStatusCode()); assertEquals("http://site1.com", entity.getHeaders().getAccessControlAllowOrigin()); assertFalse(entity.getHeaders().getAccessControlAllowCredentials()); assertEquals(-1, entity.getHeaders().getAccessControlMaxAge()); assertEquals("customized", entity.getBody()); }
@Test public void byteBufferResponseBodyWithMono() throws Exception { String expected = "Hello!"; ResponseEntity<String> responseEntity = performGet("/raw-response/mono", new HttpHeaders(), String.class); assertEquals(6, responseEntity.getHeaders().getContentLength()); assertEquals(expected, responseEntity.getBody()); }
@Test public void actualRequestWithDefaultAnnotationAndNoOrigin() throws Exception { HttpHeaders headers = new HttpHeaders(); ResponseEntity<String> entity = performGet("/default", headers, String.class); assertEquals(HttpStatus.OK, entity.getStatusCode()); assertNull(entity.getHeaders().getAccessControlAllowOrigin()); assertEquals("default", entity.getBody()); }
@Test // SPR-16172 public void personResponseBodyWithMonoResponseEntityXml() throws Exception { String url = "/person-response/mono-response-entity-xml"; ResponseEntity<String> entity = performGet(url, new HttpHeaders(), String.class); String actual = entity.getBody(); assertEquals(91, entity.getHeaders().getContentLength()); assertEquals("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>" + "<person><name>Robert</name></person>", actual); }
@Test public void getEntity() { ResponseEntity<String> entity = template.getForEntity(baseUrl + "/{method}", String.class, "get"); assertEquals("Invalid content", helloWorld, entity.getBody()); assertFalse("No headers", entity.getHeaders().isEmpty()); assertEquals("Invalid content-type", textContentType, entity.getHeaders().getContentType()); assertEquals("Invalid status code", HttpStatus.OK, entity.getStatusCode()); }
@Test public void getEntityFromCompletable() throws Exception { ListenableFuture<ResponseEntity<String>> future = template.getForEntity(baseUrl + "/{method}", String.class, "get"); ResponseEntity<String> entity = future.completable().get(); assertEquals("Invalid content", helloWorld, entity.getBody()); assertFalse("No headers", entity.getHeaders().isEmpty()); assertEquals("Invalid content-type", textContentType, entity.getHeaders().getContentType()); assertEquals("Invalid status code", HttpStatus.OK, entity.getStatusCode()); }
@Test public void createdLocation() throws URISyntaxException { URI location = new URI("location"); ResponseEntity<Void> responseEntity = ResponseEntity.created(location).build(); assertNotNull(responseEntity); assertEquals(HttpStatus.CREATED, responseEntity.getStatusCode()); assertTrue(responseEntity.getHeaders().containsKey("Location")); assertEquals(location.toString(), responseEntity.getHeaders().getFirst("Location")); assertNull(responseEntity.getBody()); ResponseEntity.created(location).header("MyResponseHeader", "MyValue").body("Hello World"); }
@Test public void Etagheader() throws URISyntaxException { ResponseEntity<Void> responseEntity = ResponseEntity.ok().eTag("\"foo\"").build(); assertEquals("\"foo\"", responseEntity.getHeaders().getETag()); responseEntity = ResponseEntity.ok().eTag("foo").build(); assertEquals("\"foo\"", responseEntity.getHeaders().getETag()); responseEntity = ResponseEntity.ok().eTag("W/\"foo\"").build(); assertEquals("W/\"foo\"", responseEntity.getHeaders().getETag()); }
@Test // SPR-17506 public void personResponseBodyWithEmptyMono() throws Exception { ResponseEntity<Person> responseEntity = performGet("/person-response/mono-empty", JSON, Person.class); assertEquals(0, responseEntity.getHeaders().getContentLength()); assertNull(responseEntity.getBody()); // As we're on the same connection, the 2nd request proves server response handling // did complete after the 1st request.. responseEntity = performGet("/person-response/mono-empty", JSON, Person.class); assertEquals(0, responseEntity.getHeaders().getContentLength()); assertNull(responseEntity.getBody()); }
@Test public void customOriginDefinedViaValueAttribute() throws Exception { ResponseEntity<String> entity = performGet("/origin-value-attribute", this.headers, String.class); assertEquals(HttpStatus.OK, entity.getStatusCode()); assertEquals("http://site1.com", entity.getHeaders().getAccessControlAllowOrigin()); assertEquals("value-attribute", entity.getBody()); }
@Test public void handleHttpMediaTypeNotSupported() { List<MediaType> acceptable = Arrays.asList(MediaType.APPLICATION_ATOM_XML, MediaType.APPLICATION_XML); Exception ex = new HttpMediaTypeNotSupportedException(MediaType.APPLICATION_JSON, acceptable); ResponseEntity<Object> responseEntity = testException(ex); assertEquals(acceptable, responseEntity.getHeaders().getAccept()); }
@Test public void headersCopy() { HttpHeaders customHeaders = new HttpHeaders(); customHeaders.set("X-CustomHeader", "vale"); ResponseEntity<Void> responseEntity = ResponseEntity.ok().headers(customHeaders).build(); HttpHeaders responseHeaders = responseEntity.getHeaders(); assertEquals(HttpStatus.OK, responseEntity.getStatusCode()); assertEquals(1, responseHeaders.size()); assertEquals(1, responseHeaders.get("X-CustomHeader").size()); assertEquals("vale", responseHeaders.getFirst("X-CustomHeader")); }
@Test public void getEntityCallbackWithLambdas() throws Exception { ListenableFuture<ResponseEntity<String>> futureEntity = template.getForEntity(baseUrl + "/{method}", String.class, "get"); futureEntity.addCallback((entity) -> { assertEquals("Invalid content", helloWorld, entity.getBody()); assertFalse("No headers", entity.getHeaders().isEmpty()); assertEquals("Invalid content-type", textContentType, entity.getHeaders().getContentType()); assertEquals("Invalid status code", HttpStatus.OK, entity.getStatusCode()); }, ex -> fail(ex.getMessage())); waitTillDone(futureEntity); }
@Test public void personResponseBodyWithList() throws Exception { List<?> expected = asList(new Person("Robert"), new Person("Marie")); ResponseEntity<List<Person>> entity = performGet("/person-response/list", JSON, PERSON_LIST); assertEquals(36, entity.getHeaders().getContentLength()); assertEquals(expected, entity.getBody()); }
@Test public void personResponseBody() throws Exception { Person expected = new Person("Robert"); ResponseEntity<Person> responseEntity = performGet("/person-response/person", JSON, Person.class); assertEquals(17, responseEntity.getHeaders().getContentLength()); assertEquals(expected, responseEntity.getBody()); }
@Test public void personResponseBodyWithSingle() throws Exception { Person expected = new Person("Robert"); ResponseEntity<Person> entity = performGet("/person-response/single", JSON, Person.class); assertEquals(17, entity.getHeaders().getContentLength()); assertEquals(expected, entity.getBody()); }