@@ -382,6 +382,10 @@ public void testHeaders() throws Exception {
382
382
if (method .equals ("HEAD" ) == false ) {
383
383
standardHeaders .add ("Content-length" );
384
384
}
385
+ if (method .equals ("HEAD" ) == true || method .equals ("GET" ) == true || method .equals ("OPTIONS" ) == true ) {
386
+ standardHeaders .add ("Upgrade" );
387
+ }
388
+
385
389
final Header [] requestHeaders = RestClientTestUtil .randomHeaders (getRandom (), "Header" );
386
390
final int statusCode = randomStatusCode (getRandom ());
387
391
Request request = new Request (method , "/" + statusCode );
@@ -400,11 +404,15 @@ public void testHeaders() throws Exception {
400
404
assertEquals (method , esResponse .getRequestLine ().getMethod ());
401
405
assertEquals (statusCode , esResponse .getStatusLine ().getStatusCode ());
402
406
assertEquals (pathPrefix + "/" + statusCode , esResponse .getRequestLine ().getUri ());
407
+
403
408
assertHeaders (defaultHeaders , requestHeaders , esResponse .getHeaders (), standardHeaders );
409
+ final Set <String > removedHeaders = new HashSet <>();
404
410
for (final Header responseHeader : esResponse .getHeaders ()) {
405
411
String name = responseHeader .getName ();
406
- if (name .startsWith ("Header" ) == false ) {
412
+ // Some headers could be returned multiple times in response, like Connection fe.
413
+ if (name .startsWith ("Header" ) == false && removedHeaders .contains (name ) == false ) {
407
414
assertTrue ("unknown header was returned " + name , standardHeaders .remove (name ));
415
+ removedHeaders .add (name );
408
416
}
409
417
}
410
418
assertTrue ("some expected standard headers weren't returned: " + standardHeaders , standardHeaders .isEmpty ());
0 commit comments