Files
http/Tests/HTTPTests/ServerTests.swift
2017-11-10 10:52:02 -06:00

69 lines
3.2 KiB
Swift

// This source file is part of the Swift.org Server APIs open source project
//
// Copyright (c) 2017 Swift Server API project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See http://swift.org/LICENSE.txt for license information
//
import XCTest
import Dispatch
@testable import HTTP
class ServerTests: XCTestCase {
func testResponseOK() {
let request = HTTPRequest(method: .get, target: "/echo", httpVersion: HTTPVersion(major: 1, minor: 1), headers: ["X-foo": "bar"])
let resolver = TestResponseResolver(request: request, requestBody: Data())
resolver.resolveHandler(EchoHandler().handle)
XCTAssertNotNil(resolver.response)
XCTAssertNotNil(resolver.responseBody)
XCTAssertEqual(HTTPResponseStatus.ok.code, resolver.response?.status.code ?? 0)
}
func testEcho() {
let testString = "This is a test"
let request = HTTPRequest(method: .post, target: "/echo", httpVersion: HTTPVersion(major: 1, minor: 1), headers: ["X-foo": "bar"])
let resolver = TestResponseResolver(request: request, requestBody: testString.data(using: .utf8)!)
resolver.resolveHandler(EchoHandler().handle)
XCTAssertNotNil(resolver.response)
XCTAssertNotNil(resolver.responseBody)
XCTAssertEqual(HTTPResponseStatus.ok.code, resolver.response?.status.code ?? 0)
XCTAssertEqual(testString, resolver.responseBody?.withUnsafeBytes { String(bytes: $0, encoding: .utf8) } ?? "Nil")
}
func testHello() {
let request = HTTPRequest(method: .get, target: "/helloworld", httpVersion: HTTPVersion(major: 1, minor: 1), headers: ["X-foo": "bar"])
let resolver = TestResponseResolver(request: request, requestBody: Data())
resolver.resolveHandler(HelloWorldHandler().handle)
XCTAssertNotNil(resolver.response)
XCTAssertNotNil(resolver.responseBody)
XCTAssertEqual(HTTPResponseStatus.ok.code, resolver.response?.status.code ?? 0)
XCTAssertEqual("Hello, World!", resolver.responseBody?.withUnsafeBytes { String(bytes: $0, encoding: .utf8) } ?? "Nil")
}
func testSimpleHello() {
let request = HTTPRequest(method: .get, target: "/helloworld", httpVersion: HTTPVersion(major: 1, minor: 1), headers: ["X-foo": "bar"])
let resolver = TestResponseResolver(request: request, requestBody: Data())
let simpleHelloWebApp = SimpleResponseCreator { (_, body) -> SimpleResponseCreator.Response in
return SimpleResponseCreator.Response(
status: .ok,
headers: ["X-foo": "bar"],
body: "Hello, World!".data(using: .utf8)!
)
}
resolver.resolveHandler(simpleHelloWebApp.handle)
XCTAssertNotNil(resolver.response)
XCTAssertNotNil(resolver.responseBody)
XCTAssertEqual(HTTPResponseStatus.ok.code, resolver.response?.status.code ?? 0)
XCTAssertEqual("Hello, World!", resolver.responseBody?.withUnsafeBytes { String(bytes: $0, encoding: .utf8) } ?? "Nil")
}
static var allTests = [
("testEcho", testEcho),
("testHello", testHello),
("testSimpleHello", testSimpleHello),
("testResponseOK", testResponseOK),
]
}