This commit is contained in:
Phillip Webb
2017-09-27 17:44:30 -07:00
parent 7e2d7dcd1d
commit 9e43b99966
42 changed files with 190 additions and 200 deletions

View File

@@ -42,35 +42,42 @@ public class SampleSessionApplicationTests {
@Test
public void sessionExpiry() throws Exception {
ConfigurableApplicationContext context = createContext();
String port = context.getEnvironment().getProperty("local.server.port");
URI uri = URI.create("http://localhost:" + port + "/");
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> firstResponse = firstRequest(restTemplate, uri);
String sessionId1 = firstResponse.getBody();
String cookie = firstResponse.getHeaders().getFirst("Set-Cookie");
String sessionId2 = nextRequest(restTemplate, uri, cookie).getBody();
assertThat(sessionId1).isEqualTo(sessionId2);
Thread.sleep(1000);
String loginPage = nextRequest(restTemplate, uri, cookie).getBody();
assertThat(loginPage).containsIgnoringCase("login");
}
private ConfigurableApplicationContext createContext() {
ConfigurableApplicationContext context = new SpringApplicationBuilder()
.sources(SampleSessionApplication.class)
.properties("server.port:0", "server.session.timeout:1")
.initializers(new ServerPortInfoApplicationContextInitializer()).run();
String port = context.getEnvironment().getProperty("local.server.port");
return context;
}
URI uri = URI.create("http://localhost:" + port + "/");
RestTemplate restTemplate = new RestTemplate();
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.set("Authorization", "Basic "
private ResponseEntity<String> firstRequest(RestTemplate restTemplate, URI uri) {
HttpHeaders headers = new HttpHeaders();
headers.set("Authorization", "Basic "
+ Base64.getEncoder().encodeToString("user:password".getBytes()));
RequestEntity<Object> request = new RequestEntity<>(headers, HttpMethod.GET, uri);
return restTemplate.exchange(request, String.class);
}
ResponseEntity<String> response = restTemplate.exchange(
new RequestEntity<>(requestHeaders, HttpMethod.GET, uri), String.class);
String sessionId1 = response.getBody();
requestHeaders.clear();
requestHeaders.set("Cookie", response.getHeaders().getFirst("Set-Cookie"));
RequestEntity<Void> request = new RequestEntity<>(requestHeaders, HttpMethod.GET,
uri);
String sessionId2 = restTemplate.exchange(request, String.class).getBody();
assertThat(sessionId1).isEqualTo(sessionId2);
Thread.sleep(1000);
String loginPage = restTemplate.exchange(request, String.class).getBody();
assertThat(loginPage).containsIgnoringCase("login");
private ResponseEntity<String> nextRequest(RestTemplate restTemplate, URI uri,
String cookie) {
HttpHeaders headers = new HttpHeaders();
headers.set("Cookie", cookie);
RequestEntity<Object> request = new RequestEntity<>(headers, HttpMethod.GET, uri);
return restTemplate.exchange(request, String.class);
}
}