Passed
Pull Request — master (#306)
by Tobias
02:05
created

CookieJarTest   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 76
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
dl 0
loc 76
rs 10
c 0
b 0
f 0
wmc 5

4 Methods

Rating   Name   Duplication   Size   Complexity  
A testAddCookieHeadersAddsCookieHeaders() 0 14 1
A testProcessSetCookieHeadersSetsCookies() 0 17 2
A testClearExpiredCookiesRemovesExpiredCookies() 0 23 1
A testClear() 0 13 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Buzz\Test\Unit\Cookie;
6
7
use Buzz\Util\Cookie;
8
use Buzz\Util\CookieJar;
9
use Nyholm\Psr7\Request;
10
use Nyholm\Psr7\Response;
11
use PHPUnit\Framework\TestCase;
12
13
class CookieJarTest extends TestCase
14
{
15
    public function testProcessSetCookieHeadersSetsCookies()
16
    {
17
        $request = new Request('GET', 'http://www.example.com');
18
19
        $response = new Response(200, [
20
            'Set-Cookie' => ['SESSION2=qwerty', 'SESSION1=asdf'],
21
        ]);
22
23
        $jar = new CookieJar();
24
        $jar->processSetCookieHeaders($request, $response);
25
26
        $cookies = $jar->getCookies();
27
28
        $this->assertEquals(2, count($cookies));
29
        foreach ($cookies as $cookie) {
30
            $this->assertEquals('www.example.com', $cookie->getAttribute(Cookie::ATTR_DOMAIN));
31
            $this->assertTrue(in_array($cookie->getName(), ['SESSION1', 'SESSION2']));
32
        }
33
    }
34
35
    public function testAddCookieHeadersAddsCookieHeaders()
36
    {
37
        $request = new Request('GET', 'http://www.example.com');
38
39
        $cookie = new Cookie();
40
        $cookie->setName('SESSION');
41
        $cookie->setValue('asdf');
42
        $cookie->setAttribute(Cookie::ATTR_DOMAIN, '.example.com');
43
44
        $jar = new CookieJar();
45
        $jar->setCookies([$cookie]);
46
        $request = $jar->addCookieHeaders($request);
47
48
        $this->assertEquals('SESSION=asdf', $request->getHeaderLine('Cookie'));
49
    }
50
51
    public function testClearExpiredCookiesRemovesExpiredCookies()
52
    {
53
        $cookie = new Cookie();
54
        $cookie->setName('SESSION');
55
        $cookie->setValue('asdf');
56
        $cookie->setAttribute(Cookie::ATTR_EXPIRES, 'Fri, 01-Dec-1999 00:00:00 GMT');
57
58
        $jar = new CookieJar();
59
        $jar->addCookie($cookie);
60
        $jar->clearExpiredCookies();
61
62
        $this->assertEquals(0, count($jar->getCookies()));
63
64
        $cookie = new Cookie();
65
        $cookie->setName('SESSION');
66
        $cookie->setValue('asdf');
67
        $cookie->setAttribute(Cookie::ATTR_MAX_AGE, '-60');
68
69
        $jar = new CookieJar();
70
        $jar->addCookie($cookie);
71
        $jar->clearExpiredCookies();
72
73
        $this->assertEquals(0, count($jar->getCookies()));
74
    }
75
76
    public function testClear()
77
    {
78
        $cookie = new Cookie();
79
        $cookie->setName('SESSION');
80
        $cookie->setValue('asdf');
81
        $cookie->setAttribute(Cookie::ATTR_EXPIRES, 'Fri, 01-Dec-1999 00:00:00 GMT');
82
83
        $jar = new CookieJar();
84
        $jar->addCookie($cookie);
85
        $this->assertEquals(1, count($jar->getCookies()));
86
87
        $jar->clear();
88
        $this->assertEquals(0, count($jar->getCookies()));
89
    }
90
}
91