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\HttpKernel\Tests\Config;
13
14use Symfony\Component\HttpKernel\Config\EnvParametersResource;
15
16class EnvParametersResourceTest extends \PHPUnit_Framework_TestCase
17{
18    protected $prefix = '__DUMMY_';
19    protected $initialEnv;
20    protected $resource;
21
22    protected function setUp()
23    {
24        $this->initialEnv = array(
25            $this->prefix.'1' => 'foo',
26            $this->prefix.'2' => 'bar',
27        );
28
29        foreach ($this->initialEnv as $key => $value) {
30            $_SERVER[$key] = $value;
31        }
32
33        $this->resource = new EnvParametersResource($this->prefix);
34    }
35
36    protected function tearDown()
37    {
38        foreach ($_SERVER as $key => $value) {
39            if (0 === strpos($key, $this->prefix)) {
40                unset($_SERVER[$key]);
41            }
42        }
43    }
44
45    public function testGetResource()
46    {
47        $this->assertSame(
48            array('prefix' => $this->prefix, 'variables' => $this->initialEnv),
49            $this->resource->getResource(),
50            '->getResource() returns the resource'
51        );
52    }
53
54    public function testToString()
55    {
56        $this->assertSame(
57            serialize(array('prefix' => $this->prefix, 'variables' => $this->initialEnv)),
58            (string) $this->resource
59        );
60    }
61
62    public function testIsFreshNotChanged()
63    {
64        $this->assertTrue(
65            $this->resource->isFresh(time()),
66            '->isFresh() returns true if the variables have not changed'
67        );
68    }
69
70    public function testIsFreshValueChanged()
71    {
72        reset($this->initialEnv);
73        $_SERVER[key($this->initialEnv)] = 'baz';
74
75        $this->assertFalse(
76            $this->resource->isFresh(time()),
77            '->isFresh() returns false if a variable has been changed'
78        );
79    }
80
81    public function testIsFreshValueRemoved()
82    {
83        reset($this->initialEnv);
84        unset($_SERVER[key($this->initialEnv)]);
85
86        $this->assertFalse(
87            $this->resource->isFresh(time()),
88            '->isFresh() returns false if a variable has been removed'
89        );
90    }
91
92    public function testIsFreshValueAdded()
93    {
94        $_SERVER[$this->prefix.'3'] = 'foo';
95
96        $this->assertFalse(
97            $this->resource->isFresh(time()),
98            '->isFresh() returns false if a variable has been added'
99        );
100    }
101
102    public function testSerializeUnserialize()
103    {
104        $this->assertEquals($this->resource, unserialize(serialize($this->resource)));
105    }
106}
107