Add testcase for internal used Comparator in ClientCookieEncoder (#9897)
Motivation: https://github.com/netty/netty/pull/9883 added a bug-fix for the Comparator in ClientCookieEncoder but did not add a testcase. Modifications: - Add testcase - Simplify code Result: Include a test to ensure we not regress.
This commit is contained in:
parent
ae313513dd
commit
bc32efe396
|
@ -92,7 +92,8 @@ public final class ClientCookieEncoder extends CookieEncoder {
|
||||||
* Sort cookies into decreasing order of path length, breaking ties by sorting into increasing chronological
|
* Sort cookies into decreasing order of path length, breaking ties by sorting into increasing chronological
|
||||||
* order of creation time, as recommended by RFC 6265.
|
* order of creation time, as recommended by RFC 6265.
|
||||||
*/
|
*/
|
||||||
private static final Comparator<Cookie> COOKIE_COMPARATOR = (c1, c2) -> {
|
// package-private for testing only
|
||||||
|
static final Comparator<Cookie> COOKIE_COMPARATOR = (c1, c2) -> {
|
||||||
String path1 = c1.path();
|
String path1 = c1.path();
|
||||||
String path2 = c2.path();
|
String path2 = c2.path();
|
||||||
// Cookies with unspecified path default to the path of the request. We don't
|
// Cookies with unspecified path default to the path of the request. We don't
|
||||||
|
@ -102,13 +103,10 @@ public final class ClientCookieEncoder extends CookieEncoder {
|
||||||
// limited use.
|
// limited use.
|
||||||
int len1 = path1 == null ? Integer.MAX_VALUE : path1.length();
|
int len1 = path1 == null ? Integer.MAX_VALUE : path1.length();
|
||||||
int len2 = path2 == null ? Integer.MAX_VALUE : path2.length();
|
int len2 = path2 == null ? Integer.MAX_VALUE : path2.length();
|
||||||
int diff = len2 - len1;
|
|
||||||
if (diff != 0) {
|
|
||||||
return diff;
|
|
||||||
}
|
|
||||||
// Rely on Arrays.sort's stability to retain creation order in cases where
|
// Rely on Arrays.sort's stability to retain creation order in cases where
|
||||||
// cookies have same path length.
|
// cookies have same path length.
|
||||||
return 0;
|
return len2 - len1;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -51,4 +51,16 @@ public class ClientCookieEncoderTest {
|
||||||
public void testRejectCookieValueWithSemicolon() {
|
public void testRejectCookieValueWithSemicolon() {
|
||||||
ClientCookieEncoder.STRICT.encode(new DefaultCookie("myCookie", "foo;bar"));
|
ClientCookieEncoder.STRICT.encode(new DefaultCookie("myCookie", "foo;bar"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testComparatorForSamePathLength() {
|
||||||
|
Cookie cookie = new DefaultCookie("test", "value");
|
||||||
|
cookie.setPath("1");
|
||||||
|
|
||||||
|
Cookie cookie2 = new DefaultCookie("test", "value");
|
||||||
|
cookie2.setPath("2");
|
||||||
|
|
||||||
|
assertEquals(0, ClientCookieEncoder.COOKIE_COMPARATOR.compare(cookie, cookie2));
|
||||||
|
assertEquals(0, ClientCookieEncoder.COOKIE_COMPARATOR.compare(cookie2, cookie));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user