amplify-swift/AmplifyPlugins/API/Tests/AWSAPIPluginTests/Operation/AWSHTTPURLResponseTests.swift

77 lines
3.2 KiB
Swift

//
// Copyright Amazon.com Inc. or its affiliates.
// All Rights Reserved.
//
// SPDX-License-Identifier: Apache-2.0
//
import XCTest
@testable import AWSAPIPlugin
class AWSHTTPURLResponseTests: XCTestCase {
func testAWSHTTPURLResponse() throws {
let body = "responseBody".data(using: .utf8)
let httpResponse = HTTPURLResponse(url: URL(string: "dummyString")!,
statusCode: 200,
httpVersion: "1.1",
headerFields: ["key1": "value1",
"key2": "value2"])!
if let response = AWSHTTPURLResponse(response: httpResponse, body: body) {
XCTAssertNotNil(response.body)
XCTAssertNotNil(response.url)
XCTAssertNil(response.mimeType)
XCTAssertEqual(response.expectedContentLength, -1)
XCTAssertNil(response.textEncodingName)
XCTAssertNotNil(response.suggestedFilename)
XCTAssertEqual(response.statusCode, 200)
XCTAssertEqual(response.allHeaderFields.count, 2)
XCTAssertNotNil(response.value(forHTTPHeaderField: "key1"))
XCTAssertNotNil(response.value(forHTTPHeaderField: "key2"))
} else {
XCTFail("Failed to initialize `AWSHTTPURLResponse`")
}
}
func testAWSHTTPURLResponseNSCoding() {
let body = "responseBody".data(using: .utf8)
let httpResponse = HTTPURLResponse(url: URL(string: "dummyString")!,
statusCode: 200,
httpVersion: "1.1",
headerFields: ["key1": "value1",
"key2": "value2"])!
guard let response = AWSHTTPURLResponse(response: httpResponse, body: body) else {
XCTFail("Failed to initialize `AWSHTTPURLResponse`")
return
}
let data : Data
do {
data = try NSKeyedArchiver.archivedData(withRootObject: response, requiringSecureCoding: false)
XCTAssertNotNil(data)
} catch (let error) {
XCTFail("Failed to archive data : \(error)")
return
}
do {
guard let unarchivedResponse = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data) as? AWSHTTPURLResponse else {
XCTFail("Failure while unarchiving")
return
}
XCTAssertNotNil(unarchivedResponse)
XCTAssertNotNil(unarchivedResponse.body)
XCTAssertNotNil(unarchivedResponse.url)
XCTAssertNil(unarchivedResponse.mimeType)
XCTAssertEqual(unarchivedResponse.expectedContentLength, -1)
XCTAssertNil(unarchivedResponse.textEncodingName)
XCTAssertNotNil(unarchivedResponse.suggestedFilename)
XCTAssertEqual(unarchivedResponse.statusCode, 200)
XCTAssertEqual(unarchivedResponse.allHeaderFields.count, 2)
} catch (let error) {
XCTFail("Failed to unarchive `AWSHTTPURLResponse` data \(error)")
return
}
}
}