@@ -175,7 +175,7 @@ class SwifterTestsHttpParser: XCTestCase {
175175 XCTAssertEqual ( resp? . headers [ " header2 " ] , " 2 " , " Parser should extract multiple headers from the request. " )
176176
177177 resp = try ? parser. readHttpRequest ( TestSocket ( " GET /some/path?subscript_query[]=1&subscript_query[]=2 HTTP/1.0 \n Content-Length: 10 \n \n 1234567890 " ) )
178- let queryPairs = resp? . queryParams ?? [ ]
178+ var queryPairs = resp? . queryParams ?? [ ]
179179 XCTAssertEqual ( queryPairs. count, 2 )
180180 XCTAssertEqual ( queryPairs. first? . 0 , " subscript_query[] " )
181181 XCTAssertEqual ( queryPairs. first? . 1 , " 1 " )
@@ -185,5 +185,19 @@ class SwifterTestsHttpParser: XCTestCase {
185185 XCTAssertEqual ( resp? . path, " /some/path " , " Parser should extract HTTP path value from the status line. " )
186186 XCTAssertEqual ( resp? . headers [ " content-length " ] , " 10 " , " Parser should extract Content-Length header value. " )
187187
188+ resp = try ? parser. readHttpRequest ( TestSocket ( " GET /path[]/param?a[]=1&a[]=2&b=%20 HTTP/1.0 \r \n Content-Length: 0 \r \n \r \n " ) )
189+ queryPairs = resp? . queryParams ?? [ ]
190+
191+ XCTAssertEqual ( resp? . path, " /path[]/param " )
192+ if queryPairs. count == 3 {
193+ XCTAssertEqual ( queryPairs [ 0 ] . 0 , " a[] " )
194+ XCTAssertEqual ( queryPairs [ 0 ] . 1 , " 1 " )
195+ XCTAssertEqual ( queryPairs [ 1 ] . 0 , " a[] " )
196+ XCTAssertEqual ( queryPairs [ 1 ] . 1 , " 2 " )
197+ XCTAssertEqual ( queryPairs [ 2 ] . 0 , " b " )
198+ XCTAssertEqual ( queryPairs [ 2 ] . 1 , " " ) // % escaping should keep untouch
199+ } else {
200+ XCTFail ( " queryPairs count should be 3 " )
201+ }
188202 }
189203}
0 commit comments