@@ -3100,11 +3100,9 @@ class HTTPClientTests: XCTestCase {
3100
3100
3101
3101
var request = try Request ( url: httpBin. baseURL)
3102
3102
request. body = . byteBuffer( body)
3103
- let delegate = ResponseAccumulator ( request: request)
3104
- delegate. maxBodySize = 10
3105
3103
XCTAssertThrowsError ( try self . defaultClient. execute (
3106
3104
request: request,
3107
- delegate: delegate
3105
+ delegate: ResponseAccumulator ( request : request , maxBodySize : 10 )
3108
3106
) . wait ( ) ) { error in
3109
3107
XCTAssertTrue ( error is ResponseAccumulator . ResponseTooBigError , " unexpected error \( error) " )
3110
3108
}
@@ -3118,15 +3116,29 @@ class HTTPClientTests: XCTestCase {
3118
3116
3119
3117
var request = try Request ( url: httpBin. baseURL)
3120
3118
request. body = . byteBuffer( body)
3121
- let delegate = ResponseAccumulator ( request: request)
3122
- delegate. maxBodySize = 10
3123
3119
let response = try self . defaultClient. execute (
3124
3120
request: request,
3125
- delegate: delegate
3121
+ delegate: ResponseAccumulator ( request : request , maxBodySize : 10 )
3126
3122
) . wait ( )
3127
3123
3128
3124
XCTAssertEqual ( response. body, body)
3129
3125
}
3126
+
3127
+ func testResponseAccumulatorMaxBodySizeLimitExceedingWithContentLengthButMethodIsHead( ) throws {
3128
+ let httpBin = HTTPBin ( . http1_1( ssl: false , compress: false ) ) { _ in HTTPEchoHeaders ( ) }
3129
+ defer { XCTAssertNoThrow ( try httpBin. shutdown ( ) ) }
3130
+
3131
+ let body = ByteBuffer ( bytes: 0 ..< 11 )
3132
+
3133
+ var request = try Request ( url: httpBin. baseURL, method: . HEAD)
3134
+ request. body = . byteBuffer( body)
3135
+ let response = try self . defaultClient. execute (
3136
+ request: request,
3137
+ delegate: ResponseAccumulator ( request: request, maxBodySize: 10 )
3138
+ ) . wait ( )
3139
+
3140
+ XCTAssertEqual ( response. body ?? ByteBuffer ( ) , ByteBuffer ( ) )
3141
+ }
3130
3142
3131
3143
func testResponseAccumulatorMaxBodySizeLimitExceedingWithTransferEncodingChuncked( ) throws {
3132
3144
let httpBin = HTTPBin ( . http1_1( ssl: false , compress: false ) ) { _ in HTTPEchoHandler ( ) }
@@ -3138,11 +3150,9 @@ class HTTPClientTests: XCTestCase {
3138
3150
request. body = . stream { writer in
3139
3151
writer. write ( . byteBuffer( body) )
3140
3152
}
3141
- let delegate = ResponseAccumulator ( request: request)
3142
- delegate. maxBodySize = 10
3143
3153
XCTAssertThrowsError ( try self . defaultClient. execute (
3144
3154
request: request,
3145
- delegate: delegate
3155
+ delegate: ResponseAccumulator ( request : request , maxBodySize : 10 )
3146
3156
) . wait ( ) ) { error in
3147
3157
XCTAssertTrue ( error is ResponseAccumulator . ResponseTooBigError , " unexpected error \( error) " )
3148
3158
}
@@ -3158,11 +3168,9 @@ class HTTPClientTests: XCTestCase {
3158
3168
request. body = . stream { writer in
3159
3169
writer. write ( . byteBuffer( body) )
3160
3170
}
3161
- let delegate = ResponseAccumulator ( request: request)
3162
- delegate. maxBodySize = 10
3163
3171
let response = try self . defaultClient. execute (
3164
3172
request: request,
3165
- delegate: delegate
3173
+ delegate: ResponseAccumulator ( request : request , maxBodySize : 10 )
3166
3174
) . wait ( )
3167
3175
3168
3176
XCTAssertEqual ( response. body, body)
0 commit comments