|
|
|
@ -16,10 +16,6 @@
|
|
|
|
|
|
|
|
|
|
package sample.ui.secure;
|
|
|
|
|
|
|
|
|
|
import static org.junit.Assert.assertEquals;
|
|
|
|
|
import static org.junit.Assert.assertNotNull;
|
|
|
|
|
import static org.junit.Assert.assertTrue;
|
|
|
|
|
|
|
|
|
|
import java.util.Arrays;
|
|
|
|
|
import java.util.regex.Matcher;
|
|
|
|
|
import java.util.regex.Pattern;
|
|
|
|
@ -42,6 +38,10 @@ import org.springframework.test.context.web.WebAppConfiguration;
|
|
|
|
|
import org.springframework.util.LinkedMultiValueMap;
|
|
|
|
|
import org.springframework.util.MultiValueMap;
|
|
|
|
|
|
|
|
|
|
import static org.junit.Assert.assertEquals;
|
|
|
|
|
import static org.junit.Assert.assertNotNull;
|
|
|
|
|
import static org.junit.Assert.assertTrue;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Basic integration tests for demo application.
|
|
|
|
|
*
|
|
|
|
@ -65,8 +65,8 @@ public class SampleSecureApplicationTests {
|
|
|
|
|
"http://localhost:" + this.port, HttpMethod.GET, new HttpEntity<Void>(
|
|
|
|
|
headers), String.class);
|
|
|
|
|
assertEquals(HttpStatus.FOUND, entity.getStatusCode());
|
|
|
|
|
assertTrue("Wrong location:\n" + entity.getHeaders(),
|
|
|
|
|
entity.getHeaders().getLocation().toString().endsWith(port + "/login"));
|
|
|
|
|
assertTrue("Wrong location:\n" + entity.getHeaders(), entity.getHeaders()
|
|
|
|
|
.getLocation().toString().endsWith(port + "/login"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
@ -74,8 +74,8 @@ public class SampleSecureApplicationTests {
|
|
|
|
|
HttpHeaders headers = new HttpHeaders();
|
|
|
|
|
headers.setAccept(Arrays.asList(MediaType.TEXT_HTML));
|
|
|
|
|
ResponseEntity<String> entity = new TestRestTemplate().exchange(
|
|
|
|
|
"http://localhost:" + this.port + "/login", HttpMethod.GET, new HttpEntity<Void>(
|
|
|
|
|
headers), String.class);
|
|
|
|
|
"http://localhost:" + this.port + "/login", HttpMethod.GET,
|
|
|
|
|
new HttpEntity<Void>(headers), String.class);
|
|
|
|
|
assertEquals(HttpStatus.OK, entity.getStatusCode());
|
|
|
|
|
assertTrue("Wrong content:\n" + entity.getBody(),
|
|
|
|
|
entity.getBody().contains("_csrf"));
|
|
|
|
@ -94,8 +94,8 @@ public class SampleSecureApplicationTests {
|
|
|
|
|
new HttpEntity<MultiValueMap<String, String>>(form, headers),
|
|
|
|
|
String.class);
|
|
|
|
|
assertEquals(HttpStatus.FOUND, entity.getStatusCode());
|
|
|
|
|
assertTrue("Wrong location:\n" + entity.getHeaders(),
|
|
|
|
|
entity.getHeaders().getLocation().toString().endsWith(port + "/"));
|
|
|
|
|
assertTrue("Wrong location:\n" + entity.getHeaders(), entity.getHeaders()
|
|
|
|
|
.getLocation().toString().endsWith(port + "/"));
|
|
|
|
|
assertNotNull("Missing cookie:\n" + entity.getHeaders(),
|
|
|
|
|
entity.getHeaders().get("Set-Cookie"));
|
|
|
|
|
}
|
|
|
|
@ -107,8 +107,8 @@ public class SampleSecureApplicationTests {
|
|
|
|
|
assertEquals(HttpStatus.OK, page.getStatusCode());
|
|
|
|
|
String cookie = page.getHeaders().getFirst("Set-Cookie");
|
|
|
|
|
headers.set("Cookie", cookie);
|
|
|
|
|
Matcher matcher = Pattern.compile("(?s).*name=\"_csrf\".*?value=\"([^\"]+).*").matcher(
|
|
|
|
|
page.getBody());
|
|
|
|
|
Matcher matcher = Pattern.compile("(?s).*name=\"_csrf\".*?value=\"([^\"]+).*")
|
|
|
|
|
.matcher(page.getBody());
|
|
|
|
|
assertTrue("No csrf token: " + page.getBody(), matcher.matches());
|
|
|
|
|
headers.set("X-CSRF-TOKEN", matcher.group(1));
|
|
|
|
|
return headers;
|
|
|
|
|