@@ -33,22 +33,16 @@ struct BreezeLambdaWebHookServiceTests {
3333
3434 let decoder = JSONDecoder ( )
3535
36- @Test ( " HandlerContext initializes with provided HTTP client " )
37- func handlerContextInitializesWithClient( ) throws {
38- let httpClient = HTTPClient ( eventLoopGroupProvider: . singleton)
39- defer { try ? httpClient. syncShutdown ( ) }
40- let context = HandlerContext ( httpClient: httpClient)
41- #expect( context. httpClient === httpClient)
42- }
43-
4436 @Test ( " Service creates HTTP client with correct timeout configuration " )
4537 func serviceCreatesHTTPClientWithCorrectConfig( ) async throws {
4638 try await testGracefulShutdown { gracefulShutdownTestTrigger in
4739 let ( gracefulStream, continuation) = AsyncStream< Void> . makeStream( )
4840 try await withThrowingTaskGroup ( of: Void . self) { group in
4941 let logger = Logger ( label: " test " )
5042 let config = BreezeHTTPClientConfig ( timeout: . seconds( 30 ) , logger: logger)
51- let sut = BreezeLambdaWebHookService < MockHandler > ( config: config)
43+ let handlerContext = HandlerContext ( config: config)
44+ let lambdaHandler = MockHandler ( handlerContext: handlerContext)
45+ let sut = LambdaRuntime ( body: lambdaHandler. handle)
5246 group. addTask {
5347 try await Task . sleep ( nanoseconds: 1_000_000_000 )
5448 gracefulShutdownTestTrigger. triggerGracefulShutdown ( )
@@ -60,12 +54,12 @@ struct BreezeLambdaWebHookServiceTests {
6054 } onGracefulShutdown: {
6155 logger. info ( " On Graceful Shutdown " )
6256 continuation. yield ( )
63- continuation. finish ( )
6457 }
6558 }
6659 for await _ in gracefulStream {
60+ continuation. finish ( )
61+ try handlerContext. syncShutdown ( )
6762 logger. info ( " Graceful shutdown stream received " )
68- let handlerContext = try #require( await sut. handlerContext)
6963 #expect( handlerContext. httpClient. configuration. timeout. read == . seconds( 30 ) )
7064 #expect( handlerContext. httpClient. configuration. timeout. connect == . seconds( 30 ) )
7165 group. cancelAll ( )
@@ -74,29 +68,16 @@ struct BreezeLambdaWebHookServiceTests {
7468 }
7569 }
7670
77- @Test ( " Handler throws when handlerContext is nil " )
78- func handlerThrowsWhenContextIsNil( ) async throws {
79- let logger = Logger ( label: " test " )
80- let config = BreezeHTTPClientConfig ( timeout: . seconds( 30 ) , logger: logger)
81- let service = BreezeLambdaWebHookService < MockHandler > ( config: config)
82-
83- let createRequest = try Fixtures . fixture ( name: Fixtures . getWebHook, type: " json " )
84- let event = try decoder. decode ( APIGatewayV2Request . self, from: createRequest)
85- let context = LambdaContext ( requestID: " req1 " , traceID: " trace1 " , invokedFunctionARN: " " , deadline: LambdaClock ( ) . now, logger: logger)
86-
87- await #expect( throws: BreezeClientServiceError . invalidHandler) {
88- try await service. handler ( event: event, context: context)
89- }
90- }
91-
9271 @Test ( " Handler delegates to specific handler implementation " )
9372 func handlerDelegatesToImplementation( ) async throws {
9473 try await testGracefulShutdown { gracefulShutdownTestTrigger in
9574 let ( gracefulStream, continuation) = AsyncStream< Void> . makeStream( )
9675 try await withThrowingTaskGroup ( of: Void . self) { group in
9776 let logger = Logger ( label: " test " )
9877 let config = BreezeHTTPClientConfig ( timeout: . seconds( 30 ) , logger: logger)
99- let sut = BreezeLambdaWebHookService < MockHandler > ( config: config)
78+ let handlerContext = HandlerContext ( config: config)
79+ let lambdaHandler = MockHandler ( handlerContext: handlerContext)
80+ let sut = LambdaRuntime ( body: lambdaHandler. handle)
10081 group. addTask {
10182 try await Task . sleep ( nanoseconds: 1_000_000_000 )
10283 gracefulShutdownTestTrigger. triggerGracefulShutdown ( )
@@ -116,14 +97,13 @@ struct BreezeLambdaWebHookServiceTests {
11697 let createRequest = try Fixtures . fixture ( name: Fixtures . getWebHook, type: " json " )
11798 let event = try decoder. decode ( APIGatewayV2Request . self, from: createRequest)
11899 let context = LambdaContext ( requestID: " req1 " , traceID: " trace1 " , invokedFunctionARN: " " , deadline: LambdaClock ( ) . now, logger: logger)
119-
120- let response = try await sut. handler ( event: event, context: context)
121- let handlerContext = try #require( await sut. handlerContext)
100+ let response = try await lambdaHandler. handle ( event, context: context)
122101 #expect( response. statusCode == 200 )
123102 #expect( response. body == " Mock response " )
124103 #expect( handlerContext. httpClient. configuration. timeout. read == . seconds( 30 ) )
125104 #expect( handlerContext. httpClient. configuration. timeout. connect == . seconds( 30 ) )
126105 group. cancelAll ( )
106+ try handlerContext. syncShutdown ( )
127107 }
128108 }
129109 }
0 commit comments