@@ -17,67 +17,73 @@ import HTTPTypes
17
17
import XCTest
18
18
@_spi ( Generated) @testable import OpenAPIRuntime
19
19
20
-
21
20
final class Test_ErrorHandlingMiddlewareTests : XCTestCase {
22
21
static let mockRequest : HTTPRequest = . init( soar_path: " http://abc.com " , method: . get)
23
22
static let mockBody : HTTPBody = HTTPBody ( " hello " )
24
23
static let errorHandlingMiddleware = ErrorHandlingMiddleware ( )
25
24
26
25
func testSuccessfulRequest( ) async throws {
27
- let response = try await Test_ErrorHandlingMiddlewareTests . errorHandlingMiddleware. intercept ( Test_ErrorHandlingMiddlewareTests . mockRequest,
28
- body: Test_ErrorHandlingMiddlewareTests . mockBody,
29
- metadata: . init( ) , operationID: " testop " ,
30
- next: getNextMiddleware ( failurePhase: . never) )
26
+ let response = try await Test_ErrorHandlingMiddlewareTests . errorHandlingMiddleware. intercept (
27
+ Test_ErrorHandlingMiddlewareTests . mockRequest,
28
+ body: Test_ErrorHandlingMiddlewareTests . mockBody,
29
+ metadata: . init( ) ,
30
+ operationID: " testop " ,
31
+ next: getNextMiddleware ( failurePhase: . never)
32
+ )
31
33
XCTAssertEqual ( response. 0 . status, . ok)
32
34
}
33
-
34
35
func testError_confirmingToProtocol_convertedToResponse( ) async throws {
35
- let ( response, responseBody) = try await Test_ErrorHandlingMiddlewareTests . errorHandlingMiddleware. intercept ( Test_ErrorHandlingMiddlewareTests . mockRequest,
36
- body: Test_ErrorHandlingMiddlewareTests . mockBody,
37
- metadata: . init( ) , operationID: " testop " ,
38
- next: getNextMiddleware ( failurePhase: . convertibleError) )
36
+ let ( response, responseBody) = try await Test_ErrorHandlingMiddlewareTests . errorHandlingMiddleware. intercept (
37
+ Test_ErrorHandlingMiddlewareTests . mockRequest,
38
+ body: Test_ErrorHandlingMiddlewareTests . mockBody,
39
+ metadata: . init( ) ,
40
+ operationID: " testop " ,
41
+ next: getNextMiddleware ( failurePhase: . convertibleError)
42
+ )
39
43
XCTAssertEqual ( response. status, . badGateway)
40
44
XCTAssertEqual ( response. headerFields, [ . contentType: " application/json " ] )
41
45
XCTAssertEqual ( responseBody, TEST_HTTP_BODY)
42
46
}
43
47
44
-
45
48
func testError_confirmingToProtocolWithoutAllValues_convertedToResponse( ) async throws {
46
- let ( response, responseBody) = try await Test_ErrorHandlingMiddlewareTests . errorHandlingMiddleware. intercept ( Test_ErrorHandlingMiddlewareTests . mockRequest,
47
- body: Test_ErrorHandlingMiddlewareTests . mockBody,
48
- metadata: . init( ) , operationID: " testop " ,
49
- next: getNextMiddleware ( failurePhase: . partialConvertibleError) )
49
+ let ( response, responseBody) = try await Test_ErrorHandlingMiddlewareTests . errorHandlingMiddleware. intercept (
50
+ Test_ErrorHandlingMiddlewareTests . mockRequest,
51
+ body: Test_ErrorHandlingMiddlewareTests . mockBody,
52
+ metadata: . init( ) ,
53
+ operationID: " testop " ,
54
+ next: getNextMiddleware ( failurePhase: . partialConvertibleError)
55
+ )
50
56
XCTAssertEqual ( response. status, . badRequest)
51
57
XCTAssertEqual ( response. headerFields, [ : ] )
52
58
XCTAssertEqual ( responseBody, nil )
53
59
}
54
-
55
60
func testError_notConfirmingToProtocol_returns500( ) async throws {
56
- let ( response, responseBody) = try await Test_ErrorHandlingMiddlewareTests . errorHandlingMiddleware. intercept ( Test_ErrorHandlingMiddlewareTests . mockRequest,
57
- body: Test_ErrorHandlingMiddlewareTests . mockBody,
58
- metadata: . init( ) , operationID: " testop " ,
59
- next: getNextMiddleware ( failurePhase: . nonConvertibleError) )
61
+ let ( response, responseBody) = try await Test_ErrorHandlingMiddlewareTests . errorHandlingMiddleware. intercept (
62
+ Test_ErrorHandlingMiddlewareTests . mockRequest,
63
+ body: Test_ErrorHandlingMiddlewareTests . mockBody,
64
+ metadata: . init( ) ,
65
+ operationID: " testop " ,
66
+ next: getNextMiddleware ( failurePhase: . nonConvertibleError)
67
+ )
60
68
XCTAssertEqual ( response. status, . internalServerError)
61
69
XCTAssertEqual ( response. headerFields, [ : ] )
62
70
XCTAssertEqual ( responseBody, nil )
63
71
}
64
-
65
- private func getNextMiddleware( failurePhase: MockErrorMiddleware_Next . FailurePhase ) -> @Sendable ( HTTPTypes . HTTPRequest,
66
- OpenAPIRuntime . HTTPBody? ,
67
- OpenAPIRuntime . ServerRequestMetadata) async throws ->
68
- ( HTTPTypes . HTTPResponse , OpenAPIRuntime . HTTPBody ? ) {
69
-
70
- let mockNext : @Sendable ( HTTPTypes . HTTPRequest,
71
- OpenAPIRuntime . HTTPBody? ,
72
- OpenAPIRuntime . ServerRequestMetadata) async throws ->
73
- ( HTTPTypes . HTTPResponse , OpenAPIRuntime . HTTPBody ? ) =
74
- { request, body, metadata in
75
- try await MockErrorMiddleware_Next ( failurePhase: failurePhase) . intercept ( request,
76
- body: body,
77
- metadata: metadata,
78
- operationID: " testop " ,
79
- next: { _, _, _ in ( HTTPResponse . init ( status: . ok) , nil ) } )
80
- }
72
+ private func getNextMiddleware( failurePhase: MockErrorMiddleware_Next . FailurePhase ) -> @Sendable (
73
+ HTTPTypes . HTTPRequest, OpenAPIRuntime . HTTPBody? , OpenAPIRuntime . ServerRequestMetadata
74
+ ) async throws -> ( HTTPTypes . HTTPResponse , OpenAPIRuntime . HTTPBody ? ) {
75
+ let mockNext :
76
+ @Sendable ( HTTPTypes . HTTPRequest, OpenAPIRuntime . HTTPBody? , OpenAPIRuntime . ServerRequestMetadata)
77
+ async throws -> ( HTTPTypes . HTTPResponse , OpenAPIRuntime . HTTPBody ? ) = { request, body, metadata in
78
+ try await MockErrorMiddleware_Next ( failurePhase: failurePhase)
79
+ . intercept (
80
+ request,
81
+ body: body,
82
+ metadata: metadata,
83
+ operationID: " testop " ,
84
+ next: { _, _, _ in ( HTTPResponse . init ( status: . ok) , nil ) }
85
+ )
86
+ }
81
87
return mockNext
82
88
}
83
89
}
@@ -91,8 +97,7 @@ struct MockErrorMiddleware_Next: ServerMiddleware {
91
97
}
92
98
var failurePhase : FailurePhase = . never
93
99
94
- @Sendable
95
- func intercept(
100
+ @Sendable func intercept(
96
101
_ request: HTTPRequest ,
97
102
body: HTTPBody ? ,
98
103
metadata: ServerRequestMetadata ,
@@ -101,25 +106,21 @@ struct MockErrorMiddleware_Next: ServerMiddleware {
101
106
) async throws -> ( HTTPResponse , HTTPBody ? ) {
102
107
var error : ( any Error ) ?
103
108
switch failurePhase {
104
- case . never:
105
- break
106
- case . convertibleError:
107
- error = ConvertibleError ( )
108
- case . nonConvertibleError:
109
- error = NonConvertibleError ( )
110
- case . partialConvertibleError:
111
- error = PartialConvertibleError ( )
109
+ case . never: break
110
+ case . convertibleError: error = ConvertibleError ( )
111
+ case . nonConvertibleError: error = NonConvertibleError ( )
112
+ case . partialConvertibleError: error = PartialConvertibleError ( )
112
113
}
113
-
114
114
if let underlyingError = error {
115
- throw ServerError ( operationID: operationID,
116
- request: request,
117
- requestBody: body,
118
- requestMetadata: metadata,
119
- causeDescription: " " ,
120
- underlyingError: underlyingError)
115
+ throw ServerError (
116
+ operationID: operationID,
117
+ request: request,
118
+ requestBody: body,
119
+ requestMetadata: metadata,
120
+ causeDescription: " " ,
121
+ underlyingError: underlyingError
122
+ )
121
123
}
122
-
123
124
let ( response, responseBody) = try await next ( request, body, metadata)
124
125
return ( response, responseBody)
125
126
}
@@ -137,4 +138,4 @@ struct PartialConvertibleError: Error, HTTPResponseConvertible {
137
138
138
139
struct NonConvertibleError : Error { }
139
140
140
- let TEST_HTTP_BODY = HTTPBody ( try ! JSONEncoder ( ) . encode ( [ " error " , " test error " ] ) )
141
+ let TEST_HTTP_BODY = HTTPBody ( try ! JSONEncoder ( ) . encode ( [ " error " , " test error " ] ) )
0 commit comments