GoogleTest   A
last analyzed

Complexity

Total Complexity 11

Size/Duplication

Total Lines 185
Duplicated Lines 0 %

Importance

Changes 4
Bugs 0 Features 0
Metric Value
wmc 11
eloc 75
dl 0
loc 185
c 4
b 0
f 0
rs 10

10 Methods

Rating   Name   Duplication   Size   Complexity  
A testGetAuthorizationEndpoint() 0 18 1
A testGetAuthorizationEndpointException() 0 16 2
A testConstructCorrectInstanceWithoutCustomUri() 0 9 1
A testParseAccessTokenResponseThrowsExceptionOnError() 0 14 1
A testParseAccessTokenResponseValidWithRefreshToken() 0 12 1
A testConstructCorrectInterfaceWithoutCustomUri() 0 9 1
A testGetAccessTokenEndpoint() 0 11 1
A testConstructCorrectInstanceWithCustomUri() 0 11 1
A testParseAccessTokenResponseThrowsExceptionOnNulledResponse() 0 14 1
A testParseAccessTokenResponseValidWithoutRefreshToken() 0 12 1
1
<?php
2
3
namespace OAuthTest\Unit\OAuth2\Service;
4
5
use OAuth\OAuth2\Service\Google;
6
use PHPUnit\Framework\TestCase;
7
8
class GoogleTest extends TestCase
9
{
10
    /**
11
     * @covers \OAuth\OAuth2\Service\Google::__construct
12
     */
13
    public function testConstructCorrectInterfaceWithoutCustomUri(): void
14
    {
15
        $service = new Google(
16
            $this->createMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
17
            $this->createMock('\\OAuth\\Common\\Http\\Client\\ClientInterface'),
18
            $this->createMock('\\OAuth\\Common\\Storage\\TokenStorageInterface')
19
        );
20
21
        self::assertInstanceOf('\\OAuth\\OAuth2\\Service\\ServiceInterface', $service);
22
    }
23
24
    /**
25
     * @covers \OAuth\OAuth2\Service\Google::__construct
26
     */
27
    public function testConstructCorrectInstanceWithoutCustomUri(): void
28
    {
29
        $service = new Google(
30
            $this->createMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
31
            $this->createMock('\\OAuth\\Common\\Http\\Client\\ClientInterface'),
32
            $this->createMock('\\OAuth\\Common\\Storage\\TokenStorageInterface')
33
        );
34
35
        self::assertInstanceOf('\\OAuth\\OAuth2\\Service\\AbstractService', $service);
36
    }
37
38
    /**
39
     * @covers \OAuth\OAuth2\Service\Google::__construct
40
     */
41
    public function testConstructCorrectInstanceWithCustomUri(): void
42
    {
43
        $service = new Google(
44
            $this->createMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
45
            $this->createMock('\\OAuth\\Common\\Http\\Client\\ClientInterface'),
46
            $this->createMock('\\OAuth\\Common\\Storage\\TokenStorageInterface'),
47
            [],
48
            $this->createMock('\\OAuth\\Common\\Http\\Uri\\UriInterface')
49
        );
50
51
        self::assertInstanceOf('\\OAuth\\OAuth2\\Service\\AbstractService', $service);
52
    }
53
54
    /**
55
     * @covers \OAuth\OAuth2\Service\Google::__construct
56
     * @covers \OAuth\OAuth2\Service\Google::getAuthorizationEndpoint
57
     */
58
    public function testGetAuthorizationEndpoint(): void
59
    {
60
        $service = new Google(
61
            $this->createMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
62
            $this->createMock('\\OAuth\\Common\\Http\\Client\\ClientInterface'),
63
            $this->createMock('\\OAuth\\Common\\Storage\\TokenStorageInterface')
64
        );
65
66
        self::assertSame(
67
            'https://accounts.google.com/o/oauth2/auth?access_type=online',
68
            $service->getAuthorizationEndpoint()->getAbsoluteUri()
69
        );
70
71
        // Verify that 'offine' works
72
        $service->setAccessType('offline');
73
        self::assertSame(
74
            'https://accounts.google.com/o/oauth2/auth?access_type=offline',
75
            $service->getAuthorizationEndpoint()->getAbsoluteUri()
76
        );
77
    }
78
79
    /**
80
     * @covers \OAuth\OAuth2\Service\Google::__construct
81
     * @covers \OAuth\OAuth2\Service\Google::getAuthorizationEndpoint
82
     */
83
    public function testGetAuthorizationEndpointException(): void
84
    {
85
        $service = new Google(
86
            $this->createMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
87
            $this->createMock('\\OAuth\\Common\\Http\\Client\\ClientInterface'),
88
            $this->createMock('\\OAuth\\Common\\Storage\\TokenStorageInterface')
89
        );
90
91
        $this->expectException('OAuth\OAuth2\Service\Exception\InvalidAccessTypeException');
92
93
        try {
94
            $service->setAccessType('invalid');
95
        } catch (InvalidAccessTypeException $e) {
0 ignored issues
show
Bug introduced by
The type OAuthTest\Unit\OAuth2\Se...alidAccessTypeException was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
96
            return;
97
        }
98
        self::fail('Expected InvalidAccessTypeException not thrown');
99
    }
100
101
    /**
102
     * @covers \OAuth\OAuth2\Service\Google::__construct
103
     * @covers \OAuth\OAuth2\Service\Google::getAccessTokenEndpoint
104
     */
105
    public function testGetAccessTokenEndpoint(): void
106
    {
107
        $service = new Google(
108
            $this->createMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
109
            $this->createMock('\\OAuth\\Common\\Http\\Client\\ClientInterface'),
110
            $this->createMock('\\OAuth\\Common\\Storage\\TokenStorageInterface')
111
        );
112
113
        self::assertSame(
114
            'https://oauth2.googleapis.com/token',
115
            $service->getAccessTokenEndpoint()->getAbsoluteUri()
116
        );
117
    }
118
119
    /**
120
     * @covers \OAuth\OAuth2\Service\Google::__construct
121
     * @covers \OAuth\OAuth2\Service\Google::parseAccessTokenResponse
122
     */
123
    public function testParseAccessTokenResponseThrowsExceptionOnNulledResponse(): void
124
    {
125
        $client = $this->createMock('\\OAuth\\Common\\Http\\Client\\ClientInterface');
126
        $client->expects(self::once())->method('retrieveResponse')->willReturn(null);
127
128
        $service = new Google(
129
            $this->createMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
130
            $client,
131
            $this->createMock('\\OAuth\\Common\\Storage\\TokenStorageInterface')
132
        );
133
134
        $this->expectException('\\OAuth\\Common\\Http\\Exception\\TokenResponseException');
135
136
        $service->requestAccessToken('foo');
137
    }
138
139
    /**
140
     * @covers \OAuth\OAuth2\Service\Google::__construct
141
     * @covers \OAuth\OAuth2\Service\Google::parseAccessTokenResponse
142
     */
143
    public function testParseAccessTokenResponseThrowsExceptionOnError(): void
144
    {
145
        $client = $this->createMock('\\OAuth\\Common\\Http\\Client\\ClientInterface');
146
        $client->expects(self::once())->method('retrieveResponse')->willReturn('error=some_error');
147
148
        $service = new Google(
149
            $this->createMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
150
            $client,
151
            $this->createMock('\\OAuth\\Common\\Storage\\TokenStorageInterface')
152
        );
153
154
        $this->expectException('\\OAuth\\Common\\Http\\Exception\\TokenResponseException');
155
156
        $service->requestAccessToken('foo');
157
    }
158
159
    /**
160
     * @covers \OAuth\OAuth2\Service\Google::__construct
161
     * @covers \OAuth\OAuth2\Service\Google::parseAccessTokenResponse
162
     */
163
    public function testParseAccessTokenResponseValidWithoutRefreshToken(): void
164
    {
165
        $client = $this->createMock('\\OAuth\\Common\\Http\\Client\\ClientInterface');
166
        $client->expects(self::once())->method('retrieveResponse')->willReturn('{"access_token":"foo","expires_in":"bar"}');
167
168
        $service = new Google(
169
            $this->createMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
170
            $client,
171
            $this->createMock('\\OAuth\\Common\\Storage\\TokenStorageInterface')
172
        );
173
174
        self::assertInstanceOf('\\OAuth\\OAuth2\\Token\\StdOAuth2Token', $service->requestAccessToken('foo'));
175
    }
176
177
    /**
178
     * @covers \OAuth\OAuth2\Service\Google::__construct
179
     * @covers \OAuth\OAuth2\Service\Google::parseAccessTokenResponse
180
     */
181
    public function testParseAccessTokenResponseValidWithRefreshToken(): void
182
    {
183
        $client = $this->createMock('\\OAuth\\Common\\Http\\Client\\ClientInterface');
184
        $client->expects(self::once())->method('retrieveResponse')->willReturn('{"access_token":"foo","expires_in":"bar","refresh_token":"baz"}');
185
186
        $service = new Google(
187
            $this->createMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
188
            $client,
189
            $this->createMock('\\OAuth\\Common\\Storage\\TokenStorageInterface')
190
        );
191
192
        self::assertInstanceOf('\\OAuth\\OAuth2\\Token\\StdOAuth2Token', $service->requestAccessToken('foo'));
193
    }
194
}
195