Subversion Repositories cheapmusic

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
103 - 1
<?php
2
/*
3
 * Copyright 2015 Google Inc.
4
 *
5
 * Licensed under the Apache License, Version 2.0 (the "License");
6
 * you may not use this file except in compliance with the License.
7
 * You may obtain a copy of the License at
8
 *
9
 *     http://www.apache.org/licenses/LICENSE-2.0
10
 *
11
 * Unless required by applicable law or agreed to in writing, software
12
 * distributed under the License is distributed on an "AS IS" BASIS,
13
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
 * See the License for the specific language governing permissions and
15
 * limitations under the License.
16
 */
17
 
18
namespace Google\Auth\tests;
19
 
20
use Google\Auth\FetchAuthTokenCache;
21
 
22
class FetchAuthTokenCacheTest extends BaseTest
23
{
24
    protected function setUp()
25
    {
26
        $this->mockFetcher =
27
            $this
28
                ->getMockBuilder('Google\Auth\FetchAuthTokenInterface')
29
                ->getMock();
30
        $this->mockCacheItem =
31
            $this
32
                ->getMockBuilder('Psr\Cache\CacheItemInterface')
33
                ->getMock();
34
        $this->mockCache =
35
            $this
36
                ->getMockBuilder('Psr\Cache\CacheItemPoolInterface')
37
                ->getMock();
38
    }
39
 
40
    public function testUsesCachedAuthToken()
41
    {
42
        $cacheKey = 'myKey';
43
        $cachedValue = '2/abcdef1234567890';
44
        $this->mockCacheItem
45
            ->expects($this->once())
46
            ->method('get')
47
            ->will($this->returnValue($cachedValue));
48
        $this->mockCache
49
            ->expects($this->once())
50
            ->method('getItem')
51
            ->with($this->equalTo($cacheKey))
52
            ->will($this->returnValue($this->mockCacheItem));
53
        $this->mockFetcher
54
            ->expects($this->never())
55
            ->method('fetchAuthToken');
56
        $this->mockFetcher
57
            ->expects($this->any())
58
            ->method('getCacheKey')
59
            ->will($this->returnValue($cacheKey));
60
 
61
        // Run the test.
62
        $cachedFetcher = new FetchAuthTokenCache(
63
            $this->mockFetcher,
64
            null,
65
            $this->mockCache
66
        );
67
        $accessToken = $cachedFetcher->fetchAuthToken();
68
        $this->assertEquals($accessToken, ['access_token' => $cachedValue]);
69
    }
70
 
71
    public function testGetsCachedAuthTokenUsingCachePrefix()
72
    {
73
        $prefix = 'test_prefix_';
74
        $cacheKey = 'myKey';
75
        $cachedValue = '2/abcdef1234567890';
76
        $this->mockCacheItem
77
            ->expects($this->once())
78
            ->method('get')
79
            ->will($this->returnValue($cachedValue));
80
        $this->mockCache
81
            ->expects($this->once())
82
            ->method('getItem')
83
            ->with($this->equalTo($prefix . $cacheKey))
84
            ->will($this->returnValue($this->mockCacheItem));
85
        $this->mockFetcher
86
            ->expects($this->never())
87
            ->method('fetchAuthToken');
88
        $this->mockFetcher
89
            ->expects($this->any())
90
            ->method('getCacheKey')
91
            ->will($this->returnValue($cacheKey));
92
 
93
        // Run the test
94
        $cachedFetcher = new FetchAuthTokenCache(
95
            $this->mockFetcher,
96
            ['prefix' => $prefix],
97
            $this->mockCache
98
        );
99
        $accessToken = $cachedFetcher->fetchAuthToken();
100
        $this->assertEquals($accessToken, ['access_token' => $cachedValue]);
101
    }
102
 
103
    public function testShouldSaveValueInCacheWithCacheOptions()
104
    {
105
        $prefix = 'test_prefix_';
106
        $lifetime = '70707';
107
        $cacheKey = 'myKey';
108
        $token = '1/abcdef1234567890';
109
        $authResult = ['access_token' => $token];
110
        $this->mockCacheItem
111
            ->expects($this->any())
112
            ->method('get')
113
            ->will($this->returnValue(null));
114
        $this->mockCacheItem
115
            ->expects($this->once())
116
            ->method('set')
117
            ->with($this->equalTo($token))
118
            ->will($this->returnValue(false));
119
        $this->mockCacheItem
120
            ->expects($this->once())
121
            ->method('expiresAfter')
122
            ->with($this->equalTo($lifetime));
123
        $this->mockCache
124
            ->expects($this->exactly(2))
125
            ->method('getItem')
126
            ->with($this->equalTo($prefix . $cacheKey))
127
            ->will($this->returnValue($this->mockCacheItem));
128
        $this->mockFetcher
129
            ->expects($this->any())
130
            ->method('getCacheKey')
131
            ->will($this->returnValue($cacheKey));
132
        $this->mockFetcher
133
            ->expects($this->once())
134
            ->method('fetchAuthToken')
135
            ->will($this->returnValue($authResult));
136
 
137
        // Run the test
138
        $cachedFetcher = new FetchAuthTokenCache(
139
            $this->mockFetcher,
140
            ['prefix' => $prefix, 'lifetime' => $lifetime],
141
            $this->mockCache
142
        );
143
        $accessToken = $cachedFetcher->fetchAuthToken();
144
        $this->assertEquals($accessToken, ['access_token' => $token]);
145
    }
146
}