Skip to content

Commit 0e84f21

Browse files
committed
Add tests
1 parent 6c7d88d commit 0e84f21

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

Tests/HummingbirdTests/FileMiddlewareTests.swift

+49
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,55 @@ final class FileMiddlewareTests: XCTestCase {
316316
}
317317
}
318318

319+
func testOnThrow404() async throws {
320+
let router = Router()
321+
router.middlewares.add(FileMiddleware(".", searchForIndexHtml: true))
322+
router.get { _, _ -> String in
323+
throw HTTPError(.notFound)
324+
}
325+
let app = Application(responder: router.buildResponder())
326+
327+
let text = "Test file contents"
328+
let data = Data(text.utf8)
329+
let fileURL = URL(fileURLWithPath: "index.html")
330+
XCTAssertNoThrow(try data.write(to: fileURL))
331+
defer { XCTAssertNoThrow(try FileManager.default.removeItem(at: fileURL)) }
332+
333+
try await app.test(.router) { client in
334+
try await client.execute(uri: "/", method: .get) { response in
335+
XCTAssertEqual(String(buffer: response.body), text)
336+
}
337+
}
338+
}
339+
340+
func testOnThrowCustom404() async throws {
341+
let router = Router()
342+
router.middlewares.add(FileMiddleware(".", searchForIndexHtml: true))
343+
struct Custom404Error: HTTPResponseError {
344+
var status: HTTPResponse.Status { .notFound }
345+
346+
func response(from request: Request, context: some RequestContext) throws -> Response {
347+
Response(status: status)
348+
}
349+
}
350+
router.get { _, _ -> String in
351+
throw Custom404Error()
352+
}
353+
let app = Application(responder: router.buildResponder())
354+
355+
let text = "Test file contents"
356+
let data = Data(text.utf8)
357+
let fileURL = URL(fileURLWithPath: "index.html")
358+
XCTAssertNoThrow(try data.write(to: fileURL))
359+
defer { XCTAssertNoThrow(try FileManager.default.removeItem(at: fileURL)) }
360+
361+
try await app.test(.router) { client in
362+
try await client.execute(uri: "/", method: .get) { response in
363+
XCTAssertEqual(String(buffer: response.body), text)
364+
}
365+
}
366+
}
367+
319368
func testFolder() async throws {
320369
let router = Router()
321370
router.middlewares.add(FileMiddleware(".", searchForIndexHtml: false))

0 commit comments

Comments
 (0)