@@ -98,21 +98,60 @@ public function testPassingUserHashNotAllowed($arg, $options)
98
98
public function testUserHashAnonymous ($ arg , $ options )
99
99
{
100
100
$ userContextListener = new UserContextListener ($ arg );
101
-
102
101
$ request = new Request ();
103
102
104
- $ event = new CacheEvent ($ this ->kernel , $ request );
105
-
106
- $ userContextListener ->preHandle ($ event );
107
- $ response = $ event ->getResponse ();
108
-
109
- $ this ->assertNull ($ response );
110
103
if ($ options ['anonymous_hash ' ]) {
104
+ $ event = new CacheEvent ($ this ->kernel , $ request );
105
+ $ userContextListener ->preHandle ($ event );
106
+
111
107
$ this ->assertTrue ($ request ->headers ->has ($ options ['user_hash_header ' ]));
112
108
$ this ->assertSame ($ options ['anonymous_hash ' ], $ request ->headers ->get ($ options ['user_hash_header ' ]));
113
109
} else {
114
- $ this ->assertFalse ($ request ->headers ->has ($ options ['user_hash_header ' ]));
110
+ $ hashRequest = Request::create ($ options ['user_hash_uri ' ], $ options ['user_hash_method ' ], [], [], [], $ request ->server ->all ());
111
+ $ hashRequest ->attributes ->set ('internalRequest ' , true );
112
+ $ hashRequest ->headers ->set ('Accept ' , $ options ['user_hash_accept_header ' ]);
113
+ // Ensure request properties have been filled up.
114
+ $ hashRequest ->getPathInfo ();
115
+ $ hashRequest ->getMethod ();
116
+
117
+ $ expectedContextHash = 'my_generated_hash ' ;
118
+ // Just avoid the response to modify the request object, otherwise it's impossible to test objects equality.
119
+ /** @var \Symfony\Component\HttpFoundation\Response|\PHPUnit_Framework_MockObject_MockObject $hashResponse */
120
+ $ hashResponse = $ this ->getMockBuilder ('\Symfony\Component\HttpFoundation\Response ' )
121
+ ->setMethods (['prepare ' ])
122
+ ->getMock ();
123
+ $ hashResponse ->headers ->set ($ options ['user_hash_header ' ], $ expectedContextHash );
124
+
125
+ $ that = $ this ;
126
+ $ kernel = $ this ->kernel
127
+ ->shouldReceive ('handle ' )
128
+ ->once ()
129
+ ->with (
130
+ \Mockery::on (
131
+ function (Request $ request ) use ($ that , $ hashRequest ) {
132
+ // we need to call some methods to get the internal fields initialized
133
+ $ request ->getMethod ();
134
+ $ request ->getPathInfo ();
135
+ $ that ->assertEquals ($ hashRequest , $ request );
136
+ $ that ->assertCount (0 , $ request ->cookies ->all ());
137
+
138
+ return true ;
139
+ }
140
+ )
141
+ )
142
+ ->andReturn ($ hashResponse )
143
+ ->getMock ();
144
+
145
+ $ event = new CacheEvent ($ kernel , $ request );
146
+ $ userContextListener ->preHandle ($ event );
147
+
148
+ $ this ->assertTrue ($ request ->headers ->has ($ options ['user_hash_header ' ]));
149
+ $ this ->assertSame ($ expectedContextHash , $ request ->headers ->get ($ options ['user_hash_header ' ]));
115
150
}
151
+
152
+ $ response = $ event ->getResponse ();
153
+
154
+ $ this ->assertNull ($ response );
116
155
}
117
156
118
157
/**
0 commit comments