import HTTPTypes import Hummingbird import HummingbirdTesting import NIOCore import Testing @testable import WebsiteLibrary @Suite("LocalizationMiddleware middleware") struct LocalizationMiddlewareTests { // MARK: Constants private let app: Application = .init(router: { let router = Router(context: WebsiteRequestContext.self) router.addMiddleware { LocalizationMiddleware() } router.get("language") { _, context in context.language } return router }()) // MARK: Functional tests @Test func `negotiates a supported language from the header`() async throws { try await app.test(.router) { client in try await client.execute( uri: "/language", method: .get, headers: [.acceptLanguage: "en-US,en;q=0.9"] ) { response in #expect(String(buffer: response.body) == "en") } } } @Test func `falls back to the default without a header`() async throws { try await app.test(.router) { client in try await client.execute( uri: "/language", method: .get ) { response in #expect(String(buffer: response.body) == "en") } } } }