@@ -446,7 +446,7 @@ def test_get_expired_cookies_manages_multiple_cookie_headers(self, cookies, now,
446446class TestCookieStorage (CookieTestBase ):
447447
448448 @pytest .mark .parametrize (
449- 'new_cookies, new_cookies_dict, expected' ,
449+ [ 'specified_cookie_header' , ' new_cookies_dict' , 'expected_effective_cookie_header' ] ,
450450 [(
451451 'new=bar' ,
452452 {'new' : 'bar' },
@@ -463,9 +463,9 @@ class TestCookieStorage(CookieTestBase):
463463 'chocolate=milk; cookie1=foo; cookie2=foo; new=bar'
464464 ),
465465 (
466- 'new=bar;; chocolate=milk;;; ' ,
466+ 'new=bar; chocolate=milk' ,
467467 {'new' : 'bar' , 'chocolate' : 'milk' },
468- 'cookie1=foo; cookie2=foo; new=bar'
468+ 'cookie1=foo; cookie2=foo; new=bar; chocolate=milk '
469469 ),
470470 (
471471 'new=bar; chocolate=milk;;;' ,
@@ -474,20 +474,35 @@ class TestCookieStorage(CookieTestBase):
474474 )
475475 ]
476476 )
477- def test_existing_and_new_cookies_sent_in_request (self , new_cookies , new_cookies_dict , expected , httpbin ):
477+ def test_existing_and_new_cookies_sent_in_request (
478+ self ,
479+ specified_cookie_header ,
480+ new_cookies_dict ,
481+ expected_effective_cookie_header ,
482+ httpbin ,
483+ ):
478484 r = http (
479485 '--session' , str (self .session_path ),
480486 '--print=H' ,
481487 httpbin .url ,
482- 'Cookie:' + new_cookies ,
488+ 'Cookie:' + specified_cookie_header ,
483489 )
484- # Note: cookies in response are in alphabetical order
485- assert f'Cookie: { expected } ' in r
490+ parsed_request_headers = {
491+ name : value for name , value in [
492+ line .split (': ' , 1 )
493+ for line in r .splitlines ()
494+ if line and ':' in line
495+ ]
496+ }
497+ # Note: cookies in the request are in an undefined order.
498+ expected_request_cookie_set = set (expected_effective_cookie_header .split ('; ' ))
499+ actual_request_cookie_set = set (parsed_request_headers ['Cookie' ].split ('; ' ))
500+ assert actual_request_cookie_set == expected_request_cookie_set
486501
487502 updated_session = json .loads (self .session_path .read_text (encoding = UTF8 ))
503+ assert 'Cookie' not in updated_session ['headers' ]
488504 for name , value in new_cookies_dict .items ():
489- assert name , value in updated_session ['cookies' ]
490- assert 'Cookie' not in updated_session ['headers' ]
505+ assert updated_session ['cookies' ][name ]['value' ] == value
491506
492507 @pytest .mark .parametrize (
493508 'cli_cookie, set_cookie, expected' ,
0 commit comments