From 8fbb0f63ba1d310150eabc5d91869bef17e5b1a9 Mon Sep 17 00:00:00 2001 From: Artem Redkin <aredkin@apple.com> Date: Tue, 12 May 2020 20:41:16 +0100 Subject: [PATCH 1/2] allow empty value cookies --- Sources/AsyncHTTPClient/HTTPClient+HTTPCookie.swift | 2 +- .../HTTPClientCookieTests.swift | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/Sources/AsyncHTTPClient/HTTPClient+HTTPCookie.swift b/Sources/AsyncHTTPClient/HTTPClient+HTTPCookie.swift index ea4dd2ad7..39b52903a 100644 --- a/Sources/AsyncHTTPClient/HTTPClient+HTTPCookie.swift +++ b/Sources/AsyncHTTPClient/HTTPClient+HTTPCookie.swift @@ -50,7 +50,7 @@ extension HTTPClient { return nil } - let nameAndValue = components[0].split(separator: "=", maxSplits: 1).map { + let nameAndValue = components[0].split(separator: "=", maxSplits: 1, omittingEmptySubsequences: false).map { $0.trimmingCharacters(in: .whitespaces) } diff --git a/Tests/AsyncHTTPClientTests/HTTPClientCookieTests.swift b/Tests/AsyncHTTPClientTests/HTTPClientCookieTests.swift index ad2f4b260..52e5008bd 100644 --- a/Tests/AsyncHTTPClientTests/HTTPClientCookieTests.swift +++ b/Tests/AsyncHTTPClientTests/HTTPClientCookieTests.swift @@ -30,6 +30,19 @@ class HTTPClientCookieTests: XCTestCase { XCTAssertTrue(c.secure) } + func testEmptyValueCookie() { + let v = "cookieValue=; Path=/" + let c = HTTPClient.Cookie(header: v, defaultDomain: "exampe.org")! + XCTAssertEqual("cookieValue", c.name) + XCTAssertEqual("", c.value) + XCTAssertEqual("/", c.path) + XCTAssertEqual("exampe.org", c.domain) + XCTAssertNil(c.expires) + XCTAssertNil(c.maxAge) + XCTAssertFalse(c.httpOnly) + XCTAssertFalse(c.secure) + } + func testCookieDefaults() { let v = "key=value" let c = HTTPClient.Cookie(header: v, defaultDomain: "example.org")! From db7a8f7795ffdccf03617507a43b305b1cda8778 Mon Sep 17 00:00:00 2001 From: Artem Redkin <aredkin@apple.com> Date: Tue, 12 May 2020 20:49:26 +0100 Subject: [PATCH 2/2] generate tests --- Tests/AsyncHTTPClientTests/HTTPClientCookieTests+XCTest.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/Tests/AsyncHTTPClientTests/HTTPClientCookieTests+XCTest.swift b/Tests/AsyncHTTPClientTests/HTTPClientCookieTests+XCTest.swift index 5382d9c99..3f0491992 100644 --- a/Tests/AsyncHTTPClientTests/HTTPClientCookieTests+XCTest.swift +++ b/Tests/AsyncHTTPClientTests/HTTPClientCookieTests+XCTest.swift @@ -26,6 +26,7 @@ extension HTTPClientCookieTests { static var allTests: [(String, (HTTPClientCookieTests) -> () throws -> Void)] { return [ ("testCookie", testCookie), + ("testEmptyValueCookie", testEmptyValueCookie), ("testCookieDefaults", testCookieDefaults), ("testCookieInit", testCookieInit), ]