2011-02-27 22:32:13 -06:00
|
|
|
<?php
|
|
|
|
|
2014-02-16 20:10:19 -08:00
|
|
|
namespace GuzzleHttp\Tests\Message;
|
2013-10-07 13:24:53 -07:00
|
|
|
|
2014-02-16 20:10:19 -08:00
|
|
|
use GuzzleHttp\Event\Emitter;
|
|
|
|
use GuzzleHttp\Message\Request;
|
|
|
|
use GuzzleHttp\Stream\Stream;
|
2014-02-16 21:02:54 -08:00
|
|
|
use GuzzleHttp\Query;
|
2011-02-27 22:32:13 -06:00
|
|
|
|
|
|
|
/**
|
2014-02-16 20:10:19 -08:00
|
|
|
* @covers GuzzleHttp\Message\Request
|
2011-02-27 22:32:13 -06:00
|
|
|
*/
|
2013-09-28 16:27:07 -07:00
|
|
|
class RequestTest extends \PHPUnit_Framework_TestCase
|
2011-02-27 22:32:13 -06:00
|
|
|
{
|
2013-09-29 18:15:01 -07:00
|
|
|
public function testConstructorInitializesMessage()
|
2011-02-27 22:32:13 -06:00
|
|
|
{
|
2013-09-29 18:15:01 -07:00
|
|
|
$r = new Request('PUT', '/test', ['test' => '123'], Stream::factory('foo'));
|
|
|
|
$this->assertEquals('PUT', $r->getMethod());
|
|
|
|
$this->assertEquals('/test', $r->getUrl());
|
|
|
|
$this->assertEquals('123', $r->getHeader('test'));
|
|
|
|
$this->assertEquals('foo', $r->getBody());
|
2011-02-27 22:32:13 -06:00
|
|
|
}
|
|
|
|
|
2013-09-29 18:15:01 -07:00
|
|
|
public function testConstructorInitializesMessageWithProtocolVersion()
|
2013-01-31 14:35:20 -06:00
|
|
|
{
|
2013-09-29 18:15:01 -07:00
|
|
|
$r = new Request('GET', '', [], null, ['protocol_version' => 10]);
|
|
|
|
$this->assertEquals(10, $r->getProtocolVersion());
|
2013-01-31 14:35:20 -06:00
|
|
|
}
|
|
|
|
|
2014-02-08 00:09:25 -08:00
|
|
|
public function testConstructorInitializesMessageWithEmitter()
|
2011-02-27 22:32:13 -06:00
|
|
|
{
|
2014-02-08 00:09:25 -08:00
|
|
|
$e = new Emitter();
|
|
|
|
$r = new Request('GET', '', [], null, ['emitter' => $e]);
|
|
|
|
$this->assertSame($r->getEmitter(), $e);
|
2011-02-27 22:32:13 -06:00
|
|
|
}
|
|
|
|
|
2013-09-29 18:15:01 -07:00
|
|
|
public function testCloneIsDeep()
|
2011-02-27 22:32:13 -06:00
|
|
|
{
|
2013-09-29 18:15:01 -07:00
|
|
|
$r = new Request('GET', '/test', ['foo' => 'baz'], Stream::factory('foo'));
|
|
|
|
$r2 = clone $r;
|
2011-02-27 22:32:13 -06:00
|
|
|
|
2014-02-08 00:09:25 -08:00
|
|
|
$this->assertNotSame($r->getEmitter(), $r2->getEmitter());
|
2013-09-29 18:15:01 -07:00
|
|
|
$this->assertEquals('foo', $r2->getBody());
|
2013-02-16 10:38:38 +07:00
|
|
|
|
2013-09-29 18:15:01 -07:00
|
|
|
$r->getConfig()->set('test', 123);
|
|
|
|
$this->assertFalse($r2->getConfig()->hasKey('test'));
|
2011-02-27 22:32:13 -06:00
|
|
|
|
2013-09-29 18:15:01 -07:00
|
|
|
$r->setPath('/abc');
|
|
|
|
$this->assertEquals('/test', $r2->getPath());
|
2011-02-27 22:32:13 -06:00
|
|
|
}
|
|
|
|
|
2013-09-29 18:15:01 -07:00
|
|
|
public function testCastsToString()
|
2013-06-07 21:53:04 -07:00
|
|
|
{
|
2013-09-29 18:15:01 -07:00
|
|
|
$r = new Request('GET', 'http://test.com/test', ['foo' => 'baz'], Stream::factory('body'));
|
|
|
|
$s = explode("\r\n", (string) $r);
|
|
|
|
$this->assertEquals("GET /test HTTP/1.1", $s[0]);
|
|
|
|
$this->assertContains('Host: test.com', $s);
|
|
|
|
$this->assertContains('foo: baz', $s);
|
|
|
|
$this->assertContains('', $s);
|
|
|
|
$this->assertContains('body', $s);
|
2011-03-11 17:11:27 -06:00
|
|
|
}
|
2012-04-19 21:47:24 -07:00
|
|
|
|
2013-09-29 18:15:01 -07:00
|
|
|
public function testSettingUrlOverridesHostHeaders()
|
2012-10-30 22:32:20 -07:00
|
|
|
{
|
2013-09-29 18:15:01 -07:00
|
|
|
$r = new Request('GET', 'http://test.com/test');
|
|
|
|
$r->setUrl('https://baz.com/bar');
|
|
|
|
$this->assertEquals('baz.com', $r->getHost());
|
|
|
|
$this->assertEquals('baz.com', $r->getHeader('Host'));
|
|
|
|
$this->assertEquals('/bar', $r->getPath());
|
|
|
|
$this->assertEquals('https', $r->getScheme());
|
2012-10-30 22:32:20 -07:00
|
|
|
}
|
2012-11-17 17:34:27 -08:00
|
|
|
|
2013-09-29 18:15:01 -07:00
|
|
|
public function testQueryIsMutable()
|
2012-11-17 17:34:27 -08:00
|
|
|
{
|
2013-09-29 18:15:01 -07:00
|
|
|
$r = new Request('GET', 'http://www.foo.com?baz=bar');
|
|
|
|
$this->assertEquals('baz=bar', $r->getQuery());
|
2014-02-16 21:02:54 -08:00
|
|
|
$this->assertInstanceOf('GuzzleHttp\Query', $r->getQuery());
|
2013-09-29 18:15:01 -07:00
|
|
|
$r->getQuery()->set('hi', 'there');
|
|
|
|
$this->assertEquals('/?baz=bar&hi=there', $r->getResource());
|
2012-11-17 17:34:27 -08:00
|
|
|
}
|
2012-12-10 16:51:40 -08:00
|
|
|
|
2014-02-16 13:39:16 -08:00
|
|
|
public function testQueryCanChange()
|
|
|
|
{
|
|
|
|
$r = new Request('GET', 'http://www.foo.com?baz=bar');
|
2014-02-16 21:02:54 -08:00
|
|
|
$r->setQuery(new Query(['foo' => 'bar']));
|
2014-02-16 13:39:16 -08:00
|
|
|
$this->assertEquals('foo=bar', $r->getQuery());
|
|
|
|
}
|
|
|
|
|
2013-09-29 18:15:01 -07:00
|
|
|
public function testCanChangeMethod()
|
2012-12-10 16:51:40 -08:00
|
|
|
{
|
2013-09-29 18:15:01 -07:00
|
|
|
$r = new Request('GET', 'http://www.foo.com');
|
|
|
|
$r->setMethod('put');
|
|
|
|
$this->assertEquals('PUT', $r->getMethod());
|
2012-12-10 16:51:40 -08:00
|
|
|
}
|
|
|
|
|
2014-02-16 11:13:30 -08:00
|
|
|
public function testCanChangeSchemeWithPort()
|
|
|
|
{
|
|
|
|
$r = new Request('GET', 'http://www.foo.com:80');
|
|
|
|
$r->setScheme('https');
|
|
|
|
$this->assertEquals('https://www.foo.com', $r->getUrl());
|
|
|
|
}
|
|
|
|
|
2013-09-29 18:15:01 -07:00
|
|
|
public function testCanChangeScheme()
|
2012-12-10 16:51:40 -08:00
|
|
|
{
|
2013-09-29 18:15:01 -07:00
|
|
|
$r = new Request('GET', 'http://www.foo.com');
|
|
|
|
$r->setScheme('https');
|
|
|
|
$this->assertEquals('https://www.foo.com', $r->getUrl());
|
2012-12-10 16:51:40 -08:00
|
|
|
}
|
2013-04-10 01:11:05 -07:00
|
|
|
|
2013-09-29 18:15:01 -07:00
|
|
|
public function testCanChangeHost()
|
2013-04-30 11:26:22 -07:00
|
|
|
{
|
2013-09-29 18:15:01 -07:00
|
|
|
$r = new Request('GET', 'http://www.foo.com:222');
|
|
|
|
$r->setHost('goo');
|
|
|
|
$this->assertEquals('http://goo:222', $r->getUrl());
|
|
|
|
$this->assertEquals('goo:222', $r->getHeader('host'));
|
|
|
|
$r->setHost('goo:80');
|
|
|
|
$this->assertEquals('http://goo', $r->getUrl());
|
|
|
|
$this->assertEquals('goo', $r->getHeader('host'));
|
2013-04-30 11:26:22 -07:00
|
|
|
}
|
2014-05-27 21:16:50 -07:00
|
|
|
|
|
|
|
public function testCanChangePort()
|
|
|
|
{
|
|
|
|
$r = new Request('GET', 'http://www.foo.com:222');
|
|
|
|
$this->assertSame(222, $r->getPort());
|
|
|
|
$this->assertEquals('www.foo.com', $r->getHost());
|
|
|
|
$this->assertEquals('www.foo.com:222', $r->getHeader('host'));
|
|
|
|
$r->setPort(80);
|
|
|
|
$this->assertSame(80, $r->getPort());
|
|
|
|
$this->assertEquals('www.foo.com', $r->getHost());
|
|
|
|
$this->assertEquals('www.foo.com', $r->getHeader('host'));
|
|
|
|
}
|
2012-04-21 00:23:07 -07:00
|
|
|
}
|