mirror of
https://github.com/swift-server/async-http-client.git
synced 2026-06-02 07:37:34 +00:00
86 lines
3.7 KiB
Swift
86 lines
3.7 KiB
Swift
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This source file is part of the AsyncHTTPClient open source project
|
|
//
|
|
// Copyright (c) 2018-2019 Apple Inc. and the AsyncHTTPClient project authors
|
|
// Licensed under Apache License v2.0
|
|
//
|
|
// See LICENSE.txt for license information
|
|
// See CONTRIBUTORS.txt for the list of AsyncHTTPClient project authors
|
|
//
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
import AsyncHTTPClient
|
|
import Foundation
|
|
import XCTest
|
|
|
|
class HTTPClientCookieTests: XCTestCase {
|
|
func testCookie() {
|
|
let v = "key=value; PaTh=/path; DoMaIn=example.com; eXpIRes=Wed, 21 Oct 2015 07:28:00 GMT; max-AGE=42; seCURE; HTTPOnly"
|
|
let c = HTTPClient.Cookie(header: v, defaultDomain: "exampe.org")!
|
|
XCTAssertEqual("key", c.name)
|
|
XCTAssertEqual("value", c.value)
|
|
XCTAssertEqual("/path", c.path)
|
|
XCTAssertEqual("example.com", c.domain)
|
|
XCTAssertEqual(Date(timeIntervalSince1970: 1_445_412_480), c.expires)
|
|
XCTAssertEqual(42, c.maxAge)
|
|
XCTAssertTrue(c.httpOnly)
|
|
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")!
|
|
XCTAssertEqual("key", c.name)
|
|
XCTAssertEqual("value", c.value)
|
|
XCTAssertEqual("/", c.path)
|
|
XCTAssertEqual("example.org", c.domain)
|
|
XCTAssertNil(c.expires)
|
|
XCTAssertNil(c.maxAge)
|
|
XCTAssertFalse(c.httpOnly)
|
|
XCTAssertFalse(c.secure)
|
|
}
|
|
|
|
func testCookieInit() {
|
|
let c = HTTPClient.Cookie(name: "key", value: "value", path: "/path", domain: "example.com", expires: Date(timeIntervalSince1970: 1_445_412_480), maxAge: 42, httpOnly: true, secure: true)
|
|
XCTAssertEqual("key", c.name)
|
|
XCTAssertEqual("value", c.value)
|
|
XCTAssertEqual("/path", c.path)
|
|
XCTAssertEqual("example.com", c.domain)
|
|
XCTAssertEqual(Date(timeIntervalSince1970: 1_445_412_480), c.expires)
|
|
XCTAssertEqual(42, c.maxAge)
|
|
XCTAssertTrue(c.httpOnly)
|
|
XCTAssertTrue(c.secure)
|
|
}
|
|
|
|
func testMalformedCookies() {
|
|
XCTAssertNil(HTTPClient.Cookie(header: "", defaultDomain: "exampe.org"))
|
|
XCTAssertNil(HTTPClient.Cookie(header: ";;", defaultDomain: "exampe.org"))
|
|
XCTAssertNil(HTTPClient.Cookie(header: "name;;", defaultDomain: "exampe.org"))
|
|
XCTAssertNotNil(HTTPClient.Cookie(header: "name=;;", defaultDomain: "exampe.org"))
|
|
XCTAssertNotNil(HTTPClient.Cookie(header: "name=value;;", defaultDomain: "exampe.org"))
|
|
XCTAssertNotNil(HTTPClient.Cookie(header: "name=value;x;", defaultDomain: "exampe.org"))
|
|
XCTAssertNotNil(HTTPClient.Cookie(header: "name=value;x=;", defaultDomain: "exampe.org"))
|
|
XCTAssertNotNil(HTTPClient.Cookie(header: "name=value;;x=;", defaultDomain: "exampe.org"))
|
|
XCTAssertNil(HTTPClient.Cookie(header: ";key=value", defaultDomain: "exampe.org"))
|
|
XCTAssertNil(HTTPClient.Cookie(header: "key;key=value", defaultDomain: "exampe.org"))
|
|
XCTAssertNil(HTTPClient.Cookie(header: "=;", defaultDomain: "exampe.org"))
|
|
XCTAssertNil(HTTPClient.Cookie(header: "=value;", defaultDomain: "exampe.org"))
|
|
}
|
|
}
|