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

TokenMaskTest   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 40
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 14
dl 0
loc 40
rs 10
c 1
b 0
f 0
wmc 5
1
<?php
2
3
namespace Yiisoft\Security\Tests;
4
5
use PHPUnit\Framework\TestCase;
6
use Yiisoft\Security\TokenMask;
7
8
class TokenMaskTest extends TestCase
9
{
10
    /**
11
     * @dataProvider maskProvider
12
     * @param mixed $unmaskedToken
13
     * @throws \Exception
14
     */
15
    public function testMaskingAndUnmasking($unmaskedToken): void
16
    {
17
        $maskedToken = TokenMask::apply($unmaskedToken);
18
19
        $this->assertGreaterThan(mb_strlen($unmaskedToken, '8bit') * 2, mb_strlen($maskedToken, '8bit'));
20
        $this->assertEquals($unmaskedToken, TokenMask::remove($maskedToken));
21
    }
22
23
    public function testUnMaskingInvalidStrings(): void
24
    {
25
        $this->assertEquals('', TokenMask::remove(''));
26
        $this->assertEquals('', TokenMask::remove('1'));
27
    }
28
29
    public function testMaskingInvalidStrings(): void
30
    {
31
        $this->expectException(\Error::class);
32
        TokenMask::apply('');
33
    }
34
35
    public function maskProvider(): array
36
    {
37
        return [
38
            ['1'],
39
            ['SimpleToken'],
40
            ['Token with special characters: %d1    5"'],
41
            ['Token with UTF8 character: †'],
42
        ];
43
    }
44
45
    public function testUnmaskTokenWithOddLength(): void
46
    {
47
        $this->assertEquals('', TokenMask::remove('YWJj'));
48
    }
49
}
50