Passed
Pull Request — master (#588)
by Alejandro
03:34
created

MissingAuthenticationExceptionTest   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 29
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 14
dl 0
loc 29
rs 10
c 1
b 0
f 0
wmc 2

2 Methods

Rating   Name   Duplication   Size   Complexity  
A exceptionIsProperlyCreatedFromExpectedTypes() 0 15 1
A provideExpectedTypes() 0 6 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace ShlinkioTest\Shlink\Rest\Exception;
6
7
use PHPUnit\Framework\TestCase;
8
use Shlinkio\Shlink\Rest\Exception\MissingAuthenticationException;
9
10
use function implode;
11
use function sprintf;
12
13
class MissingAuthenticationExceptionTest extends TestCase
14
{
15
    /**
16
     * @test
17
     * @dataProvider provideExpectedTypes
18
     */
19
    public function exceptionIsProperlyCreatedFromExpectedTypes(array $expectedTypes): void
20
    {
21
        $expectedMessage = sprintf(
22
            'Expected one of the following authentication headers, ["%s"], but none were provided',
23
            implode('", "', $expectedTypes)
24
        );
25
26
        $e = MissingAuthenticationException::fromExpectedTypes($expectedTypes);
27
28
        $this->assertEquals($expectedMessage, $e->getMessage());
29
        $this->assertEquals($expectedMessage, $e->getDetail());
30
        $this->assertEquals('Invalid authorization', $e->getTitle());
31
        $this->assertEquals('INVALID_AUTHORIZATION', $e->getType());
32
        $this->assertEquals(401, $e->getStatus());
33
        $this->assertEquals(['expectedTypes' => $expectedTypes], $e->getAdditionalData());
34
    }
35
36
    public function provideExpectedTypes(): iterable
37
    {
38
        yield [['foo', 'bar']];
39
        yield [['something']];
40
        yield [[]];
41
        yield [['foo', 'bar', 'baz']];
42
    }
43
}
44