@@ -39,7 +39,7 @@ import FoundationNetworking
39
39
final class HTTPServerTests : XCTestCase {
40
40
41
41
func testRequests_AreMatchedToHandlers_ViaRoute( ) async throws {
42
- let server = HTTPServer ( port : 8008 )
42
+ let server = HTTPServer . make ( )
43
43
44
44
await server. appendRoute ( " /accepted " ) { _ in
45
45
HTTPResponse . make ( statusCode: . accepted)
@@ -62,7 +62,7 @@ final class HTTPServerTests: XCTestCase {
62
62
}
63
63
64
64
func testUnmatchedRequests_Return404( ) async throws {
65
- let server = HTTPServer ( port : 8008 )
65
+ let server = HTTPServer . make ( )
66
66
67
67
let response = await server. handleRequest ( . make( method: . GET, path: " /accepted " ) )
68
68
XCTAssertEqual (
@@ -72,7 +72,7 @@ final class HTTPServerTests: XCTestCase {
72
72
}
73
73
74
74
func testHandlerErrors_Return500( ) async throws {
75
- let server = HTTPServer ( port : 8008 ) { _ in
75
+ let server = HTTPServer . make ( ) { _ in
76
76
throw SocketError . disconnected
77
77
}
78
78
@@ -84,7 +84,7 @@ final class HTTPServerTests: XCTestCase {
84
84
}
85
85
86
86
func testHandlerTimeout_Returns500( ) async throws {
87
- let server = HTTPServer ( port : 8008 , timeout: 0.1 ) { _ in
87
+ let server = HTTPServer . make ( timeout: 0.1 ) { _ in
88
88
try await Task . sleep ( nanoseconds: 1_000_000_000 )
89
89
return HTTPResponse . make ( statusCode: . accepted)
90
90
}
@@ -97,7 +97,7 @@ final class HTTPServerTests: XCTestCase {
97
97
}
98
98
99
99
func testKeepAlive_IsAddedToResponses( ) async throws {
100
- let server = HTTPServer ( port : 8008 )
100
+ let server = HTTPServer . make ( )
101
101
102
102
var response = await server. handleRequest (
103
103
. make( method: . GET, path: " /accepted " , headers: [ . connection: " keep-alive " ] )
@@ -115,7 +115,7 @@ final class HTTPServerTests: XCTestCase {
115
115
}
116
116
117
117
func testServer_ReturnsFile_WhenFileHandlerIsMatched( ) async throws {
118
- let server = HTTPServer ( port: 8009 , logger : . print ( ) )
118
+ let server = HTTPServer . make ( port: 8009 )
119
119
await server. appendRoute ( " * " , to: . file( named: " fish.json " , in: . module) )
120
120
let task = Task { try await server. start ( ) }
121
121
@@ -131,7 +131,7 @@ final class HTTPServerTests: XCTestCase {
131
131
132
132
#if canImport(Darwin)
133
133
func testServer_Returns500_WhenHandlerTimesout( ) async throws {
134
- let server = HTTPServer ( port : 8008 , timeout: 0.1 )
134
+ let server = HTTPServer . make ( timeout: 0.1 )
135
135
await server. appendRoute ( " * " ) { _ in
136
136
try await Task . sleep ( nanoseconds: 5_000_000_000 )
137
137
return . make( statusCode: . ok)
@@ -150,4 +150,25 @@ final class HTTPServerTests: XCTestCase {
150
150
#endif
151
151
}
152
152
153
+ extension HTTPServer {
153
154
155
+ static func make( port: UInt16 = 8008 ,
156
+ timeout: TimeInterval = 15 ,
157
+ logger: HTTPLogging ? = defaultLogger ( ) ,
158
+ handler: HTTPHandler ? = nil ) -> HTTPServer {
159
+ HTTPServer ( port: port,
160
+ timeout: timeout,
161
+ logger: logger,
162
+ handler: handler)
163
+ }
164
+
165
+ static func make( port: UInt16 = 8008 ,
166
+ timeout: TimeInterval = 15 ,
167
+ logger: HTTPLogging ? = . print( ) ,
168
+ handler: @Sendable @escaping ( HTTPRequest) async throws -> HTTPResponse ) -> HTTPServer {
169
+ HTTPServer ( port: port,
170
+ timeout: timeout,
171
+ logger: logger,
172
+ handler: ClosureHTTPHandler ( handler) )
173
+ }
174
+ }
0 commit comments