Completed
Branch master (910c19)
by Dmitri
01:43
created

ChainStorageTest   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 51
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 18
dl 0
loc 51
rs 10
c 0
b 0
f 0
wmc 4
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Damax\Bundle\ApiAuthBundle\Tests\Key\Storage;
6
7
use Damax\Bundle\ApiAuthBundle\Key\Storage\ChainStorage;
8
use Damax\Bundle\ApiAuthBundle\Key\Storage\InMemoryStorage;
9
use Damax\Bundle\ApiAuthBundle\Key\Storage\KeyNotFound;
10
use PHPUnit\Framework\TestCase;
11
12
class ChainStorageTest extends TestCase
13
{
14
    /**
15
     * @var ChainStorage
16
     */
17
    private $storage;
18
19
    protected function setUp()
20
    {
21
        $this->storage = new ChainStorage([
22
            new InMemoryStorage(['john.doe' => 'ABC'], 60),
23
            new InMemoryStorage(['jane.doe' => 'XYZ'], 90),
24
        ]);
25
    }
26
27
    /**
28
     * @test
29
     */
30
    public function it_checks_key_existence()
31
    {
32
        $this->assertTrue($this->storage->has('ABC'));
33
        $this->assertTrue($this->storage->has('XYZ'));
34
        $this->assertFalse($this->storage->has('123'));
35
    }
36
37
    /**
38
     * @test
39
     */
40
    public function it_retrieves_key()
41
    {
42
        $key = $this->storage->get('ABC');
43
44
        $this->assertEquals('ABC', $key->key());
45
        $this->assertEquals('john.doe', $key->identity());
46
        $this->assertEquals(60, $key->ttl());
47
48
        $key = $this->storage->get('XYZ');
49
50
        $this->assertEquals('XYZ', $key->key());
51
        $this->assertEquals('jane.doe', $key->identity());
52
        $this->assertEquals(90, $key->ttl());
53
    }
54
55
    /**
56
     * @test
57
     */
58
    public function it_throws_exception_when_retrieving_missing_key()
59
    {
60
        $this->expectException(KeyNotFound::class);
61
62
        $this->storage->get('123');
63
    }
64
}
65