1<?php
2
3/*
4 * This file is part of the Symfony package.
5 *
6 * (c) Fabien Potencier <fabien@symfony.com>
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11
12namespace Symfony\Component\HttpFoundation\Tests\Session\Storage\Handler;
13
14use PHPUnit\Framework\TestCase;
15use Symfony\Component\HttpFoundation\Session\Storage\Handler\WriteCheckSessionHandler;
16
17/**
18 * @author Adrien Brault <adrien.brault@gmail.com>
19 *
20 * @group legacy
21 */
22class WriteCheckSessionHandlerTest extends TestCase
23{
24    public function test()
25    {
26        $wrappedSessionHandlerMock = $this->getMockBuilder('SessionHandlerInterface')->getMock();
27        $writeCheckSessionHandler = new WriteCheckSessionHandler($wrappedSessionHandlerMock);
28
29        $wrappedSessionHandlerMock
30            ->expects($this->once())
31            ->method('close')
32            ->with()
33            ->willReturn(true)
34        ;
35
36        $this->assertTrue($writeCheckSessionHandler->close());
37    }
38
39    public function testWrite()
40    {
41        $wrappedSessionHandlerMock = $this->getMockBuilder('SessionHandlerInterface')->getMock();
42        $writeCheckSessionHandler = new WriteCheckSessionHandler($wrappedSessionHandlerMock);
43
44        $wrappedSessionHandlerMock
45            ->expects($this->once())
46            ->method('write')
47            ->with('foo', 'bar')
48            ->willReturn(true)
49        ;
50
51        $this->assertTrue($writeCheckSessionHandler->write('foo', 'bar'));
52    }
53
54    public function testSkippedWrite()
55    {
56        $wrappedSessionHandlerMock = $this->getMockBuilder('SessionHandlerInterface')->getMock();
57        $writeCheckSessionHandler = new WriteCheckSessionHandler($wrappedSessionHandlerMock);
58
59        $wrappedSessionHandlerMock
60            ->expects($this->once())
61            ->method('read')
62            ->with('foo')
63            ->willReturn('bar')
64        ;
65
66        $wrappedSessionHandlerMock
67            ->expects($this->never())
68            ->method('write')
69        ;
70
71        $this->assertEquals('bar', $writeCheckSessionHandler->read('foo'));
72        $this->assertTrue($writeCheckSessionHandler->write('foo', 'bar'));
73    }
74
75    public function testNonSkippedWrite()
76    {
77        $wrappedSessionHandlerMock = $this->getMockBuilder('SessionHandlerInterface')->getMock();
78        $writeCheckSessionHandler = new WriteCheckSessionHandler($wrappedSessionHandlerMock);
79
80        $wrappedSessionHandlerMock
81            ->expects($this->once())
82            ->method('read')
83            ->with('foo')
84            ->willReturn('bar')
85        ;
86
87        $wrappedSessionHandlerMock
88            ->expects($this->once())
89            ->method('write')
90            ->with('foo', 'baZZZ')
91            ->willReturn(true)
92        ;
93
94        $this->assertEquals('bar', $writeCheckSessionHandler->read('foo'));
95        $this->assertTrue($writeCheckSessionHandler->write('foo', 'baZZZ'));
96    }
97}
98