379 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			379 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			PHP
		
	
	
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								namespace Guzzle\Tests\Service\Description;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								use GuzzleHttp\Command\Guzzle\Description;
							 | 
						||
| 
								 | 
							
								use GuzzleHttp\Command\Guzzle\Parameter;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @covers \GuzzleHttp\Command\Guzzle\Parameter
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								class ParameterTest extends \PHPUnit_Framework_TestCase
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    protected $data = [
							 | 
						||
| 
								 | 
							
								        'name'            => 'foo',
							 | 
						||
| 
								 | 
							
								        'type'            => 'bar',
							 | 
						||
| 
								 | 
							
								        'required'        => true,
							 | 
						||
| 
								 | 
							
								        'default'         => '123',
							 | 
						||
| 
								 | 
							
								        'description'     => '456',
							 | 
						||
| 
								 | 
							
								        'minLength'       => 2,
							 | 
						||
| 
								 | 
							
								        'maxLength'       => 5,
							 | 
						||
| 
								 | 
							
								        'location'        => 'body',
							 | 
						||
| 
								 | 
							
								        'static'          => true,
							 | 
						||
| 
								 | 
							
								        'filters'         => ['trim', 'json_encode']
							 | 
						||
| 
								 | 
							
								    ];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function testCreatesParamFromArray()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $p = new Parameter($this->data);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals('foo', $p->getName());
							 | 
						||
| 
								 | 
							
								        $this->assertEquals('bar', $p->getType());
							 | 
						||
| 
								 | 
							
								        $this->assertTrue($p->isRequired());
							 | 
						||
| 
								 | 
							
								        $this->assertEquals('123', $p->getDefault());
							 | 
						||
| 
								 | 
							
								        $this->assertEquals('456', $p->getDescription());
							 | 
						||
| 
								 | 
							
								        $this->assertEquals(2, $p->getMinLength());
							 | 
						||
| 
								 | 
							
								        $this->assertEquals(5, $p->getMaxLength());
							 | 
						||
| 
								 | 
							
								        $this->assertEquals('body', $p->getLocation());
							 | 
						||
| 
								 | 
							
								        $this->assertTrue($p->isStatic());
							 | 
						||
| 
								 | 
							
								        $this->assertEquals(['trim', 'json_encode'], $p->getFilters());
							 | 
						||
| 
								 | 
							
								        $p->setName('abc');
							 | 
						||
| 
								 | 
							
								        $this->assertEquals('abc', $p->getName());
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * @expectedException \InvalidArgumentException
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function testValidatesDescription()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        new Parameter($this->data, ['description' => 'foo']);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function testCanConvertToArray()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $p = new Parameter($this->data);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals($this->data, $p->toArray());
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function testUsesStatic()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $d = $this->data;
							 | 
						||
| 
								 | 
							
								        $d['default'] = 'booboo';
							 | 
						||
| 
								 | 
							
								        $d['static'] = true;
							 | 
						||
| 
								 | 
							
								        $p = new Parameter($d);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals('booboo', $p->getValue('bar'));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function testUsesDefault()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $d = $this->data;
							 | 
						||
| 
								 | 
							
								        $d['default'] = 'foo';
							 | 
						||
| 
								 | 
							
								        $d['static'] = null;
							 | 
						||
| 
								 | 
							
								        $p = new Parameter($d);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals('foo', $p->getValue(null));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function testReturnsYourValue()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $d = $this->data;
							 | 
						||
| 
								 | 
							
								        $d['static'] = null;
							 | 
						||
| 
								 | 
							
								        $p = new Parameter($d);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals('foo', $p->getValue('foo'));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function testZeroValueDoesNotCauseDefaultToBeReturned()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $d = $this->data;
							 | 
						||
| 
								 | 
							
								        $d['default'] = '1';
							 | 
						||
| 
								 | 
							
								        $d['static'] = null;
							 | 
						||
| 
								 | 
							
								        $p = new Parameter($d);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals('0', $p->getValue('0'));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function testFiltersValues()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $d = $this->data;
							 | 
						||
| 
								 | 
							
								        $d['static'] = null;
							 | 
						||
| 
								 | 
							
								        $d['filters'] = 'strtoupper';
							 | 
						||
| 
								 | 
							
								        $p = new Parameter($d);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals('FOO', $p->filter('foo'));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * @expectedException \RuntimeException
							 | 
						||
| 
								 | 
							
								     * @expectedExceptionMessage No service description
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function testRequiresServiceDescriptionForFormatting()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $d = $this->data;
							 | 
						||
| 
								 | 
							
								        $d['format'] = 'foo';
							 | 
						||
| 
								 | 
							
								        $p = new Parameter($d);
							 | 
						||
| 
								 | 
							
								        $p->filter('bar');
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function testConvertsBooleans()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $p = new Parameter(['type' => 'boolean']);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals(true, $p->filter('true'));
							 | 
						||
| 
								 | 
							
								        $this->assertEquals(false, $p->filter('false'));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function testUsesArrayByDefaultForFilters()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $d = $this->data;
							 | 
						||
| 
								 | 
							
								        $d['filters'] = null;
							 | 
						||
| 
								 | 
							
								        $p = new Parameter($d);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals([], $p->getFilters());
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function testAllowsSimpleLocationValue()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $p = new Parameter(['name' => 'myname', 'location' => 'foo', 'sentAs' => 'Hello']);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals('foo', $p->getLocation());
							 | 
						||
| 
								 | 
							
								        $this->assertEquals('Hello', $p->getSentAs());
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function testParsesTypeValues()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $p = new Parameter(['type' => 'foo']);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals('foo', $p->getType());
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * @expectedException \InvalidArgumentException
							 | 
						||
| 
								 | 
							
								     * @expectedExceptionMessage A [method] value must be specified for each complex filter
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function testValidatesComplexFilters()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $p = new Parameter(['filters' => [['args' => 'foo']]]);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function testAllowsComplexFilters()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $that = $this;
							 | 
						||
| 
								 | 
							
								        $param = new Parameter([
							 | 
						||
| 
								 | 
							
								            'filters' => [
							 | 
						||
| 
								 | 
							
								                [
							 | 
						||
| 
								 | 
							
								                    'method' => function ($a, $b, $c, $d) use ($that, &$param) {
							 | 
						||
| 
								 | 
							
								                        $that->assertEquals('test', $a);
							 | 
						||
| 
								 | 
							
								                        $that->assertEquals('my_value!', $b);
							 | 
						||
| 
								 | 
							
								                        $that->assertEquals('bar', $c);
							 | 
						||
| 
								 | 
							
								                        $that->assertSame($param, $d);
							 | 
						||
| 
								 | 
							
								                        return 'abc' . $b;
							 | 
						||
| 
								 | 
							
								                    },
							 | 
						||
| 
								 | 
							
								                    'args' => ['test', '@value', 'bar', '@api']
							 | 
						||
| 
								 | 
							
								                ]
							 | 
						||
| 
								 | 
							
								            ]
							 | 
						||
| 
								 | 
							
								        ]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $this->assertEquals('abcmy_value!', $param->filter('my_value!'));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function testAddsAdditionalProperties()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $p = new Parameter([
							 | 
						||
| 
								 | 
							
								            'type' => 'object',
							 | 
						||
| 
								 | 
							
								            'additionalProperties' => ['type' => 'string']
							 | 
						||
| 
								 | 
							
								        ]);
							 | 
						||
| 
								 | 
							
								        $this->assertInstanceOf('GuzzleHttp\Command\Guzzle\Parameter', $p->getAdditionalProperties());
							 | 
						||
| 
								 | 
							
								        $this->assertNull($p->getAdditionalProperties()->getAdditionalProperties());
							 | 
						||
| 
								 | 
							
								        $p = new Parameter(['type' => 'object']);
							 | 
						||
| 
								 | 
							
								        $this->assertTrue($p->getAdditionalProperties());
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function testAddsItems()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $p = new Parameter([
							 | 
						||
| 
								 | 
							
								            'type'  => 'array',
							 | 
						||
| 
								 | 
							
								            'items' => ['type' => 'string']
							 | 
						||
| 
								 | 
							
								        ]);
							 | 
						||
| 
								 | 
							
								        $this->assertInstanceOf('GuzzleHttp\Command\Guzzle\Parameter', $p->getItems());
							 | 
						||
| 
								 | 
							
								        $out = $p->toArray();
							 | 
						||
| 
								 | 
							
								        $this->assertEquals('array', $out['type']);
							 | 
						||
| 
								 | 
							
								        $this->assertInternalType('array', $out['items']);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function testCanRetrieveKnownPropertiesUsingDataMethod()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $p = new Parameter(['data' => ['name' => 'test'], 'extra' => 'hi!']);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals('test', $p->getData('name'));
							 | 
						||
| 
								 | 
							
								        $this->assertEquals(['name' => 'test'], $p->getData());
							 | 
						||
| 
								 | 
							
								        $this->assertNull($p->getData('fjnweefe'));
							 | 
						||
| 
								 | 
							
								        $this->assertEquals('hi!', $p->getData('extra'));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function testHasPattern()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $p = new Parameter(['pattern' => '/[0-9]+/']);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals('/[0-9]+/', $p->getPattern());
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function testHasEnum()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $p = new Parameter(['enum' => ['foo', 'bar']]);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals(['foo', 'bar'], $p->getEnum());
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function testSerializesItems()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $p = new Parameter([
							 | 
						||
| 
								 | 
							
								            'type'  => 'object',
							 | 
						||
| 
								 | 
							
								            'additionalProperties' => ['type' => 'string']
							 | 
						||
| 
								 | 
							
								        ]);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals([
							 | 
						||
| 
								 | 
							
								            'type'  => 'object',
							 | 
						||
| 
								 | 
							
								            'additionalProperties' => ['type' => 'string']
							 | 
						||
| 
								 | 
							
								        ], $p->toArray());
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function testResolvesRefKeysRecursively()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $description = new Description([
							 | 
						||
| 
								 | 
							
								            'models' => [
							 | 
						||
| 
								 | 
							
								                'JarJar' => ['type' => 'string', 'default' => 'Mesa address tha senate!'],
							 | 
						||
| 
								 | 
							
								                'Anakin' => ['type' => 'array', 'items' => ['$ref' => 'JarJar']]
							 | 
						||
| 
								 | 
							
								            ],
							 | 
						||
| 
								 | 
							
								        ]);
							 | 
						||
| 
								 | 
							
								        $p = new Parameter(['$ref' => 'Anakin', 'description' => 'added'], ['description' => $description]);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals([
							 | 
						||
| 
								 | 
							
								            'description' => 'added',
							 | 
						||
| 
								 | 
							
								            '$ref' => 'Anakin'
							 | 
						||
| 
								 | 
							
								        ], $p->toArray());
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function testResolvesExtendsRecursively()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $jarJar = ['type' => 'string', 'default' => 'Mesa address tha senate!', 'description' => 'a'];
							 | 
						||
| 
								 | 
							
								        $anakin = ['type' => 'array', 'items' => ['extends' => 'JarJar', 'description' => 'b']];
							 | 
						||
| 
								 | 
							
								        $description = new Description([
							 | 
						||
| 
								 | 
							
								            'models' => ['JarJar' => $jarJar, 'Anakin' => $anakin]
							 | 
						||
| 
								 | 
							
								        ]);
							 | 
						||
| 
								 | 
							
								        // Description attribute will be updated, and format added
							 | 
						||
| 
								 | 
							
								        $p = new Parameter(['extends' => 'Anakin', 'format' => 'date'], ['description' => $description]);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals([
							 | 
						||
| 
								 | 
							
								            'format' => 'date',
							 | 
						||
| 
								 | 
							
								            'extends' => 'Anakin'
							 | 
						||
| 
								 | 
							
								        ], $p->toArray());
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function testHasKeyMethod()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $p = new Parameter(['name' => 'foo', 'sentAs' => 'bar']);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals('bar', $p->getWireName());
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function testIncludesNameInToArrayWhenItemsAttributeHasName()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $p = new Parameter([
							 | 
						||
| 
								 | 
							
								            'type' => 'array',
							 | 
						||
| 
								 | 
							
								            'name' => 'Abc',
							 | 
						||
| 
								 | 
							
								            'items' => [
							 | 
						||
| 
								 | 
							
								                'name' => 'Foo',
							 | 
						||
| 
								 | 
							
								                'type' => 'object'
							 | 
						||
| 
								 | 
							
								            ]
							 | 
						||
| 
								 | 
							
								        ]);
							 | 
						||
| 
								 | 
							
								        $result = $p->toArray();
							 | 
						||
| 
								 | 
							
								        $this->assertEquals([
							 | 
						||
| 
								 | 
							
								            'type' => 'array',
							 | 
						||
| 
								 | 
							
								            'name' => 'Abc',
							 | 
						||
| 
								 | 
							
								            'items' => [
							 | 
						||
| 
								 | 
							
								                'name' => 'Foo',
							 | 
						||
| 
								 | 
							
								                'type' => 'object'
							 | 
						||
| 
								 | 
							
								            ]
							 | 
						||
| 
								 | 
							
								        ], $result);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function dateTimeProvider()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $d = 'October 13, 2012 16:15:46 UTC';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        return [
							 | 
						||
| 
								 | 
							
								            [$d, 'date-time', '2012-10-13T16:15:46Z'],
							 | 
						||
| 
								 | 
							
								            [$d, 'date', '2012-10-13'],
							 | 
						||
| 
								 | 
							
								            [$d, 'timestamp', strtotime($d)],
							 | 
						||
| 
								 | 
							
								            [new \DateTime($d), 'timestamp', strtotime($d)]
							 | 
						||
| 
								 | 
							
								        ];
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * @dataProvider dateTimeProvider
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function testAppliesFormat($d, $format, $result)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $p = new Parameter(['format' => $format], ['description' => new Description([])]);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals($format, $p->getFormat());
							 | 
						||
| 
								 | 
							
								        $this->assertEquals($result, $p->filter($d));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function testHasMinAndMax()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $p = new Parameter([
							 | 
						||
| 
								 | 
							
								            'minimum' => 2,
							 | 
						||
| 
								 | 
							
								            'maximum' => 3,
							 | 
						||
| 
								 | 
							
								            'minItems' => 4,
							 | 
						||
| 
								 | 
							
								            'maxItems' => 5,
							 | 
						||
| 
								 | 
							
								        ]);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals(2, $p->getMinimum());
							 | 
						||
| 
								 | 
							
								        $this->assertEquals(3, $p->getMaximum());
							 | 
						||
| 
								 | 
							
								        $this->assertEquals(4, $p->getMinItems());
							 | 
						||
| 
								 | 
							
								        $this->assertEquals(5, $p->getMaxItems());
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function testHasProperties()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $data = [
							 | 
						||
| 
								 | 
							
								            'type' => 'object',
							 | 
						||
| 
								 | 
							
								            'properties' => [
							 | 
						||
| 
								 | 
							
								                'foo' => ['type' => 'string'],
							 | 
						||
| 
								 | 
							
								                'bar' => ['type' => 'string'],
							 | 
						||
| 
								 | 
							
								            ]
							 | 
						||
| 
								 | 
							
								        ];
							 | 
						||
| 
								 | 
							
								        $p = new Parameter($data);
							 | 
						||
| 
								 | 
							
								        $this->assertInstanceOf('GuzzleHttp\\Command\\Guzzle\\Parameter', $p->getProperty('foo'));
							 | 
						||
| 
								 | 
							
								        $this->assertSame($p->getProperty('foo'), $p->getProperty('foo'));
							 | 
						||
| 
								 | 
							
								        $this->assertNull($p->getProperty('wefwe'));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $properties = $p->getProperties();
							 | 
						||
| 
								 | 
							
								        $this->assertInternalType('array', $properties);
							 | 
						||
| 
								 | 
							
								        foreach ($properties as $prop) {
							 | 
						||
| 
								 | 
							
								            $this->assertInstanceOf('GuzzleHttp\\Command\\Guzzle\\Parameter', $prop);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $this->assertEquals($data, $p->toArray());
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * @expectedException \InvalidArgumentException
							 | 
						||
| 
								 | 
							
								     * @expectedExceptionMessage Expected a string. Got: array
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function testThrowsWhenNotPassString()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $emptyParam = new Parameter();
							 | 
						||
| 
								 | 
							
								        $this->assertFalse($emptyParam->has([]));
							 | 
						||
| 
								 | 
							
								        $this->assertFalse($emptyParam->has(new \stdClass()));
							 | 
						||
| 
								 | 
							
								        $this->assertFalse($emptyParam->has('1'));
							 | 
						||
| 
								 | 
							
								        $this->assertFalse($emptyParam->has(1));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function testHasReturnsFalseForWrongOrEmptyValues()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $emptyParam = new Parameter();
							 | 
						||
| 
								 | 
							
								        $this->assertFalse($emptyParam->has(''));
							 | 
						||
| 
								 | 
							
								        $this->assertFalse($emptyParam->has('description'));
							 | 
						||
| 
								 | 
							
								        $this->assertFalse($emptyParam->has('noExisting'));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function testHasReturnsTrueForCorrectValues()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $p = new Parameter([
							 | 
						||
| 
								 | 
							
								            'minimum' => 2,
							 | 
						||
| 
								 | 
							
								            'maximum' => 3,
							 | 
						||
| 
								 | 
							
								            'minItems' => 4,
							 | 
						||
| 
								 | 
							
								            'maxItems' => 5,
							 | 
						||
| 
								 | 
							
								        ]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $this->assertTrue($p->has('minimum'));
							 | 
						||
| 
								 | 
							
								        $this->assertTrue($p->has('maximum'));
							 | 
						||
| 
								 | 
							
								        $this->assertTrue($p->has('minItems'));
							 | 
						||
| 
								 | 
							
								        $this->assertTrue($p->has('maxItems'));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |