Completed
Push — master ( 29bda6...e00326 )
by David
9s
created

testConstructCorrectInstanceWithCustomUri()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 12
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
dl 0
loc 12
rs 9.4285
c 1
b 0
f 1
cc 1
eloc 8
nc 1
nop 0
1
<?php
2
3
namespace OAuthTest\Unit\OAuth2\Service;
4
5
use OAuth\OAuth2\Service\Deezer;
6
use OAuth\Common\Token\TokenInterface;
7
8
class DeezerTest extends \PHPUnit_Framework_TestCase
9
{
10
    /**
11
     * @covers OAuth\OAuth2\Service\Deezer::__construct
12
     */
13
    public function testConstructCorrectInterfaceWithoutCustomUri()
14
    {
15
        $service = new Deezer(
16
            $this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
17
            $this->getMock('\\OAuth\\Common\\Http\\Client\\ClientInterface'),
18
            $this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface')
19
        );
20
21
        $this->assertInstanceOf('\\OAuth\\OAuth2\\Service\\ServiceInterface', $service);
22
    }
23
24
    /**
25
     * @covers OAuth\OAuth2\Service\Deezer::__construct
26
     */
27
    public function testConstructCorrectInstanceWithoutCustomUri()
28
    {
29
        $service = new Deezer(
30
            $this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
31
            $this->getMock('\\OAuth\\Common\\Http\\Client\\ClientInterface'),
32
            $this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface')
33
        );
34
35
        $this->assertInstanceOf('\\OAuth\\OAuth2\\Service\\AbstractService', $service);
36
    }
37
38
    /**
39
     * @covers OAuth\OAuth2\Service\Deezer::__construct
40
     */
41
    public function testConstructCorrectInstanceWithCustomUri()
42
    {
43
        $service = new Deezer(
44
            $this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
45
            $this->getMock('\\OAuth\\Common\\Http\\Client\\ClientInterface'),
46
            $this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface'),
47
            array(),
48
            $this->getMock('\\OAuth\\Common\\Http\\Uri\\UriInterface')
49
        );
50
51
        $this->assertInstanceOf('\\OAuth\\OAuth2\\Service\\AbstractService', $service);
52
    }
53
54
    /**
55
     * @covers OAuth\OAuth2\Service\Deezer::__construct
56
     * @covers OAuth\OAuth2\Service\Deezer::getAuthorizationEndpoint
57
     */
58
    public function testGetAuthorizationEndpoint()
59
    {
60
        $service = new Deezer(
61
            $this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
62
            $this->getMock('\\OAuth\\Common\\Http\\Client\\ClientInterface'),
63
            $this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface')
64
        );
65
66
        $this->assertSame(
67
            'https://connect.deezer.com/oauth/auth.php',
68
            $service->getAuthorizationEndpoint()->getAbsoluteUri()
69
        );
70
    }
71
72
    /**
73
     * @covers OAuth\OAuth2\Service\Deezer::__construct
74
     * @covers OAuth\OAuth2\Service\Deezer::getAccessTokenEndpoint
75
     */
76
    public function testGetAccessTokenEndpoint()
77
    {
78
        $service = new Deezer(
79
            $this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
80
            $this->getMock('\\OAuth\\Common\\Http\\Client\\ClientInterface'),
81
            $this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface')
82
        );
83
84
        $this->assertSame(
85
            'https://connect.deezer.com/oauth/access_token.php',
86
            $service->getAccessTokenEndpoint()->getAbsoluteUri()
87
        );
88
    }
89
90
    /**
91
     * @covers OAuth\OAuth2\Service\Deezer::__construct
92
     * @covers OAuth\OAuth2\Service\Deezer::getAuthorizationMethod
93
     */
94
    public function testGetAuthorizationMethod()
95
    {
96
        $client = $this->getMock('\\OAuth\\Common\\Http\\Client\\ClientInterface');
97
        $client->expects($this->once())->method('retrieveResponse')->will($this->returnArgument(0));
98
99
        $token = $this->getMock('\\OAuth\\OAuth2\\Token\\TokenInterface');
100
        $token->expects($this->once())->method('getEndOfLife')->will($this->returnValue(TokenInterface::EOL_NEVER_EXPIRES));
101
        $token->expects($this->once())->method('getAccessToken')->will($this->returnValue('foo'));
102
103
        $storage = $this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface');
104
        $storage->expects($this->once())->method('retrieveAccessToken')->will($this->returnValue($token));
105
106
        $service = new Deezer(
107
            $this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
108
            $client,
109
            $storage
110
        );
111
112
        $uri         = $service->request('https://pieterhordijk.com/my/awesome/path');
113
        $absoluteUri = parse_url($uri->getAbsoluteUri());
0 ignored issues
show
Bug introduced by
The method getAbsoluteUri cannot be called on $uri (of type string).

Methods can only be called on objects. This check looks for methods being called on variables that have been inferred to never be objects.

Loading history...
114
115
        $this->assertSame('access_token=foo', $absoluteUri['query']);
116
    }
117
118
    /**
119
     * @covers OAuth\OAuth2\Service\Deezer::__construct
120
     * @covers OAuth\OAuth2\Service\Deezer::parseAccessTokenResponse
121
     */
122
    public function testParseAccessTokenResponseThrowsExceptionOnNulledResponse()
123
    {
124
        $client = $this->getMock('\\OAuth\\Common\\Http\\Client\\ClientInterface');
125
        $client->expects($this->once())->method('retrieveResponse')->will($this->returnValue(null));
126
127
        $service = new Deezer(
128
            $this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
129
            $client,
130
            $this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface')
131
        );
132
133
        $this->setExpectedException('\\OAuth\\Common\\Http\\Exception\\TokenResponseException');
134
135
        $service->requestAccessToken('foo');
136
    }
137
138
    /**
139
     * @covers OAuth\OAuth2\Service\Deezer::__construct
140
     * @covers OAuth\OAuth2\Service\Deezer::parseAccessTokenResponse
141
     */
142
    public function testParseAccessTokenResponseThrowsExceptionOnError()
143
    {
144
        $client = $this->getMock('\\OAuth\\Common\\Http\\Client\\ClientInterface');
145
        $client->expects($this->once())->method('retrieveResponse')->will($this->returnValue('error_reason=user_denied'));
146
147
        $service = new Deezer(
148
            $this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
149
            $client,
150
            $this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface')
151
        );
152
153
        $this->setExpectedException('\\OAuth\\Common\\Http\\Exception\\TokenResponseException');
154
155
        $service->requestAccessToken('foo');
156
    }
157
158
    /**
159
     * @covers OAuth\OAuth2\Service\Deezer::__construct
160
     * @covers OAuth\OAuth2\Service\Deezer::parseAccessTokenResponse
161
     */
162
    public function testParseAccessTokenResponseValid()
163
    {
164
        $client = $this->getMock('\\OAuth\\Common\\Http\\Client\\ClientInterface');
165
        $client->expects($this->once())->method('retrieveResponse')->will($this->returnValue('access_token=foo&expires=bar'));
166
167
        $service = new Deezer(
168
            $this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
169
            $client,
170
            $this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface')
171
        );
172
173
        $this->assertInstanceOf('\\OAuth\\OAuth2\\Token\\StdOAuth2Token', $service->requestAccessToken('foo'));
174
    }
175
}
176