@@ -274,4 +274,35 @@ public function testHeaderValuesAreTrimmed($r)
274
274
$ this ->assertSame ('Foo ' , $ r ->getHeaderLine ('OWS ' ));
275
275
$ this ->assertSame (['Foo ' ], $ r ->getHeader ('OWS ' ));
276
276
}
277
+
278
+ /**
279
+ * @dataProvider invalidWithHeaderProvider
280
+ */
281
+ public function testWithInvalidHeader ($ header , $ headerValue , $ expectedMessage ): void
282
+ {
283
+ $ r = new Response ();
284
+ $ this ->expectException (\InvalidArgumentException::class);
285
+ $ this ->expectExceptionMessage ($ expectedMessage );
286
+ $ r ->withHeader ($ header , $ headerValue );
287
+ }
288
+
289
+ public function invalidWithHeaderProvider (): iterable
290
+ {
291
+ return [
292
+ ['foo ' , [], 'Header values must be a string or an array of strings, empty array given ' ],
293
+ ['foo ' , new \stdClass (), 'Header values must be RFC 7230 compatible strings ' ],
294
+ [[], 'foo ' , 'Header name must be an RFC 7230 compatible string ' ],
295
+ [false , 'foo ' , 'Header name must be an RFC 7230 compatible string ' ],
296
+ [new \stdClass (), 'foo ' , 'Header name must be an RFC 7230 compatible string ' ],
297
+ ['' , 'foo ' , 'Header name must be an RFC 7230 compatible string ' ],
298
+ ["Content-Type \r\n\r\n" , 'foo ' , 'Header name must be an RFC 7230 compatible string ' ],
299
+ ["Content-Type \r\n" , 'foo ' , 'Header name must be an RFC 7230 compatible string ' ],
300
+ ["Content-Type \n" , 'foo ' , 'Header name must be an RFC 7230 compatible string ' ],
301
+ ["\r\nContent-Type " , 'foo ' , 'Header name must be an RFC 7230 compatible string ' ],
302
+ ["\nContent-Type " , 'foo ' , 'Header name must be an RFC 7230 compatible string ' ],
303
+ ["\n" , 'foo ' , 'Header name must be an RFC 7230 compatible string ' ],
304
+ ["\r\n" , 'foo ' , 'Header name must be an RFC 7230 compatible string ' ],
305
+ ["\t" , 'foo ' , 'Header name must be an RFC 7230 compatible string ' ],
306
+ ];
307
+ }
277
308
}
0 commit comments