Files
async-http-client/Tests/AsyncHTTPClientTests/HTTPClientCookieTests.swift
2020-05-13 18:31:36 +01:00

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"))
}
}