@Override public void close() { this.response.close(); }
@Override public void close() { this.response.close(); }
@Test public void mapNullTemplateVariable() throws Exception { mockSentRequest(GET, "http://example.com/-foo"); mockResponseStatus(HttpStatus.OK); Map<String, String> vars = new HashMap<>(2); vars.put("first", null); vars.put("last", "foo"); template.execute("http://example.com/{first}-{last}", GET, null, null, vars); verify(response).close(); }
@Test(expected = UnsupportedOperationException.class) public void headersAfterExecute() throws Exception { ClientHttpRequest request = factory.createRequest(new URI(baseUrl + "/status/ok"), HttpMethod.POST); request.getHeaders().add("MyHeader", "value"); byte[] body = "Hello World".getBytes("UTF-8"); FileCopyUtils.copy(body, request.getBody()); ClientHttpResponse response = request.execute(); try { request.getHeaders().add("MyHeader", "value"); } finally { response.close(); } }
@Test public void mapTemplateVariables() throws Exception { mockSentRequest(GET, "http://example.com/hotels/42/bookings/42"); mockResponseStatus(HttpStatus.OK); Map<String, String> vars = Collections.singletonMap("hotel", "42"); template.execute("http://example.com/hotels/{hotel}/bookings/{hotel}", GET, null, null, vars); verify(response).close(); }
@Test public void queryParameters() throws Exception { URI uri = new URI(baseUrl + "/params?param1=value¶m2=value1¶m2=value2"); ClientHttpRequest request = factory.createRequest(uri, HttpMethod.GET); ClientHttpResponse response = request.execute(); try { assertEquals("Invalid status code", HttpStatus.OK, response.getStatusCode()); } finally { response.close(); } }
@Test public void postForLocationNull() throws Exception { HttpHeaders requestHeaders = new HttpHeaders(); mockSentRequest(POST, "http://example.com", requestHeaders); mockResponseStatus(HttpStatus.OK); template.postForLocation("http://example.com", null); assertEquals("Invalid content length", 0, requestHeaders.getContentLength()); verify(response).close(); }
@Test public void putNull() throws Exception { HttpHeaders requestHeaders = new HttpHeaders(); mockSentRequest(PUT, "http://example.com", requestHeaders); mockResponseStatus(HttpStatus.OK); template.put("http://example.com", null); assertEquals("Invalid content length", 0, requestHeaders.getContentLength()); verify(response).close(); }
@Test public void delete() throws Exception { mockSentRequest(DELETE, "http://example.com"); mockResponseStatus(HttpStatus.OK); template.delete("http://example.com"); verify(response).close(); }
@Test // SPR-15201 public void uriTemplateWithTrailingSlash() throws Exception { String url = "http://example.com/spring/"; mockSentRequest(GET, url); mockResponseStatus(HttpStatus.OK); template.execute(url, GET, null, null); verify(response).close(); }
@Test public void varArgsTemplateVariables() throws Exception { mockSentRequest(GET, "http://example.com/hotels/42/bookings/21"); mockResponseStatus(HttpStatus.OK); template.execute("http://example.com/hotels/{hotel}/bookings/{booking}", GET, null, null, "42", "21"); verify(response).close(); }
@Test public void varArgsNullTemplateVariable() throws Exception { mockSentRequest(GET, "http://example.com/-foo"); mockResponseStatus(HttpStatus.OK); template.execute("http://example.com/{first}-{last}", GET, null, null, null, "foo"); verify(response).close(); }
@Test public void optionsForAllow() throws Exception { mockSentRequest(OPTIONS, "http://example.com"); mockResponseStatus(HttpStatus.OK); HttpHeaders responseHeaders = new HttpHeaders(); EnumSet<HttpMethod> expected = EnumSet.of(GET, POST); responseHeaders.setAllow(expected); given(response.getHeaders()).willReturn(responseHeaders); Set<HttpMethod> result = template.optionsForAllow("http://example.com"); assertEquals("Invalid OPTIONS result", expected, result); verify(response).close(); }
@Test public void put() throws Exception { mockTextPlainHttpMessageConverter(); mockSentRequest(PUT, "http://example.com"); mockResponseStatus(HttpStatus.OK); template.put("http://example.com", "Hello World"); verify(response).close(); }
@Test public void headForHeaders() throws Exception { mockSentRequest(HEAD, "http://example.com"); mockResponseStatus(HttpStatus.OK); HttpHeaders responseHeaders = new HttpHeaders(); given(response.getHeaders()).willReturn(responseHeaders); HttpHeaders result = template.headForHeaders("http://example.com"); assertSame("Invalid headers returned", responseHeaders, result); verify(response).close(); }
@Test public void status() throws Exception { URI uri = new URI(baseUrl + "/status/notfound"); ClientHttpRequest request = factory.createRequest(uri, HttpMethod.GET); assertEquals("Invalid HTTP method", HttpMethod.GET, request.getMethod()); assertEquals("Invalid HTTP URI", uri, request.getURI()); ClientHttpResponse response = request.execute(); try { assertEquals("Invalid status code", HttpStatus.NOT_FOUND, response.getStatusCode()); } finally { response.close(); } }
@Test public void postForLocationNoLocation() throws Exception { mockSentRequest(POST, "http://example.com"); mockTextPlainHttpMessageConverter(); mockResponseStatus(HttpStatus.OK); URI result = template.postForLocation("http://example.com", "Hello World"); assertNull("Invalid POST result", result); verify(response).close(); }
@Test public void postForObject() throws Exception { mockTextPlainHttpMessageConverter(); HttpHeaders requestHeaders = new HttpHeaders(); mockSentRequest(POST, "http://example.com", requestHeaders); mockResponseStatus(HttpStatus.OK); String expected = "42"; mockResponseBody(expected, MediaType.TEXT_PLAIN); String result = template.postForObject("http://example.com", "Hello World", String.class); assertEquals("Invalid POST result", expected, result); assertEquals("Invalid Accept header", MediaType.TEXT_PLAIN_VALUE, requestHeaders.getFirst("Accept")); verify(response).close(); }
@Test public void patchForObject() throws Exception { mockTextPlainHttpMessageConverter(); HttpHeaders requestHeaders = new HttpHeaders(); mockSentRequest(PATCH, "http://example.com", requestHeaders); mockResponseStatus(HttpStatus.OK); String expected = "42"; mockResponseBody("42", MediaType.TEXT_PLAIN); String result = template.patchForObject("http://example.com", "Hello World", String.class); assertEquals("Invalid POST result", expected, result); assertEquals("Invalid Accept header", MediaType.TEXT_PLAIN_VALUE, requestHeaders.getFirst("Accept")); verify(response).close(); }
@Test public void responseClosedAfterDisconnected() throws Exception { String body = "o\n" + "c[3000,\"Go away!\"]\n" + "a[\"foo\"]\n"; ClientHttpResponse response = response(HttpStatus.OK, body); connect(response); verify(this.webSocketHandler).afterConnectionEstablished(any()); verify(this.webSocketHandler).afterConnectionClosed(any(), any()); verifyNoMoreInteractions(this.webSocketHandler); verify(response).close(); }