parent
31095f1d4e
commit
77205ca165
|
@ -75,7 +75,7 @@ public class MockCookie extends Cookie {
|
||||||
*/
|
*/
|
||||||
public static MockCookie parse(String setCookieHeader) {
|
public static MockCookie parse(String setCookieHeader) {
|
||||||
String[] cookieParts = setCookieHeader.split("\\s*=\\s*", 2);
|
String[] cookieParts = setCookieHeader.split("\\s*=\\s*", 2);
|
||||||
Assert.isTrue(cookieParts.length == 2, () -> "Invalid Set-Cookie header value '" + setCookieHeader + "'");
|
Assert.isTrue(cookieParts.length == 2, () -> "Invalid Set-Cookie header '" + setCookieHeader + "'");
|
||||||
|
|
||||||
String name = cookieParts[0];
|
String name = cookieParts[0];
|
||||||
String[] valueAndAttributes = cookieParts[1].split("\\s*;\\s*", 2);
|
String[] valueAndAttributes = cookieParts[1].split("\\s*;\\s*", 2);
|
||||||
|
|
|
@ -30,16 +30,21 @@ import static org.junit.Assert.*;
|
||||||
* @since 5.1
|
* @since 5.1
|
||||||
*/
|
*/
|
||||||
public class MockCookieTests {
|
public class MockCookieTests {
|
||||||
|
|
||||||
@Rule
|
@Rule
|
||||||
public ExpectedException exception = ExpectedException.none();
|
public final ExpectedException exception = ExpectedException.none();
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void constructCookie() {
|
public void constructCookie() {
|
||||||
MockCookie cookie = new MockCookie("SESSION", "123");
|
MockCookie cookie = new MockCookie("SESSION", "123");
|
||||||
|
|
||||||
assertEquals("SESSION", cookie.getName());
|
assertCookie(cookie, "SESSION", "123");
|
||||||
assertEquals("123", cookie.getValue());
|
assertNull(cookie.getDomain());
|
||||||
|
assertEquals(-1, cookie.getMaxAge());
|
||||||
|
assertNull(cookie.getPath());
|
||||||
|
assertFalse(cookie.isHttpOnly());
|
||||||
|
assertFalse(cookie.getSecure());
|
||||||
|
assertNull(cookie.getSameSite());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -51,12 +56,22 @@ public class MockCookieTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void parseValidHeader() {
|
public void parseHeaderWithoutAttributes() {
|
||||||
|
MockCookie cookie;
|
||||||
|
|
||||||
|
cookie = MockCookie.parse("SESSION=123");
|
||||||
|
assertCookie(cookie, "SESSION", "123");
|
||||||
|
|
||||||
|
cookie = MockCookie.parse("SESSION=123;");
|
||||||
|
assertCookie(cookie, "SESSION", "123");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void parseHeaderWithAttributes() {
|
||||||
MockCookie cookie = MockCookie.parse(
|
MockCookie cookie = MockCookie.parse(
|
||||||
"SESSION=123; Domain=example.com; Max-Age=60; Path=/; Secure; HttpOnly; SameSite=Lax");
|
"SESSION=123; Domain=example.com; Max-Age=60; Path=/; Secure; HttpOnly; SameSite=Lax");
|
||||||
|
|
||||||
assertEquals("SESSION", cookie.getName());
|
assertCookie(cookie, "SESSION", "123");
|
||||||
assertEquals("123", cookie.getValue());
|
|
||||||
assertEquals("example.com", cookie.getDomain());
|
assertEquals("example.com", cookie.getDomain());
|
||||||
assertEquals(60, cookie.getMaxAge());
|
assertEquals(60, cookie.getMaxAge());
|
||||||
assertEquals("/", cookie.getPath());
|
assertEquals("/", cookie.getPath());
|
||||||
|
@ -68,40 +83,22 @@ public class MockCookieTests {
|
||||||
@Test
|
@Test
|
||||||
public void parseInvalidHeader() {
|
public void parseInvalidHeader() {
|
||||||
exception.expect(IllegalArgumentException.class);
|
exception.expect(IllegalArgumentException.class);
|
||||||
exception.expectMessage("Invalid Set-Cookie header value 'BOOM'");
|
exception.expectMessage("Invalid Set-Cookie header 'BOOM'");
|
||||||
MockCookie.parse("BOOM");
|
MockCookie.parse("BOOM");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void parseInvalidAttribute() {
|
public void parseInvalidAttribute() {
|
||||||
String header = "foo=bar; Path=";
|
String header = "SESSION=123; Path=";
|
||||||
|
|
||||||
exception.expect(IllegalArgumentException.class);
|
exception.expect(IllegalArgumentException.class);
|
||||||
exception.expectMessage("No value in attribute 'Path' for Set-Cookie header '" + header + "'");
|
exception.expectMessage("No value in attribute 'Path' for Set-Cookie header '" + header + "'");
|
||||||
MockCookie.parse(header);
|
MockCookie.parse(header);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
private void assertCookie(MockCookie cookie, String name, String value) {
|
||||||
public void testCookieParsing() {
|
assertEquals(name, cookie.getName());
|
||||||
MockCookie m = MockCookie.parse("foo=bar");
|
assertEquals(value, cookie.getValue());
|
||||||
testCookie("foo", "bar", m);
|
|
||||||
m = MockCookie.parse("foo=bar;");
|
|
||||||
assertFalse(m.isHttpOnly());
|
|
||||||
assertFalse(m.getSecure());
|
|
||||||
testCookie("foo", "bar", m);
|
|
||||||
m = MockCookie.parse("foo=bar; HttpOnly");
|
|
||||||
testCookie("foo", "bar", m);
|
|
||||||
assertTrue(m.isHttpOnly());
|
|
||||||
assertFalse(m.getSecure());
|
|
||||||
m = MockCookie.parse("foo=bar; Secure");
|
|
||||||
testCookie("foo", "bar", m);
|
|
||||||
assertTrue(m.getSecure());
|
|
||||||
assertFalse(m.isHttpOnly());
|
|
||||||
}
|
|
||||||
|
|
||||||
private void testCookie(String name, String value, MockCookie mockCookie) {
|
|
||||||
assertEquals(name, mockCookie.getName());
|
|
||||||
assertEquals(value, mockCookie.getValue());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue