|
|
@@ -76,28 +76,23 @@ class EncryptedCookieMiddlewareTest extends TestCase
|
|
|
/**
|
|
|
* Test decoding malformed cookies
|
|
|
*
|
|
|
+ * @dataProvider malformedCookies
|
|
|
+ * @param string $cookie
|
|
|
* @return void
|
|
|
*/
|
|
|
- public function testDecodeMalformedCookies()
|
|
|
+ public function testDecodeMalformedCookies($cookie)
|
|
|
{
|
|
|
$request = new ServerRequest(['url' => '/cookies/nom']);
|
|
|
- $request = $request->withCookieParams([
|
|
|
- 'secret_empty' => '',
|
|
|
- 'secret_too_short' => 'Q2FrZQ',
|
|
|
- 'secret_altered' => 'Q2FrZQ==.ModifiedBase64Data==',
|
|
|
- ]);
|
|
|
- $this->assertNotEquals('decoded', $request->getCookie('decoded'));
|
|
|
+ $request = $request->withCookieParams(['secret' => $cookie]);
|
|
|
|
|
|
$response = new Response();
|
|
|
$next = function ($req, $res) {
|
|
|
- $this->assertSame('', $req->getCookie('secret_empty'));
|
|
|
- $this->assertSame('', $req->getCookie('secret_too_short'));
|
|
|
- $this->assertSame('', $req->getCookie('secret_altered'));
|
|
|
+ $this->assertSame('', $req->getCookie('secret'));
|
|
|
|
|
|
return $res;
|
|
|
};
|
|
|
$middleware = new EncryptedCookieMiddleware(
|
|
|
- ['secret_empty', 'secret_too_short', 'secret_altered'],
|
|
|
+ ['secret'],
|
|
|
$this->_getCookieEncryptionKey(),
|
|
|
'aes'
|
|
|
);
|
|
|
@@ -105,6 +100,23 @@ class EncryptedCookieMiddlewareTest extends TestCase
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * Data provider for malformed cookies.
|
|
|
+ *
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function malformedCookies()
|
|
|
+ {
|
|
|
+ $encrypted = $this->_encrypt('secret data', 'aes');
|
|
|
+
|
|
|
+ return [
|
|
|
+ 'empty' => [''],
|
|
|
+ 'wrong prefix' => [substr_replace($encrypted, 'foo', 0, 3)],
|
|
|
+ 'altered' => [str_replace('M', 'A', $encrypted)],
|
|
|
+ 'invalid chars' => [str_replace('M', 'M#', $encrypted)],
|
|
|
+ ];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* Test encoding cookies in the set-cookie header.
|
|
|
*
|
|
|
* @return void
|