ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
CookiesTest.php
Go to the documentation of this file.
1<?php
2
3namespace Dflydev\FigCookies;
4
6{
7 const INTERFACE_PSR_HTTP_MESSAGE_REQUEST = 'Psr\Http\Message\RequestInterface';
8
16 public function it_creates_from_request($cookieString, array $expectedCookies)
17 {
18 $request = $this->prophesize(static::INTERFACE_PSR_HTTP_MESSAGE_REQUEST);
19 $request->getHeaderLine(Cookies::COOKIE_HEADER)->willReturn($cookieString);
20
21 $cookies = Cookies::fromRequest($request->reveal());
22
23 $this->assertEquals($expectedCookies, $cookies->getAll());
24 }
25
33 public function it_creates_from_cookie_string($cookieString, array $expectedCookies)
34 {
35 $cookies = Cookies::fromCookieString($cookieString);
36
37 $this->assertEquals($expectedCookies, $cookies->getAll());
38 }
39
47 public function it_knows_which_cookies_are_available($cookieString, array $expectedCookies)
48 {
49 $cookies = Cookies::fromCookieString($cookieString);
50
51 foreach ($expectedCookies as $expectedCookie) {
52 $this->assertTrue($cookies->has($expectedCookie->getName()));
53 }
54
55 $this->assertFalse($cookies->has('i know this cookie does not exist'));
56 }
57
62 public function it_gets_cookie_by_name($cookieString, $cookieName, Cookie $expectedCookie)
63 {
64 $cookies = Cookies::fromCookieString($cookieString);
65
66 $this->assertEquals($expectedCookie, $cookies->get($cookieName));
67 }
68
73 {
74 $cookies = new Cookies();
75
76 $cookies = $cookies->with(Cookie::create('theme', 'blue'));
77
78 $this->assertEquals('blue', $cookies->get('theme')->getValue());
79
80 $cookies = $cookies->with(Cookie::create('theme', 'red'));
81
82 $this->assertEquals('red', $cookies->get('theme')->getValue());
83
84 $cookies = $cookies->without('theme');
85
86 $this->assertFalse($cookies->has('theme'));
87 }
88
93 {
94 $cookies = (new Cookies())
95 ->with(Cookie::create('theme', 'light'))
96 ->with(Cookie::create('sessionToken', 'abc123'))
97 ;
98
99 $originalRequest = new FigCookieTestingRequest();
100 $request = $cookies->renderIntoCookieHeader($originalRequest);
101
102 $this->assertNotEquals($request, $originalRequest);
103
104 $this->assertEquals('theme=light; sessionToken=abc123', $request->getHeaderLine(Cookies::COOKIE_HEADER));
105 }
106
111 {
112 $cookies = Cookies::fromCookieString('theme=light; sessionToken=abc123; hello=world')
113 ->with(Cookie::create('theme', 'blue'))
114 ->without('sessionToken')
115 ->with(Cookie::create('who', 'me'))
116 ;
117
118 $originalRequest = new FigCookieTestingRequest();
119 $request = $cookies->renderIntoCookieHeader($originalRequest);
120
121 $this->assertNotEquals($request, $originalRequest);
122
123 $this->assertEquals('theme=blue; hello=world; who=me', $request->getHeaderLine(Cookies::COOKIE_HEADER));
124 }
125
130 {
131 //
132 // Example of accessing a cookie value.
133 //
134
135 // Simulate a request coming in with several cookies.
136 $request = (new FigCookieTestingRequest())
137 ->withHeader(Cookies::COOKIE_HEADER, 'theme=light; sessionToken=RAPELCGRQ; hello=world')
138 ;
139
140 $theme = Cookies::fromRequest($request)->get('theme')->getValue();
141
142 $this->assertEquals('light', $theme);
143 }
144
149 {
150 //
151 // Example of naive cookie decryption middleware.
152 //
153 // Shows how to access and manipulate cookies using PSR-7 Request
154 // instances from outside the Request object itself.
155 //
156
157 // Simulate a request coming in with several cookies.
158 $request = (new FigCookieTestingRequest())
159 ->withHeader(Cookies::COOKIE_HEADER, 'theme=light; sessionToken=RAPELCGRQ; hello=world')
160 ;
161
162 // Get our cookies from the request.
163 $cookies = Cookies::fromRequest($request);
164
165 // Ask for the encrypted session token.
166 $encryptedSessionToken = $cookies->get('sessionToken');
167
168 // Get the encrypted value from the cookie and decrypt it.
169 $encryptedValue = $encryptedSessionToken->getValue();
170 $decryptedValue = str_rot13($encryptedValue);
171
172 // Create a new cookie with the decrypted value.
173 $decryptedSessionToken = $encryptedSessionToken->withValue($decryptedValue);
174
175 // Include our decrypted session token with the rest of our cookies.
176 $cookies = $cookies->with($decryptedSessionToken);
177
178 // Render our cookies, along with the newly decrypted session token, into a request.
179 $request = $cookies->renderIntoCookieHeader($request);
180
181 // From this point on, any request based on this one can get the plaintext version
182 // of the session token.
183 $this->assertEquals(
184 'theme=light; sessionToken=ENCRYPTED; hello=world',
185 $request->getHeaderLine(Cookies::COOKIE_HEADER)
186 );
187 }
188
190 {
191 return [
192 [
193 '',
194 []
195 ],
196 [
197 'theme=light',
198 [
199 Cookie::create('theme', 'light'),
200 ]
201 ],
202 [
203 'theme=light; sessionToken=abc123',
204 [
205 Cookie::create('theme', 'light'),
206 Cookie::create('sessionToken', 'abc123'),
207 ]
208 ]
209 ];
210 }
211
213 {
214 return [
215 ['theme=light', 'theme', Cookie::create('theme', 'light')],
216 ['theme=', 'theme', Cookie::create('theme')],
217 ['hello=world; theme=light; sessionToken=abc123', 'theme', Cookie::create('theme', 'light')],
218 ['hello=world; theme=; sessionToken=abc123', 'theme', Cookie::create('theme')],
219 ];
220 }
221}
An exception for terminatinating execution or to throw for unit testing.
static create($name, $value=null)
Create a Cookie.
Definition: Cookie.php:73
it_gets_cookie_by_name($cookieString, $cookieName, Cookie $expectedCookie)
Definition: CookiesTest.php:62
it_creates_from_cookie_string($cookieString, array $expectedCookies)
Definition: CookiesTest.php:33
it_knows_which_cookies_are_available($cookieString, array $expectedCookies)
Definition: CookiesTest.php:47
it_creates_from_request($cookieString, array $expectedCookies)
Definition: CookiesTest.php:16
static fromCookieString($string)
Create Cookies from a Cookie header value string.
Definition: Cookies.php:110
const COOKIE_HEADER
The name of the Cookie header.
Definition: Cookies.php:12
static fromRequest(RequestInterface $request)
Create Cookies from a Request.
Definition: Cookies.php:121
$cookieName