Failed Conditions
Push — ng ( a2b1ac...8ea883 )
by Florent
04:25
created

RequestUriRuleTest   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 96
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Importance

Changes 0
Metric Value
wmc 6
lcom 1
cbo 3
dl 0
loc 96
rs 10
c 0
b 0
f 0

6 Methods

Rating   Name   Duplication   Size   Complexity  
A noResponseType() 0 8 1
A theParameterMustBeAnArray() 0 12 1
A theParameterMustBeAnArrayOfString() 0 12 1
A theParameterMustBeAnArrayOfUris() 0 12 1
A theParameterIsValid() 0 14 1
A getCallable() 0 6 1
1
<?php
2
3
declare(strict_types=1);
4
5
/*
6
 * The MIT License (MIT)
7
 *
8
 * Copyright (c) 2014-2018 Spomky-Labs
9
 *
10
 * This software may be modified and distributed under the terms
11
 * of the MIT license.  See the LICENSE file for details.
12
 */
13
14
namespace OAuth2Framework\Component\AuthorizationEndpoint\Tests\ResponseMode;
15
16
use OAuth2Framework\Component\Core\Client\ClientId;
17
use OAuth2Framework\Component\AuthorizationEndpoint\Rule\RequestUriRule;
18
use OAuth2Framework\Component\Core\DataBag\DataBag;
19
use PHPUnit\Framework\TestCase;
20
21
/**
22
 * @group Tests
23
 */
24
class RequestUriRuleTest extends TestCase
25
{
26
    /**
27
     * @test
28
     */
29
    public function noResponseType()
30
    {
31
        $clientId = ClientId::create('CLIENT_ID');
32
        $commandParameters = DataBag::create([]);
33
        $rule = new RequestUriRule();
34
        $validatedParameters = $rule->handle($clientId, $commandParameters, DataBag::create([]), $this->getCallable());
35
        self::assertFalse($validatedParameters->has('request_uris'));
36
    }
37
38
    /**
39
     * @test
40
     * @expectedException \InvalidArgumentException
41
     * @expectedExceptionMessage The parameter "request_uris" must be a list of URI.
42
     */
43
    public function theParameterMustBeAnArray()
44
    {
45
        $clientId = ClientId::create('CLIENT_ID');
46
        $commandParameters = DataBag::create([
47
            'request_uris' => 'hello',
48
        ]);
49
        $rule = new RequestUriRule();
50
        $validatedParameters = DataBag::create([
51
            'response_types' => ['code'],
52
        ]);
53
        $rule->handle($clientId, $commandParameters, $validatedParameters, $this->getCallable());
54
    }
55
56
    /**
57
     * @test
58
     * @expectedException \InvalidArgumentException
59
     * @expectedExceptionMessage The parameter "request_uris" must be a list of URI.
60
     */
61
    public function theParameterMustBeAnArrayOfString()
62
    {
63
        $clientId = ClientId::create('CLIENT_ID');
64
        $commandParameters = DataBag::create([
65
            'request_uris' => [123],
66
        ]);
67
        $rule = new RequestUriRule();
68
        $validatedParameters = DataBag::create([
69
            'response_types' => ['code'],
70
        ]);
71
        $rule->handle($clientId, $commandParameters, $validatedParameters, $this->getCallable());
72
    }
73
74
    /**
75
     * @test
76
     * @expectedException \InvalidArgumentException
77
     * @expectedExceptionMessage The parameter "request_uris" must be a list of URI.
78
     */
79
    public function theParameterMustBeAnArrayOfUris()
80
    {
81
        $clientId = ClientId::create('CLIENT_ID');
82
        $commandParameters = DataBag::create([
83
            'request_uris' => ['hello'],
84
        ]);
85
        $rule = new RequestUriRule();
86
        $validatedParameters = DataBag::create([
87
            'response_types' => ['code'],
88
        ]);
89
        $rule->handle($clientId, $commandParameters, $validatedParameters, $this->getCallable());
90
    }
91
92
    /**
93
     * @test
94
     */
95
    public function theParameterIsValid()
96
    {
97
        $clientId = ClientId::create('CLIENT_ID');
98
        $commandParameters = DataBag::create([
99
            'request_uris' => ['https://foo.com/bar'],
100
        ]);
101
        $rule = new RequestUriRule();
102
        $validatedParameters = DataBag::create([
103
            'response_types' => ['code'],
104
        ]);
105
        $validatedParameters = $rule->handle($clientId, $commandParameters, $validatedParameters, $this->getCallable());
106
        self::assertTrue($validatedParameters->has('request_uris'));
107
        self::assertEquals(['https://foo.com/bar'], $validatedParameters->get('request_uris'));
108
    }
109
110
    /**
111
     * @return callable
112
     */
113
    private function getCallable(): callable
114
    {
115
        return function (ClientId $clientId, DataBag $commandParameters, DataBag $validatedParameters): DataBag {
116
            return $validatedParameters;
117
        };
118
    }
119
}
120