diff --git a/spring-test/src/main/java/org/springframework/mock/web/MockCookie.java b/spring-test/src/main/java/org/springframework/mock/web/MockCookie.java index 7bcd893cc8..d9b7e8c5f1 100644 --- a/spring-test/src/main/java/org/springframework/mock/web/MockCookie.java +++ b/spring-test/src/main/java/org/springframework/mock/web/MockCookie.java @@ -80,7 +80,7 @@ public class MockCookie extends Cookie { String name = cookieParts[0]; String[] valueAndDirectives = cookieParts[1].split("\\s*;\\s*", 2); String value = valueAndDirectives[0]; - String[] directives = valueAndDirectives[1].split("\\s*;\\s*"); + String[] directives = valueAndDirectives.length > 1 ? valueAndDirectives[1].split("\\s*;\\s*") : new String[0]; MockCookie cookie = new MockCookie(name, value); for (String directive : directives) { diff --git a/spring-test/src/test/java/org/springframework/mock/web/MockHttpServletRequestTests.java b/spring-test/src/test/java/org/springframework/mock/web/MockHttpServletRequestTests.java index ac493936c4..27451ab1d6 100644 --- a/spring-test/src/test/java/org/springframework/mock/web/MockHttpServletRequestTests.java +++ b/spring-test/src/test/java/org/springframework/mock/web/MockHttpServletRequestTests.java @@ -544,6 +544,29 @@ public class MockHttpServletRequestTests { request.getDateHeader(HttpHeaders.IF_MODIFIED_SINCE); } + @Test + public void testCookieParsing() { + MockCookie m = MockCookie.parse("foo=bar"); + 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()); + } + private void assertEqualEnumerations(Enumeration enum1, Enumeration enum2) { assertNotNull(enum1);