Вход Регистрация
Файл: vkolhoze.com/vendor/guzzle/guzzle/tests/Guzzle/Tests/Service/Description/ServiceDescriptionTest.php
Строк: 222
<?php

namespace GuzzleTestsServiceDescription;

use 
GuzzleServiceDescriptionServiceDescription;
use 
GuzzleServiceDescriptionOperation;
use 
GuzzleServiceDescriptionParameter;
use 
GuzzleServiceClient;

/**
 * @covers GuzzleServiceDescriptionServiceDescription
 */
class ServiceDescriptionTest extends GuzzleTestsGuzzleTestCase
{
    protected 
$serviceData;

    public function 
setup()
    {
        
$this->serviceData = array(
            
'test_command' => new Operation(array(
                
'name'        => 'test_command',
                
'description' => 'documentationForCommand',
                
'httpMethod'  => 'DELETE',
                
'class'       => 'Guzzle\Tests\Service\Mock\Command\MockCommand',
                
'parameters'  => array(
                    
'bucket'  => array('required' => true),
                    
'key'     => array('required' => true)
                )
            ))
        );
    }

    
/**
     * @covers GuzzleServiceDescriptionServiceDescription::factory
     * @covers GuzzleServiceDescriptionServiceDescriptionLoader::build
     */
    
public function testFactoryDelegatesToConcreteFactories()
    {
        
$jsonFile __DIR__ '/../../TestData/test_service.json';
        
$this->assertInstanceOf('GuzzleServiceDescriptionServiceDescription'ServiceDescription::factory($jsonFile));
    }

    public function 
testConstructor()
    {
        
$service = new ServiceDescription(array('operations' => $this->serviceData));
        
$this->assertEquals(1count($service->getOperations()));
        
$this->assertFalse($service->hasOperation('foobar'));
        
$this->assertTrue($service->hasOperation('test_command'));
    }

    public function 
testIsSerializable()
    {
        
$service = new ServiceDescription(array('operations' => $this->serviceData));
        
$data serialize($service);
        
$d2 unserialize($data);
        
$this->assertEquals(serialize($service), serialize($d2));
    }

    public function 
testSerializesParameters()
    {
        
$service = new ServiceDescription(array(
            
'operations' => array(
                
'foo' => new Operation(array('parameters' => array('foo' => array('type' => 'string'))))
            )
        ));
        
$serialized serialize($service);
        
$this->assertContains('"parameters":{"foo":'$serialized);
        
$service unserialize($serialized);
        
$this->assertTrue($service->getOperation('foo')->hasParam('foo'));
    }

    public function 
testAllowsForJsonBasedArrayParamsFunctionalTest()
    {
        
$description = new ServiceDescription(array(
            
'operations' => array(
                
'test' => new Operation(array(
                    
'httpMethod' => 'PUT',
                    
'parameters' => array(
                        
'data'   => array(
                            
'required' => true,
                            
'filters'  => 'json_encode',
                            
'location' => 'body'
                        
)
                    )
                ))
            )
        ));
        
$client = new Client();
        
$client->setDescription($description);
        
$command $client->getCommand('test', array(
            
'data' => array(
                
'foo' => 'bar'
            
)
        ));

        
$request $command->prepare();
        
$this->assertEquals('{"foo":"bar"}', (string) $request->getBody());
    }

    public function 
testContainsModels()
    {
        
$d = new ServiceDescription(array(
            
'operations' => array('foo' => array()),
            
'models' => array(
                
'Tag'    => array('type' => 'object'),
                
'Person' => array('type' => 'object')
            )
        ));
        
$this->assertTrue($d->hasModel('Tag'));
        
$this->assertTrue($d->hasModel('Person'));
        
$this->assertFalse($d->hasModel('Foo'));
        
$this->assertInstanceOf('GuzzleServiceDescriptionParameter'$d->getModel('Tag'));
        
$this->assertNull($d->getModel('Foo'));
        
$this->assertContains('"models":{'serialize($d));
        
$this->assertEquals(array('Tag''Person'), array_keys($d->getModels()));
    }

    public function 
testCanAddModels()
    {
        
$d = new ServiceDescription(array());
        
$this->assertFalse($d->hasModel('Foo'));
        
$d->addModel(new Parameter(array('name' => 'Foo')));
        
$this->assertTrue($d->hasModel('Foo'));
    }

    public function 
testHasAttributes()
    {
        
$d = new ServiceDescription(array(
            
'operations'  => array(),
            
'name'        => 'Name',
            
'description' => 'Description',
            
'apiVersion'  => '1.24'
        
));

        
$this->assertEquals('Name'$d->getName());
        
$this->assertEquals('Description'$d->getDescription());
        
$this->assertEquals('1.24'$d->getApiVersion());

        
$s serialize($d);
        
$this->assertContains('"name":"Name"'$s);
        
$this->assertContains('"description":"Description"'$s);
        
$this->assertContains('"apiVersion":"1.24"'$s);

        
$d unserialize($s);
        
$this->assertEquals('Name'$d->getName());
        
$this->assertEquals('Description'$d->getDescription());
        
$this->assertEquals('1.24'$d->getApiVersion());
    }

    public function 
testPersistsCustomAttributes()
    {
        
$data = array(
            
'operations'  => array('foo' => array('class' => 'foo''parameters' => array())),
            
'name'        => 'Name',
            
'description' => 'Test',
            
'apiVersion'  => '1.24',
            
'auth'        => 'foo',
            
'keyParam'    => 'bar'
        
);
        
$d = new ServiceDescription($data);
        
$d->setData('hello''baz');
        
$this->assertEquals('foo'$d->getData('auth'));
        
$this->assertEquals('baz'$d->getData('hello'));
        
$this->assertEquals('bar'$d->getData('keyParam'));
        
// responseClass and responseType are added by default
        
$data['operations']['foo']['responseClass'] = 'array';
        
$data['operations']['foo']['responseType'] = 'primitive';
        
$this->assertEquals($data + array('hello' => 'baz'), json_decode($d->serialize(), true));
    }

    public function 
testHasToArray()
    {
        
$data = array(
            
'operations'  => array(),
            
'name'        => 'Name',
            
'description' => 'Test'
        
);
        
$d = new ServiceDescription($data);
        
$arr $d->toArray();
        
$this->assertEquals('Name'$arr['name']);
        
$this->assertEquals('Test'$arr['description']);
    }

    public function 
testReturnsNullWhenRetrievingMissingOperation()
    {
        
$s = new ServiceDescription(array());
        
$this->assertNull($s->getOperation('foo'));
    }

    public function 
testCanAddOperations()
    {
        
$s = new ServiceDescription(array());
        
$this->assertFalse($s->hasOperation('Foo'));
        
$s->addOperation(new Operation(array('name' => 'Foo')));
        
$this->assertTrue($s->hasOperation('Foo'));
    }

    
/**
     * @expectedException GuzzleCommonExceptionInvalidArgumentException
     */
    
public function testValidatesOperationTypes()
    {
        
$s = new ServiceDescription(array(
            
'operations' => array('foo' => new stdClass())
        ));
    }

    public function 
testHasBaseUrl()
    {
        
$description = new ServiceDescription(array('baseUrl' => 'http://foo.com'));
        
$this->assertEquals('http://foo.com'$description->getBaseUrl());
        
$description->setBaseUrl('http://foobar.com');
        
$this->assertEquals('http://foobar.com'$description->getBaseUrl());
    }

    public function 
testCanUseBasePath()
    {
        
$description = new ServiceDescription(array('basePath' => 'http://foo.com'));
        
$this->assertEquals('http://foo.com'$description->getBaseUrl());
    }

    public function 
testModelsHaveNames()
    {
        
$desc = array(
            
'models' => array(
                
'date' => array('type' => 'string'),
                
'user'=> array(
                    
'type' => 'object',
                    
'properties' => array(
                        
'dob' => array('$ref' => 'date')
                    )
                )
            )
        );

        
$s ServiceDescription::factory($desc);
        
$this->assertEquals('date'$s->getModel('date')->getName());
        
$this->assertEquals('dob'$s->getModel('user')->getProperty('dob')->getName());
    }
}
Онлайн: 0
Реклама