Passed
Push — master ( 784e69...f2d35a )
by Alexander
07:36
created

MacTest   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 47
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 23
dl 0
loc 47
rs 10
c 1
b 0
f 0
wmc 5
1
<?php
2
3
namespace Yiisoft\Security\Tests;
4
5
require_once __DIR__ . '/MockHelper.php';
6
7
use PHPUnit\Framework\TestCase;
8
use Yiisoft\Security\DataIsTamperedException;
9
use Yiisoft\Security\Mac;
10
use Yiisoft\Security\MockHelper;
11
12
class MacTest extends TestCase
13
{
14
    protected function tearDown(): void
15
    {
16
        MockHelper::resetMocks();
17
    }
18
19
    public function testOriginalMessageIsExtracted(): void
20
    {
21
        $mac = new Mac();
22
        $data = 'known data';
23
        $key = 'secret';
24
25
        $signedData = $mac->sign($data, $key);
26
        $this->assertNotSame($data, $signedData);
27
        $this->assertSame($data, $mac->getMessage($signedData, $key));
28
    }
29
30
    public function testDataTamperingIsDetected(): void
31
    {
32
        $mac = new Mac();
33
        $data = 'known data';
34
        $key = 'secret';
35
36
        $signedData = $mac->sign($data, $key);
37
        $signedData[strlen($signedData) - 1] = 'A';
38
39
        $this->expectException(DataIsTamperedException::class);
40
        $mac->getMessage($signedData, $key);
41
    }
42
43
    public function testSignException()
44
    {
45
        $this->expectException(\RuntimeException::class);
46
47
        MockHelper::$mock_hash_hmac = false;
48
        $mac = new Mac();
49
        $mac->sign('test', 'test');
50
    }
51
52
    public function testGetMessageException()
53
    {
54
        $this->expectException(\RuntimeException::class);
55
56
        MockHelper::$mock_hash_hmac = false;
57
        $mac = new Mac();
58
        $mac->getMessage('test', 'test');
59
    }
60
}
61