���� JFIF �� � ( %"1"%)+...383,7(-.-
![]() Server : Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.4.20 System : Linux st2.domain.com 3.10.0-1127.10.1.el7.x86_64 #1 SMP Wed Jun 3 14:28:03 UTC 2020 x86_64 User : apache ( 48) PHP Version : 7.4.20 Disable Function : NONE Directory : /var/www/html/st2/vendor/google/gax/tests/ApiCore/Tests/Unit/ |
<?php /* * Copyright 2018, Google Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following disclaimer * in the documentation and/or other materials provided with the * distribution. * * Neither the name of Google Inc. nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ namespace Google\ApiCore\Tests\Unit; use Google\ApiCore\CredentialsWrapper; use Google\Auth\ApplicationDefaultCredentials; use Google\Auth\Cache\MemoryCacheItemPool; use Google\Auth\Cache\SysVCacheItemPool; use Google\Auth\CredentialsLoader; use Google\Auth\FetchAuthTokenCache; use Google\Auth\FetchAuthTokenInterface; use Google\Auth\HttpHandler\HttpHandlerFactory; use GPBMetadata\Google\Api\Auth; use PHPUnit\Framework\TestCase; use Prophecy\Argument; class CredentialsWrapperTest extends TestCase { /** * @dataProvider buildData */ public function testBuild($args, $expectedCredentialsWrapper) { $actualCredentialsWrapper = CredentialsWrapper::build($args); $this->assertEquals($expectedCredentialsWrapper, $actualCredentialsWrapper); } public function buildData() { return $this->buildDataWithoutKeyFile() + $this->buildDataWithKeyFile(); } private function buildDataWithoutKeyFile() { $scopes = ['myscope']; $defaultAuthHttpHandler = HttpHandlerFactory::build(); $authHttpHandler = HttpHandlerFactory::build(); $asyncAuthHttpHandler = function ($request, $options) use ($authHttpHandler) { return $authHttpHandler->async($request, $options)->wait(); }; $defaultAuthCache = new MemoryCacheItemPool(); $authCache = new SysVCacheItemPool(); $authCacheOptions = ['lifetime' => 600]; return [ [ [], new CredentialsWrapper(ApplicationDefaultCredentials::getCredentials(null, $defaultAuthHttpHandler, null, $defaultAuthCache), $defaultAuthHttpHandler), ], [ ['scopes' => $scopes], new CredentialsWrapper(ApplicationDefaultCredentials::getCredentials($scopes, $defaultAuthHttpHandler, null, $defaultAuthCache), $defaultAuthHttpHandler), ], [ ['scopes' => $scopes, 'authHttpHandler' => $asyncAuthHttpHandler], new CredentialsWrapper(ApplicationDefaultCredentials::getCredentials($scopes, $asyncAuthHttpHandler, null, $defaultAuthCache), $asyncAuthHttpHandler), ], [ ['enableCaching' => false], new CredentialsWrapper(ApplicationDefaultCredentials::getCredentials(null, $defaultAuthHttpHandler, null, null), $defaultAuthHttpHandler), ], [ ['authCacheOptions' => $authCacheOptions], new CredentialsWrapper(ApplicationDefaultCredentials::getCredentials(null, $defaultAuthHttpHandler, $authCacheOptions, $defaultAuthCache), $defaultAuthHttpHandler), ], [ ['authCache' => $authCache], new CredentialsWrapper(ApplicationDefaultCredentials::getCredentials(null, $defaultAuthHttpHandler, null, $authCache), $defaultAuthHttpHandler), ], ]; } private function buildDataWithKeyFile() { $keyFilePath = __DIR__ . '/testdata/json-key-file.json'; $keyFile = json_decode(file_get_contents($keyFilePath), true); $scopes = ['myscope']; $authHttpHandler = function () {}; $defaultAuthCache = new MemoryCacheItemPool(); $authCache = new SysVCacheItemPool(); $authCacheOptions = ['lifetime' => 600]; return [ [ ['keyFile' => $keyFile], $this->makeExpectedKeyFileCreds($keyFile, null, $defaultAuthCache, null, null), ], [ ['keyFile' => $keyFilePath], $this->makeExpectedKeyFileCreds($keyFile, null, $defaultAuthCache, null, null), ], [ ['keyFile' => $keyFile, 'scopes' => $scopes], $this->makeExpectedKeyFileCreds($keyFile, $scopes, $defaultAuthCache, null, null), ], [ ['keyFile' => $keyFile, 'scopes' => $scopes, 'authHttpHandler' => $authHttpHandler], $this->makeExpectedKeyFileCreds($keyFile, $scopes, $defaultAuthCache, null, $authHttpHandler), ], [ ['keyFile' => $keyFile, 'enableCaching' => false], $this->makeExpectedKeyFileCreds($keyFile, null, null, null, null), ], [ ['keyFile' => $keyFile, 'authCacheOptions' => $authCacheOptions], $this->makeExpectedKeyFileCreds($keyFile, null, $defaultAuthCache, $authCacheOptions, null), ], [ ['keyFile' => $keyFile, 'authCache' => $authCache], $this->makeExpectedKeyFileCreds($keyFile, null, $authCache, null, null), ], ]; } private function makeExpectedKeyFileCreds($keyFile, $scopes, $cache, $cacheConfig, $httpHandler) { $loader = CredentialsLoader::makeCredentials($scopes, $keyFile); if ($cache) { $loader = new FetchAuthTokenCache($loader, $cacheConfig, $cache); } return new CredentialsWrapper($loader, $httpHandler); } /** * @dataProvider getBearerStringData */ public function testGetBearerString($fetcher, $expectedBearerString) { $credentialsWrapper = new CredentialsWrapper($fetcher); $bearerString = $credentialsWrapper->getBearerString(); $this->assertSame($expectedBearerString, $bearerString); } public function getBearerStringData() { $expiredFetcher = $this->prophesize(FetchAuthTokenInterface::class); $expiredFetcher->getLastReceivedToken() ->willReturn([ 'access_token' => 123, 'expires_at' => time() - 1 ]); $expiredFetcher->fetchAuthToken(Argument::any()) ->willReturn([ 'access_token' => 456, 'expires_at' => time() + 1000 ]); $unexpiredFetcher = $this->prophesize(FetchAuthTokenInterface::class); $unexpiredFetcher->getLastReceivedToken() ->willReturn([ 'access_token' => 123, 'expires_at' => time() + 100, ]); return [ [$expiredFetcher->reveal(), 'Bearer 456'], [$unexpiredFetcher->reveal(), 'Bearer 123'], ]; } /** * @dataProvider getAuthorizationHeaderCallbackData */ public function testGetAuthorizationHeaderCallback($fetcher, $expectedCallbackResponse) { $credentialsWrapper = new CredentialsWrapper($fetcher); $callback = $credentialsWrapper->getAuthorizationHeaderCallback(); $actualResponse = $callback(); $this->assertSame($expectedCallbackResponse, $actualResponse); } public function getAuthorizationHeaderCallbackData() { $expiredFetcher = $this->prophesize(FetchAuthTokenInterface::class); $expiredFetcher->getLastReceivedToken() ->willReturn([ 'access_token' => 123, 'expires_at' => time() - 1 ]); $expiredFetcher->fetchAuthToken(Argument::any()) ->willReturn([ 'access_token' => 456, 'expires_at' => time() + 1000 ]); $unexpiredFetcher = $this->prophesize(FetchAuthTokenInterface::class); $unexpiredFetcher->getLastReceivedToken() ->willReturn([ 'access_token' => 123, 'expires_at' => time() + 100, ]); return [ [$expiredFetcher->reveal(), ['authorization' => ['Bearer 456']]], [$unexpiredFetcher->reveal(), ['authorization' => ['Bearer 123']]], ]; } }