Completed
Pull Request — master (#484)
by
unknown
04:41
created

testConstructCorrectInterfaceWithoutCustomUri()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 10
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 6
nc 1
nop 0
1
<?php
2
3
namespace OAuthTest\Unit\OAuth2\Service;
4
5
use OAuth\OAuth2\Service\Buffer;
6
use OAuth\Common\Token\TokenInterface;
7
8
class BufferTest extends \PHPUnit_Framework_TestCase
9
{
10
    /**
11
     * @covers OAuth\OAuth2\Service\Buffer::__construct
12
     */
13
    public function testConstructCorrectInterfaceWithoutCustomUri()
14
    {
15
        $service = new Buffer(
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\Buffer::__construct
26
     */
27
    public function testConstructCorrectInstanceWithoutCustomUri()
28
    {
29
        $service = new Buffer(
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\Buffer::__construct
40
     */
41
    public function testConstructCorrectInstanceWithCustomUri()
42
    {
43
        $service = new Buffer(
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\Buffer::__construct
56
     * @covers OAuth\OAuth2\Service\Buffer::getAuthorizationEndpoint
57
     */
58
    public function testGetAuthorizationEndpoint()
59
    {
60
        $service = new Buffer(
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('https://bufferapp.com/oauth2/authorize', $service->getAuthorizationEndpoint()->getAbsoluteUri());
67
    }
68
69
    /**
70
     * @covers OAuth\OAuth2\Service\Buffer::__construct
71
     * @covers OAuth\OAuth2\Service\Buffer::getAccessTokenEndpoint
72
     */
73
    public function testGetAccessTokenEndpoint()
74
    {
75
        $service = new Buffer(
76
            $this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
77
            $this->getMock('\\OAuth\\Common\\Http\\Client\\ClientInterface'),
78
            $this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface')
79
        );
80
81
        $this->assertSame('https://api.bufferapp.com/1/oauth2/token.json', $service->getAccessTokenEndpoint()->getAbsoluteUri());
82
    }
83
84
    /**
85
     * @covers OAuth\OAuth2\Service\Buffer::__construct
86
     * @covers OAuth\OAuth2\Service\Buffer::getAuthorizationMethod
87
     */
88
    public function testGetAuthorizationMethod()
89
    {
90
        $client = $this->getMock('\\OAuth\\Common\\Http\\Client\\ClientInterface');
91
        $client->expects($this->once())->method('retrieveResponse')->will($this->returnArgument(0));
92
93
        $token = $this->getMock('\\OAuth\\OAuth2\\Token\\TokenInterface');
94
        $token->expects($this->once())->method('getEndOfLife')->will($this->returnValue(TokenInterface::EOL_NEVER_EXPIRES));
95
        $token->expects($this->once())->method('getAccessToken')->will($this->returnValue('foo'));
96
97
        $storage = $this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface');
98
        $storage->expects($this->once())->method('retrieveAccessToken')->will($this->returnValue($token));
99
100
        $service = new Buffer(
101
            $this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
102
            $client,
103
            $storage
104
        );
105
106
        $uri         = $service->request('https://pieterhordijk.com/my/awesome/path');
107
        $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...
108
109
        $this->assertSame('access_token=foo', $absoluteUri['query']);
110
    }
111
112
    /**
113
     * @covers OAuth\OAuth2\Service\Buffer::__construct
114
     * @covers OAuth\OAuth2\Service\Buffer::parseAccessTokenResponse
115
     */
116
    public function testParseAccessTokenResponseThrowsExceptionOnError()
117
    {
118
        $client = $this->getMock('\\OAuth\\Common\\Http\\Client\\ClientInterface');
119
        $client->expects($this->once())->method('retrieveResponse')->will($this->returnValue('error=some_error'));
120
121
        $service = new Buffer(
122
            $this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
123
            $client,
124
            $this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface')
125
        );
126
127
        $this->setExpectedException('\\OAuth\\Common\\Http\\Exception\\TokenResponseException');
128
129
        $service->requestAccessToken('foo');
130
    }
131
132
    /**
133
     * @covers OAuth\OAuth2\Service\Buffer::__construct
134
     * @covers OAuth\OAuth2\Service\Buffer::parseAccessTokenResponse
135
     * @covers OAuth\OAuth2\Service\Buffer::requestAccessToken
136
     */
137
    public function testParseAccessTokenResponseValid()
138
    {
139
        $client = $this->getMock('\\OAuth\\Common\\Http\\Client\\ClientInterface');
140
        $client->expects($this->once())->method('retrieveResponse')->will($this->returnValue('{"access_token":"foo"}'));
141
142
        $service = new Buffer(
143
            $this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
144
            $client,
145
            $this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface')
146
        );
147
148
        $this->assertInstanceOf('\\OAuth\\OAuth2\\Token\\StdOAuth2Token', $service->requestAccessToken('foo'));
149
    }
150
}