69 lines
3.2 KiB
Swift
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),
|
|
]
|
|
}
|