@@ -114,7 +114,7 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
114
114
) else { return }
115
115
XCTAssertEqual ( response. headers [ " content-length " ] , [ " 4 " ] )
116
116
guard let body = await XCTAssertNoThrowWithResult (
117
- try await response. body. collect ( )
117
+ try await response. body. collect ( upTo : 1024 )
118
118
) else { return }
119
119
XCTAssertEqual ( body, ByteBuffer ( string: " 1234 " ) )
120
120
}
@@ -137,7 +137,7 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
137
137
) else { return }
138
138
XCTAssertEqual ( response. headers [ " content-length " ] , [ ] )
139
139
guard let body = await XCTAssertNoThrowWithResult (
140
- try await response. body. collect ( )
140
+ try await response. body. collect ( upTo : 1024 )
141
141
) else { return }
142
142
XCTAssertEqual ( body, ByteBuffer ( string: " 1234 " ) )
143
143
}
@@ -160,7 +160,7 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
160
160
) else { return }
161
161
XCTAssertEqual ( response. headers [ " content-length " ] , [ ] )
162
162
guard let body = await XCTAssertNoThrowWithResult (
163
- try await response. body. collect ( )
163
+ try await response. body. collect ( upTo : 1024 )
164
164
) else { return }
165
165
XCTAssertEqual ( body, ByteBuffer ( string: " 1234 " ) )
166
166
}
@@ -183,7 +183,7 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
183
183
) else { return }
184
184
XCTAssertEqual ( response. headers [ " content-length " ] , [ " 4 " ] )
185
185
guard let body = await XCTAssertNoThrowWithResult (
186
- try await response. body. collect ( )
186
+ try await response. body. collect ( upTo : 1024 )
187
187
) else { return }
188
188
XCTAssertEqual ( body, ByteBuffer ( string: " 1234 " ) )
189
189
}
@@ -210,7 +210,7 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
210
210
) else { return }
211
211
XCTAssertEqual ( response. headers [ " content-length " ] , [ ] )
212
212
guard let body = await XCTAssertNoThrowWithResult (
213
- try await response. body. collect ( )
213
+ try await response. body. collect ( upTo : 1024 )
214
214
) else { return }
215
215
XCTAssertEqual ( body, ByteBuffer ( string: " 1234 " ) )
216
216
}
@@ -233,7 +233,7 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
233
233
) else { return }
234
234
XCTAssertEqual ( response. headers [ " content-length " ] , [ ] )
235
235
guard let body = await XCTAssertNoThrowWithResult (
236
- try await response. body. collect ( )
236
+ try await response. body. collect ( upTo : 1024 )
237
237
) else { return }
238
238
XCTAssertEqual ( body, ByteBuffer ( string: " 1234 " ) )
239
239
}
@@ -580,7 +580,7 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
580
580
) else {
581
581
return
582
582
}
583
- guard let body = await XCTAssertNoThrowWithResult ( try await response. body. collect ( ) ) else { return }
583
+ guard let body = await XCTAssertNoThrowWithResult ( try await response. body. collect ( upTo : 1024 ) ) else { return }
584
584
var maybeRequestInfo : RequestInfo ?
585
585
XCTAssertNoThrow ( maybeRequestInfo = try JSONDecoder ( ) . decode ( RequestInfo . self, from: body) )
586
586
guard let requestInfo = maybeRequestInfo else { return }
@@ -641,7 +641,7 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
641
641
) else { return }
642
642
XCTAssertEqual ( response1. headers [ " content-length " ] , [ ] )
643
643
guard let body = await XCTAssertNoThrowWithResult (
644
- try await response1. body. collect ( )
644
+ try await response1. body. collect ( upTo : 1024 )
645
645
) else { return }
646
646
XCTAssertEqual ( body, ByteBuffer ( string: " 1234 " ) )
647
647
@@ -650,7 +650,7 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
650
650
) else { return }
651
651
XCTAssertEqual ( response2. headers [ " content-length " ] , [ ] )
652
652
guard let body = await XCTAssertNoThrowWithResult (
653
- try await response2. body. collect ( )
653
+ try await response2. body. collect ( upTo : 1024 )
654
654
) else { return }
655
655
XCTAssertEqual ( body, ByteBuffer ( string: " 1234 " ) )
656
656
}
@@ -803,13 +803,24 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
803
803
XCTAssertEqual ( response. version, . http2)
804
804
}
805
805
}
806
- }
807
806
808
- extension AsyncSequence where Element == ByteBuffer {
809
- func collect( ) async rethrows -> ByteBuffer {
810
- try await self . reduce ( into: ByteBuffer ( ) ) { accumulatingBuffer, nextBuffer in
811
- var nextBuffer = nextBuffer
812
- accumulatingBuffer. writeBuffer ( & nextBuffer)
807
+ func testSimpleContentLengthErrorNoBody( ) {
808
+ guard #available( macOS 10 . 15 , iOS 13 . 0 , watchOS 6 . 0 , tvOS 13 . 0 , * ) else { return }
809
+ XCTAsyncTest {
810
+ let bin = HTTPBin ( . http2( compress: false ) )
811
+ defer { XCTAssertNoThrow ( try bin. shutdown ( ) ) }
812
+ let client = makeDefaultHTTPClient ( )
813
+ defer { XCTAssertNoThrow ( try client. syncShutdown ( ) ) }
814
+ let logger = Logger ( label: " HTTPClient " , factory: StreamLogHandler . standardOutput ( label: ) )
815
+ let request = HTTPClientRequest ( url: " https://localhost: \( bin. port) /content-length-without-body " )
816
+ guard let response = await XCTAssertNoThrowWithResult (
817
+ try await client. execute ( request, deadline: . now( ) + . seconds( 10 ) , logger: logger)
818
+ ) else { return }
819
+ await XCTAssertThrowsError (
820
+ try await response. body. collect ( upTo: 3 )
821
+ ) {
822
+ XCTAssertEqualTypeAndValue ( $0, NIOTooManyBytesError ( ) )
823
+ }
813
824
}
814
825
}
815
826
}
0 commit comments