/** @dataProvider provideShouldNotifyTokenCallback */
 public function testShouldNotifyTokenCallback(callable $tokenCallback)
 {
     $prefix = 'test_prefix-';
     $cacheKey = 'myKey';
     $token = '1/abcdef1234567890';
     $authResult = ['access_token' => $token];
     $this->mockCacheItem->expects($this->any())->method('get')->will($this->returnValue(null));
     $this->mockCache->expects($this->any())->method('getItem')->with($this->equalTo($prefix . $cacheKey))->will($this->returnValue($this->mockCacheItem));
     $this->mockFetcher->expects($this->any())->method('getCacheKey')->will($this->returnValue($cacheKey));
     $this->mockFetcher->expects($this->once())->method('fetchAuthToken')->will($this->returnValue($authResult));
     SubscriberCallback::$expectedKey = $this->getValidKeyName($prefix . $cacheKey);
     SubscriberCallback::$expectedValue = $token;
     SubscriberCallback::$called = false;
     // Run the test
     $a = new AuthTokenSubscriber($this->mockFetcher, ['prefix' => $prefix], $this->mockCache, null, $tokenCallback);
     $client = new Client();
     $request = $client->createRequest('GET', 'http://testing.org', ['auth' => 'google_auth']);
     $before = new BeforeEvent(new Transaction($client, $request));
     $a->onBefore($before);
     $this->assertTrue(SubscriberCallback::$called);
 }
 public function testShouldSaveValueInCacheWithSpecifiedPrefix()
 {
     $token = '1/abcdef1234567890';
     $authResult = ['access_token' => $token];
     $cacheKey = 'myKey';
     $prefix = 'test_prefix:';
     $this->mockCache->expects($this->any())->method('get')->will($this->returnValue(null));
     $this->mockCache->expects($this->once())->method('set')->with($this->equalTo($prefix . $cacheKey), $this->equalTo($token))->will($this->returnValue(false));
     $this->mockFetcher->expects($this->any())->method('getCacheKey')->will($this->returnValue($cacheKey));
     $this->mockFetcher->expects($this->once())->method('fetchAuthToken')->will($this->returnValue($authResult));
     // Run the test
     $a = new AuthTokenSubscriber($this->mockFetcher, array('prefix' => $prefix), $this->mockCache);
     $client = new Client();
     $request = $client->createRequest('GET', 'http://testing.org', ['auth' => 'google_auth']);
     $before = new BeforeEvent(new Transaction($client, $request));
     $a->onBefore($before);
     $this->assertSame($request->getHeader('Authorization'), 'Bearer 1/abcdef1234567890');
 }