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

exceptionIsProperlyCreatedFromExpectedTypes()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 15
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 10
nc 1
nop 1
dl 0
loc 15
rs 9.9332
c 1
b 0
f 0
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