/** * Test getToken() without cache. */ public function testNonCachedGetToken() { $cacheObj = new stdClass(); // non-cached $cache = Mockery::mock(Cache::class, function ($mock) use($cacheObj) { $mock->shouldReceive('fetch')->andReturnUsing(function ($cacheKey) { return; }); $mock->shouldReceive('save')->andReturnUsing(function ($key, $token, $expire) use($cacheObj) { $cacheObj->cacheKey = $key; $cacheObj->token = $token; $cacheObj->expire = $expire; return $token; }); }); $http = Mockery::mock(Http::class . '[get]', function ($mock) { $mock->shouldReceive('get')->andReturn(json_encode(['access_token' => 'thisIsATokenFromHttp', 'expires_in' => 7200])); }); $accessToken = new AccessToken('appId', 'secret', $cache); $accessToken->setHttp($http); $this->assertEquals('thisIsATokenFromHttp', $accessToken->getToken()); $this->assertEquals('thisIsATokenFromHttp', $cacheObj->token); $this->assertEquals(5700, $cacheObj->expire); }