fix live test (#2143)
* minor logging fix * spring security sso * use basic auth * use form login * cleanup * cleanup * final cleanup * second client app for sso * spring boot bootstrap * add logic * cleanup * add simple controller * add thymeleaf and security * minor fix * minor fix * add more boot properties * fix live test
This commit is contained in:
@@ -25,6 +25,7 @@ import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.http.client.ClientHttpRequestFactory;
|
||||
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
|
||||
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
|
||||
import org.springframework.web.client.HttpClientErrorException;
|
||||
import org.springframework.web.client.RequestCallback;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
@@ -41,20 +42,22 @@ public class RestTemplateBasicLiveTest {
|
||||
@Before
|
||||
public void beforeTest() {
|
||||
restTemplate = new RestTemplate();
|
||||
restTemplate.setMessageConverters(Arrays.asList(new MappingJackson2HttpMessageConverter()));
|
||||
}
|
||||
|
||||
// GET
|
||||
|
||||
@Test
|
||||
public void givenResourceUrl_whenSendGetForRequestEntity_thenStatusOk() throws IOException {
|
||||
final ResponseEntity<String> response = restTemplate.getForEntity(fooResourceUrl + "/1", String.class);
|
||||
final ResponseEntity<Foo> response = restTemplate.getForEntity(fooResourceUrl + "/1", Foo.class);
|
||||
|
||||
assertThat(response.getStatusCode(), equalTo(HttpStatus.OK));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenResourceUrl_whenSendGetForRequestEntity_thenBodyCorrect() throws IOException {
|
||||
final ResponseEntity<String> response = restTemplate.getForEntity(fooResourceUrl + "/1", String.class);
|
||||
final RestTemplate template = new RestTemplate();
|
||||
final ResponseEntity<String> response = template.getForEntity(fooResourceUrl + "/1", String.class);
|
||||
|
||||
final ObjectMapper mapper = new ObjectMapper();
|
||||
final JsonNode root = mapper.readTree(response.getBody());
|
||||
@@ -76,7 +79,8 @@ public class RestTemplateBasicLiveTest {
|
||||
public void givenFooService_whenCallHeadForHeaders_thenReceiveAllHeadersForThatResource() {
|
||||
final HttpHeaders httpHeaders = restTemplate.headForHeaders(fooResourceUrl);
|
||||
|
||||
assertTrue(httpHeaders.getContentType().includes(MediaType.APPLICATION_JSON));
|
||||
assertTrue(httpHeaders.getContentType()
|
||||
.includes(MediaType.APPLICATION_JSON));
|
||||
}
|
||||
|
||||
// POST
|
||||
@@ -98,15 +102,13 @@ public class RestTemplateBasicLiveTest {
|
||||
|
||||
@Test
|
||||
public void givenFooService_whenPostResource_thenResourceIsCreated() {
|
||||
final RestTemplate template = new RestTemplate();
|
||||
final Foo foo = new Foo("bar");
|
||||
final ResponseEntity<Foo> response = restTemplate.postForEntity(fooResourceUrl, foo, Foo.class);
|
||||
|
||||
final HttpEntity<Foo> request = new HttpEntity<>(new Foo("bar"));
|
||||
|
||||
final ResponseEntity<Foo> response = template.exchange(fooResourceUrl, HttpMethod.POST, request, Foo.class);
|
||||
assertThat(response.getStatusCode(), is(HttpStatus.CREATED));
|
||||
final Foo foo = response.getBody();
|
||||
assertThat(foo, notNullValue());
|
||||
assertThat(foo.getName(), is("bar"));
|
||||
final Foo fooResponse = response.getBody();
|
||||
assertThat(fooResponse, notNullValue());
|
||||
assertThat(fooResponse.getName(), is("bar"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -121,44 +123,46 @@ public class RestTemplateBasicLiveTest {
|
||||
|
||||
@Test
|
||||
public void givenFooService_whenPutExistingEntity_thenItIsUpdated() {
|
||||
final RestTemplate template = new RestTemplate();
|
||||
final HttpHeaders headers = prepareBasicAuthHeaders();
|
||||
final HttpEntity<Foo> request = new HttpEntity<>(new Foo("bar"), headers);
|
||||
|
||||
// Create Resource
|
||||
final ResponseEntity<Foo> createResponse = template.exchange(fooResourceUrl, HttpMethod.POST, request, Foo.class);
|
||||
final ResponseEntity<Foo> createResponse = restTemplate.exchange(fooResourceUrl, HttpMethod.POST, request, Foo.class);
|
||||
|
||||
// Update Resource
|
||||
final Foo updatedInstance = new Foo("newName");
|
||||
updatedInstance.setId(createResponse.getBody().getId());
|
||||
final String resourceUrl = fooResourceUrl + '/' + createResponse.getBody().getId();
|
||||
updatedInstance.setId(createResponse.getBody()
|
||||
.getId());
|
||||
final String resourceUrl = fooResourceUrl + '/' + createResponse.getBody()
|
||||
.getId();
|
||||
final HttpEntity<Foo> requestUpdate = new HttpEntity<>(updatedInstance, headers);
|
||||
template.exchange(resourceUrl, HttpMethod.PUT, requestUpdate, Void.class);
|
||||
restTemplate.exchange(resourceUrl, HttpMethod.PUT, requestUpdate, Void.class);
|
||||
|
||||
// Check that Resource was updated
|
||||
final ResponseEntity<Foo> updateResponse = template.exchange(resourceUrl, HttpMethod.GET, new HttpEntity<>(headers), Foo.class);
|
||||
final ResponseEntity<Foo> updateResponse = restTemplate.exchange(resourceUrl, HttpMethod.GET, new HttpEntity<>(headers), Foo.class);
|
||||
final Foo foo = updateResponse.getBody();
|
||||
assertThat(foo.getName(), is(updatedInstance.getName()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenFooService_whenPutExistingEntityWithCallback_thenItIsUpdated() {
|
||||
final RestTemplate template = new RestTemplate();
|
||||
final HttpHeaders headers = prepareBasicAuthHeaders();
|
||||
final HttpEntity<Foo> request = new HttpEntity<>(new Foo("bar"), headers);
|
||||
|
||||
// Create entity
|
||||
ResponseEntity<Foo> response = template.exchange(fooResourceUrl, HttpMethod.POST, request, Foo.class);
|
||||
ResponseEntity<Foo> response = restTemplate.exchange(fooResourceUrl, HttpMethod.POST, request, Foo.class);
|
||||
assertThat(response.getStatusCode(), is(HttpStatus.CREATED));
|
||||
|
||||
// Update entity
|
||||
final Foo updatedInstance = new Foo("newName");
|
||||
updatedInstance.setId(response.getBody().getId());
|
||||
final String resourceUrl = fooResourceUrl + '/' + response.getBody().getId();
|
||||
template.execute(resourceUrl, HttpMethod.PUT, requestCallback(updatedInstance), clientHttpResponse -> null);
|
||||
updatedInstance.setId(response.getBody()
|
||||
.getId());
|
||||
final String resourceUrl = fooResourceUrl + '/' + response.getBody()
|
||||
.getId();
|
||||
restTemplate.execute(resourceUrl, HttpMethod.PUT, requestCallback(updatedInstance), clientHttpResponse -> null);
|
||||
|
||||
// Check that entity was updated
|
||||
response = template.exchange(resourceUrl, HttpMethod.GET, new HttpEntity<>(headers), Foo.class);
|
||||
response = restTemplate.exchange(resourceUrl, HttpMethod.GET, new HttpEntity<>(headers), Foo.class);
|
||||
final Foo foo = response.getBody();
|
||||
assertThat(foo.getName(), is(updatedInstance.getName()));
|
||||
}
|
||||
@@ -167,22 +171,26 @@ public class RestTemplateBasicLiveTest {
|
||||
|
||||
@Test
|
||||
public void givenFooService_whenPatchExistingEntity_thenItIsUpdated() {
|
||||
final RestTemplate template = new RestTemplate();
|
||||
final HttpHeaders headers = prepareBasicAuthHeaders();
|
||||
final HttpEntity<Foo> request = new HttpEntity<>(new Foo("bar"), headers);
|
||||
|
||||
// Create Resource
|
||||
final ResponseEntity<Foo> createResponse = template.exchange(fooResourceUrl, HttpMethod.POST, request, Foo.class);
|
||||
final ResponseEntity<Foo> createResponse = restTemplate.exchange(fooResourceUrl, HttpMethod.POST, request, Foo.class);
|
||||
|
||||
// Update Resource
|
||||
final Foo updatedResource = new Foo("newName");
|
||||
updatedResource.setId(createResponse.getBody().getId());
|
||||
final String resourceUrl = fooResourceUrl + '/' + createResponse.getBody().getId();
|
||||
updatedResource.setId(createResponse.getBody()
|
||||
.getId());
|
||||
final String resourceUrl = fooResourceUrl + '/' + createResponse.getBody()
|
||||
.getId();
|
||||
final HttpEntity<Foo> requestUpdate = new HttpEntity<>(updatedResource, headers);
|
||||
final ClientHttpRequestFactory requestFactory = getSimpleClientHttpRequestFactory();
|
||||
final RestTemplate template = new RestTemplate(requestFactory);
|
||||
template.setMessageConverters(Arrays.asList(new MappingJackson2HttpMessageConverter()));
|
||||
template.patchForObject(resourceUrl, requestUpdate, Void.class);
|
||||
|
||||
// Check that Resource was updated
|
||||
final ResponseEntity<Foo> updateResponse = template.exchange(resourceUrl, HttpMethod.GET, new HttpEntity<>(headers), Foo.class);
|
||||
final ResponseEntity<Foo> updateResponse = restTemplate.exchange(resourceUrl, HttpMethod.GET, new HttpEntity<>(headers), Foo.class);
|
||||
final Foo foo = updateResponse.getBody();
|
||||
assertThat(foo.getName(), is(updatedResource.getName()));
|
||||
}
|
||||
@@ -195,7 +203,8 @@ public class RestTemplateBasicLiveTest {
|
||||
final ResponseEntity<Foo> response = restTemplate.postForEntity(fooResourceUrl, foo, Foo.class);
|
||||
assertThat(response.getStatusCode(), is(HttpStatus.CREATED));
|
||||
|
||||
final String entityUrl = fooResourceUrl + "/" + response.getBody().getId();
|
||||
final String entityUrl = fooResourceUrl + "/" + response.getBody()
|
||||
.getId();
|
||||
restTemplate.delete(entityUrl);
|
||||
try {
|
||||
restTemplate.getForEntity(entityUrl, Foo.class);
|
||||
@@ -224,8 +233,10 @@ public class RestTemplateBasicLiveTest {
|
||||
return clientHttpRequest -> {
|
||||
final ObjectMapper mapper = new ObjectMapper();
|
||||
mapper.writeValue(clientHttpRequest.getBody(), updatedInstance);
|
||||
clientHttpRequest.getHeaders().add(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE);
|
||||
clientHttpRequest.getHeaders().add(HttpHeaders.AUTHORIZATION, "Basic " + getBase64EncodedLogPass());
|
||||
clientHttpRequest.getHeaders()
|
||||
.add(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE);
|
||||
clientHttpRequest.getHeaders()
|
||||
.add(HttpHeaders.AUTHORIZATION, "Basic " + getBase64EncodedLogPass());
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
-42
@@ -1,42 +0,0 @@
|
||||
package org.baeldung.web.controller.status;
|
||||
|
||||
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||
|
||||
import org.baeldung.config.WebConfig;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
import org.springframework.test.context.web.WebAppConfiguration;
|
||||
import org.springframework.test.web.servlet.MockMvc;
|
||||
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
|
||||
import org.springframework.web.context.WebApplicationContext;
|
||||
|
||||
@RunWith(SpringJUnit4ClassRunner.class)
|
||||
@ContextConfiguration(classes = WebConfig.class)
|
||||
@WebAppConfiguration
|
||||
public class ExampleControllerIntegrationTest {
|
||||
|
||||
private MockMvc mockMvc;
|
||||
|
||||
@Autowired
|
||||
private WebApplicationContext webApplicationContext;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenGetRequestSentToController_thenReturnsStatusNotAcceptable() throws Exception {
|
||||
mockMvc.perform(get("/controller")).andExpect(status().isNotAcceptable());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenGetRequestSentToException_thenReturnsStatusForbidden() throws Exception {
|
||||
mockMvc.perform(get("/exception")).andExpect(status().isForbidden());
|
||||
}
|
||||
}
|
||||
@@ -3,14 +3,14 @@ GET
|
||||
0
|
||||
HTTP/1.1 200 OK
|
||||
10
|
||||
Server: nginx/1.10.0 (Ubuntu)
|
||||
Date: Thu, 09 Mar 2017 10:17:25 GMT
|
||||
Content-Type: text/plain
|
||||
Content-Length: 1759
|
||||
Last-Modified: Tue, 27 May 2014 02:35:47 GMT
|
||||
Connection: keep-alive
|
||||
ETag: "5383fa03-6df"
|
||||
Accept-Ranges: bytes
|
||||
Server: nginx/1.10.0 (Ubuntu)
|
||||
Date: Fri, 23 Jun 2017 15:44:52 GMT
|
||||
Last-Modified: Tue, 27 May 2014 02:35:47 GMT
|
||||
ETag: "5383fa03-6df"
|
||||
OkHttp-Sent-Millis: 1489054646765
|
||||
OkHttp-Received-Millis: 1489054646966
|
||||
|
||||
|
||||
@@ -4,10 +4,10 @@ GET
|
||||
HTTP/1.1 301 Moved Permanently
|
||||
8
|
||||
Server: nginx/1.10.0 (Ubuntu)
|
||||
Date: Thu, 09 Mar 2017 10:17:25 GMT
|
||||
Date: Sat, 24 Jun 2017 01:06:43 GMT
|
||||
Content-Type: text/html
|
||||
Content-Length: 194
|
||||
Connection: keep-alive
|
||||
Location: https://publicobject.com/helloworld.txt
|
||||
OkHttp-Sent-Millis: 1489054646977
|
||||
OkHttp-Received-Millis: 1489054647185
|
||||
OkHttp-Sent-Millis: 1498266403462
|
||||
OkHttp-Received-Millis: 1498266403727
|
||||
|
||||
+51
@@ -10,3 +10,54 @@ CLEAN 2d9345a30d2cc31bb3091d70a8ef6c18 7618 1759
|
||||
READ 4b217e04ba52215f3a6b64d28f6729c6
|
||||
DIRTY 4b217e04ba52215f3a6b64d28f6729c6
|
||||
CLEAN 4b217e04ba52215f3a6b64d28f6729c6 333 194
|
||||
READ 4b217e04ba52215f3a6b64d28f6729c6
|
||||
DIRTY 4b217e04ba52215f3a6b64d28f6729c6
|
||||
CLEAN 4b217e04ba52215f3a6b64d28f6729c6 333 194
|
||||
READ 2d9345a30d2cc31bb3091d70a8ef6c18
|
||||
DIRTY 2d9345a30d2cc31bb3091d70a8ef6c18
|
||||
CLEAN 2d9345a30d2cc31bb3091d70a8ef6c18 7618 1759
|
||||
READ 4b217e04ba52215f3a6b64d28f6729c6
|
||||
DIRTY 4b217e04ba52215f3a6b64d28f6729c6
|
||||
CLEAN 4b217e04ba52215f3a6b64d28f6729c6 333 194
|
||||
READ 4b217e04ba52215f3a6b64d28f6729c6
|
||||
DIRTY 4b217e04ba52215f3a6b64d28f6729c6
|
||||
CLEAN 4b217e04ba52215f3a6b64d28f6729c6 333 194
|
||||
READ 2d9345a30d2cc31bb3091d70a8ef6c18
|
||||
READ 4b217e04ba52215f3a6b64d28f6729c6
|
||||
DIRTY 4b217e04ba52215f3a6b64d28f6729c6
|
||||
CLEAN 4b217e04ba52215f3a6b64d28f6729c6 333 194
|
||||
READ 4b217e04ba52215f3a6b64d28f6729c6
|
||||
DIRTY 4b217e04ba52215f3a6b64d28f6729c6
|
||||
CLEAN 4b217e04ba52215f3a6b64d28f6729c6 333 194
|
||||
READ 2d9345a30d2cc31bb3091d70a8ef6c18
|
||||
READ 4b217e04ba52215f3a6b64d28f6729c6
|
||||
DIRTY 4b217e04ba52215f3a6b64d28f6729c6
|
||||
CLEAN 4b217e04ba52215f3a6b64d28f6729c6 333 194
|
||||
READ 4b217e04ba52215f3a6b64d28f6729c6
|
||||
DIRTY 4b217e04ba52215f3a6b64d28f6729c6
|
||||
CLEAN 4b217e04ba52215f3a6b64d28f6729c6 333 194
|
||||
READ 2d9345a30d2cc31bb3091d70a8ef6c18
|
||||
READ 4b217e04ba52215f3a6b64d28f6729c6
|
||||
DIRTY 4b217e04ba52215f3a6b64d28f6729c6
|
||||
CLEAN 4b217e04ba52215f3a6b64d28f6729c6 333 194
|
||||
READ 4b217e04ba52215f3a6b64d28f6729c6
|
||||
DIRTY 4b217e04ba52215f3a6b64d28f6729c6
|
||||
CLEAN 4b217e04ba52215f3a6b64d28f6729c6 333 194
|
||||
READ 2d9345a30d2cc31bb3091d70a8ef6c18
|
||||
READ 4b217e04ba52215f3a6b64d28f6729c6
|
||||
DIRTY 4b217e04ba52215f3a6b64d28f6729c6
|
||||
CLEAN 4b217e04ba52215f3a6b64d28f6729c6 333 194
|
||||
READ 4b217e04ba52215f3a6b64d28f6729c6
|
||||
DIRTY 4b217e04ba52215f3a6b64d28f6729c6
|
||||
CLEAN 4b217e04ba52215f3a6b64d28f6729c6 333 194
|
||||
READ 2d9345a30d2cc31bb3091d70a8ef6c18
|
||||
READ 4b217e04ba52215f3a6b64d28f6729c6
|
||||
DIRTY 4b217e04ba52215f3a6b64d28f6729c6
|
||||
CLEAN 4b217e04ba52215f3a6b64d28f6729c6 333 194
|
||||
READ 4b217e04ba52215f3a6b64d28f6729c6
|
||||
DIRTY 4b217e04ba52215f3a6b64d28f6729c6
|
||||
CLEAN 4b217e04ba52215f3a6b64d28f6729c6 333 194
|
||||
READ 2d9345a30d2cc31bb3091d70a8ef6c18
|
||||
READ 4b217e04ba52215f3a6b64d28f6729c6
|
||||
DIRTY 4b217e04ba52215f3a6b64d28f6729c6
|
||||
CLEAN 4b217e04ba52215f3a6b64d28f6729c6 333 194
|
||||
|
||||
Reference in New Issue
Block a user