@Test public void parseHeaderWithAttributes() { MockCookie cookie = MockCookie.parse( "SESSION=123; Domain=example.com; Max-Age=60; Path=/; Secure; HttpOnly; SameSite=Lax"); assertCookie(cookie, "SESSION", "123"); assertEquals("example.com", cookie.getDomain()); assertEquals(60, cookie.getMaxAge()); assertEquals("/", cookie.getPath()); assertTrue(cookie.getSecure()); assertTrue(cookie.isHttpOnly()); assertEquals("Lax", cookie.getSameSite()); }
(valueAndAttributes.length > 1 ? valueAndAttributes[1].split("\\s*;\\s*") : new String[0]); MockCookie cookie = new MockCookie(name, value); for (String attribute : attributes) { if (attribute.startsWith("Domain")) { cookie.setDomain(extractAttributeValue(attribute, setCookieHeader)); cookie.setMaxAge(Integer.parseInt(extractAttributeValue(attribute, setCookieHeader))); cookie.setPath(extractAttributeValue(attribute, setCookieHeader)); cookie.setSecure(true); cookie.setHttpOnly(true); cookie.setSameSite(extractAttributeValue(attribute, setCookieHeader));
@Test public void setSameSite() { MockCookie cookie = new MockCookie("SESSION", "123"); cookie.setSameSite("Strict"); assertEquals("Strict", cookie.getSameSite()); }
@Test public void constructCookie() { MockCookie cookie = new MockCookie("SESSION", "123"); assertCookie(cookie, "SESSION", "123"); assertNull(cookie.getDomain()); assertEquals(-1, cookie.getMaxAge()); assertNull(cookie.getPath()); assertFalse(cookie.isHttpOnly()); assertFalse(cookie.getSecure()); assertNull(cookie.getSameSite()); }
if (StringUtils.hasText(mockCookie.getSameSite())) { buf.append("; SameSite=").append(mockCookie.getSameSite());
private boolean setSpecialHeader(String name, Object value) { if (HttpHeaders.CONTENT_TYPE.equalsIgnoreCase(name)) { setContentType(value.toString()); return true; } else if (HttpHeaders.CONTENT_LENGTH.equalsIgnoreCase(name)) { setContentLength(value instanceof Number ? ((Number) value).intValue() : Integer.parseInt(value.toString())); return true; } else if (HttpHeaders.CONTENT_LANGUAGE.equalsIgnoreCase(name)) { HttpHeaders headers = new HttpHeaders(); headers.add(HttpHeaders.CONTENT_LANGUAGE, value.toString()); Locale language = headers.getContentLanguage(); setLocale(language != null ? language : Locale.getDefault()); return true; } else if (HttpHeaders.SET_COOKIE.equalsIgnoreCase(name)) { MockCookie cookie = MockCookie.parse(value.toString()); addCookie(cookie); return true; } else { return false; } }
@Test public void writeCookieDefaultSameSiteLax() { this.serializer.writeCookieValue(cookieValue(this.sessionId)); assertThat(getCookie().getSameSite()).isEqualTo("Lax"); }
@Test public void addMockCookie() { MockCookie mockCookie = new MockCookie("SESSION", "123"); mockCookie.setPath("/"); mockCookie.setDomain("example.com"); mockCookie.setMaxAge(0); mockCookie.setSecure(true); mockCookie.setHttpOnly(true); mockCookie.setSameSite("Lax"); response.addCookie(mockCookie); assertEquals("SESSION=123; Path=/; Domain=example.com; Max-Age=0; " + "Expires=Thu, 1 Jan 1970 00:00:00 GMT; Secure; HttpOnly; SameSite=Lax", response.getHeader(HttpHeaders.SET_COOKIE)); }
@Test public void writeCookieSetSameSiteLax() { this.serializer.setSameSite("Lax"); this.serializer.writeCookieValue(cookieValue(this.sessionId)); assertThat(getCookie().getSameSite()).isEqualTo("Lax"); }
@Test public void parseNullHeader() { exception.expect(IllegalArgumentException.class); exception.expectMessage("Set-Cookie header must not be null"); MockCookie.parse(null); }
(valueAndAttributes.length > 1 ? valueAndAttributes[1].split("\\s*;\\s*") : new String[0]); MockCookie cookie = new MockCookie(name, value); for (String attribute : attributes) { if (attribute.startsWith("Domain")) { cookie.setDomain(extractAttributeValue(attribute, setCookieHeader)); cookie.setMaxAge(Integer.parseInt(extractAttributeValue(attribute, setCookieHeader))); cookie.setPath(extractAttributeValue(attribute, setCookieHeader)); cookie.setSecure(true); cookie.setHttpOnly(true); cookie.setSameSite(extractAttributeValue(attribute, setCookieHeader));
@Test public void writeCookieSetSameSiteStrict() { this.serializer.setSameSite("Strict"); this.serializer.writeCookieValue(cookieValue(this.sessionId)); assertThat(getCookie().getSameSite()).isEqualTo("Strict"); }
@Test public void parseInvalidHeader() { exception.expect(IllegalArgumentException.class); exception.expectMessage("Invalid Set-Cookie header 'BOOM'"); MockCookie.parse("BOOM"); }
(valueAndAttributes.length > 1 ? valueAndAttributes[1].split("\\s*;\\s*") : new String[0]); MockCookie cookie = new MockCookie(name, value); for (String attribute : attributes) { if (attribute.startsWith("Domain")) { cookie.setDomain(extractAttributeValue(attribute, setCookieHeader)); cookie.setMaxAge(Integer.parseInt(extractAttributeValue(attribute, setCookieHeader))); cookie.setPath(extractAttributeValue(attribute, setCookieHeader)); cookie.setSecure(true); cookie.setHttpOnly(true); cookie.setSameSite(extractAttributeValue(attribute, setCookieHeader));
@Test public void setCookieHeaderValid() { response.addHeader(HttpHeaders.SET_COOKIE, "SESSION=123; Path=/; Secure; HttpOnly; SameSite=Lax"); Cookie cookie = response.getCookie("SESSION"); assertNotNull(cookie); assertTrue(cookie instanceof MockCookie); assertEquals("SESSION", cookie.getName()); assertEquals("123", cookie.getValue()); assertEquals("/", cookie.getPath()); assertTrue(cookie.getSecure()); assertTrue(cookie.isHttpOnly()); assertEquals("Lax", ((MockCookie) cookie).getSameSite()); }
@Test public void parseInvalidAttribute() { String header = "SESSION=123; Path="; exception.expect(IllegalArgumentException.class); exception.expectMessage("No value in attribute 'Path' for Set-Cookie header '" + header + "'"); MockCookie.parse(header); }
@Test public void writeCookieSetSameSiteNull() { this.serializer.setSameSite(null); this.serializer.writeCookieValue(cookieValue(this.sessionId)); assertThat(getCookie().getSameSite()).isNull(); }
private boolean setSpecialHeader(String name, Object value) { if (HttpHeaders.CONTENT_TYPE.equalsIgnoreCase(name)) { setContentType(value.toString()); return true; } else if (HttpHeaders.CONTENT_LENGTH.equalsIgnoreCase(name)) { setContentLength(value instanceof Number ? ((Number) value).intValue() : Integer.parseInt(value.toString())); return true; } else if (HttpHeaders.CONTENT_LANGUAGE.equalsIgnoreCase(name)) { HttpHeaders headers = new HttpHeaders(); headers.add(HttpHeaders.CONTENT_LANGUAGE, value.toString()); Locale language = headers.getContentLanguage(); setLocale(language != null ? language : Locale.getDefault()); return true; } else if (HttpHeaders.SET_COOKIE.equalsIgnoreCase(name)) { MockCookie cookie = MockCookie.parse(value.toString()); addCookie(cookie); return true; } else { return false; } }
if (StringUtils.hasText(mockCookie.getSameSite())) { buf.append("; SameSite=").append(mockCookie.getSameSite());