@@ -160,6 +160,7 @@ public function testUserHashUserWithSession($arg, $options)
160160 $ request ->getMethod ();
161161 $ request ->getPathInfo ();
162162 $ that ->assertEquals ($ hashRequest , $ request );
163+ $ that ->assertCount (2 , $ request ->cookies ->all ());
163164
164165 return true ;
165166 }),
@@ -177,6 +178,54 @@ public function testUserHashUserWithSession($arg, $options)
177178 $ this ->assertSame ($ expectedContextHash , $ request ->headers ->get ($ options ['user_hash_header ' ]));
178179 }
179180
181+ /**
182+ * @dataProvider provideConfigOptions
183+ */
184+ public function testUserHashUserWithAuthorizationHeader ($ arg , $ options )
185+ {
186+ $ userContextSubscriber = new UserContextSubscriber ($ arg );
187+
188+ // The foo cookie should not be available in the eventual hash request anymore
189+ $ request = Request::create ('/foo ' , 'GET ' , array (), array ('foo ' => 'bar ' ), array (), array ('HTTP_AUTHORIZATION ' => 'foo ' ));
190+
191+ $ hashRequest = Request::create ($ options ['user_hash_uri ' ], $ options ['user_hash_method ' ], array (), array (), array (), $ request ->server ->all ());
192+ $ hashRequest ->attributes ->set ('internalRequest ' , true );
193+ $ hashRequest ->headers ->set ('Accept ' , $ options ['user_hash_accept_header ' ]);
194+
195+ // Ensure request properties have been filled up.
196+ $ hashRequest ->getPathInfo ();
197+ $ hashRequest ->getMethod ();
198+
199+ $ expectedContextHash = 'my_generated_hash ' ;
200+ $ hashResponse = new Response ();
201+ $ hashResponse ->headers ->set ($ options ['user_hash_header ' ], $ expectedContextHash );
202+
203+ $ that = $ this ;
204+ $ this ->kernel
205+ ->expects ($ this ->once ())
206+ ->method ('handle ' )
207+ ->with (
208+ $ this ->callback (function (Request $ request ) use ($ that , $ hashRequest ) {
209+ // we need to call some methods to get the internal fields initialized
210+ $ request ->getMethod ();
211+ $ request ->getPathInfo ();
212+ $ that ->assertEquals ($ hashRequest , $ request );
213+ $ that ->assertCount (0 , $ request ->cookies ->all ());
214+
215+ return true ;
216+ })
217+ )
218+ ->will ($ this ->returnValue ($ hashResponse ));
219+
220+ $ event = new CacheEvent ($ this ->kernel , $ request );
221+
222+ $ userContextSubscriber ->preHandle ($ event );
223+ $ response = $ event ->getResponse ();
224+
225+ $ this ->assertNull ($ response );
226+ $ this ->assertTrue ($ request ->headers ->has ($ options ['user_hash_header ' ]));
227+ $ this ->assertSame ($ expectedContextHash , $ request ->headers ->get ($ options ['user_hash_header ' ]));
228+ }
180229
181230 /**
182231 * @expectedException \InvalidArgumentException
0 commit comments