You are here

RequestTest.php in Zircon Profile 8

File

vendor/guzzlehttp/psr7/tests/RequestTest.php
View source
<?php

namespace GuzzleHttp\Tests\Psr7;

use GuzzleHttp\Psr7\Request;
use GuzzleHttp\Psr7\Uri;

/**
 * @covers GuzzleHttp\Psr7\Request
 */
class RequestTest extends \PHPUnit_Framework_TestCase {
  public function testRequestUriMayBeString() {
    $r = new Request('GET', '/');
    $this
      ->assertEquals('/', (string) $r
      ->getUri());
  }
  public function testRequestUriMayBeUri() {
    $uri = new Uri('/');
    $r = new Request('GET', $uri);
    $this
      ->assertSame($uri, $r
      ->getUri());
  }

  /**
   * @expectedException \InvalidArgumentException
   */
  public function testValidateRequestUri() {
    new Request('GET', true);
  }
  public function testCanConstructWithBody() {
    $r = new Request('GET', '/', [], 'baz');
    $this
      ->assertEquals('baz', (string) $r
      ->getBody());
  }
  public function testCapitalizesMethod() {
    $r = new Request('get', '/');
    $this
      ->assertEquals('GET', $r
      ->getMethod());
  }
  public function testCapitalizesWithMethod() {
    $r = new Request('GET', '/');
    $this
      ->assertEquals('PUT', $r
      ->withMethod('put')
      ->getMethod());
  }
  public function testWithUri() {
    $r1 = new Request('GET', '/');
    $u1 = $r1
      ->getUri();
    $u2 = new Uri('http://www.example.com');
    $r2 = $r1
      ->withUri($u2);
    $this
      ->assertNotSame($r1, $r2);
    $this
      ->assertSame($u2, $r2
      ->getUri());
    $this
      ->assertSame($u1, $r1
      ->getUri());
  }
  public function testSameInstanceWhenSameUri() {
    $r1 = new Request('GET', 'http://foo.com');
    $r2 = $r1
      ->withUri($r1
      ->getUri());
    $this
      ->assertSame($r1, $r2);
  }
  public function testWithRequestTarget() {
    $r1 = new Request('GET', '/');
    $r2 = $r1
      ->withRequestTarget('*');
    $this
      ->assertEquals('*', $r2
      ->getRequestTarget());
    $this
      ->assertEquals('/', $r1
      ->getRequestTarget());
  }

  /**
   * @expectedException \InvalidArgumentException
   */
  public function testRequestTargetDoesNotAllowSpaces() {
    $r1 = new Request('GET', '/');
    $r1
      ->withRequestTarget('/foo bar');
  }
  public function testRequestTargetDefaultsToSlash() {
    $r1 = new Request('GET', '');
    $this
      ->assertEquals('/', $r1
      ->getRequestTarget());
    $r2 = new Request('GET', '*');
    $this
      ->assertEquals('*', $r2
      ->getRequestTarget());
    $r3 = new Request('GET', 'http://foo.com/bar baz/');
    $this
      ->assertEquals('/bar%20baz/', $r3
      ->getRequestTarget());
  }
  public function testBuildsRequestTarget() {
    $r1 = new Request('GET', 'http://foo.com/baz?bar=bam');
    $this
      ->assertEquals('/baz?bar=bam', $r1
      ->getRequestTarget());
  }
  public function testHostIsAddedFirst() {
    $r = new Request('GET', 'http://foo.com/baz?bar=bam', [
      'Foo' => 'Bar',
    ]);
    $this
      ->assertEquals([
      'Host' => [
        'foo.com',
      ],
      'Foo' => [
        'Bar',
      ],
    ], $r
      ->getHeaders());
  }
  public function testCanGetHeaderAsCsv() {
    $r = new Request('GET', 'http://foo.com/baz?bar=bam', [
      'Foo' => [
        'a',
        'b',
        'c',
      ],
    ]);
    $this
      ->assertEquals('a, b, c', $r
      ->getHeaderLine('Foo'));
    $this
      ->assertEquals('', $r
      ->getHeaderLine('Bar'));
  }
  public function testHostIsNotOverwrittenWhenPreservingHost() {
    $r = new Request('GET', 'http://foo.com/baz?bar=bam', [
      'Host' => 'a.com',
    ]);
    $this
      ->assertEquals([
      'Host' => [
        'a.com',
      ],
    ], $r
      ->getHeaders());
    $r2 = $r
      ->withUri(new Uri('http://www.foo.com/bar'), true);
    $this
      ->assertEquals('a.com', $r2
      ->getHeaderLine('Host'));
  }
  public function testOverridesHostWithUri() {
    $r = new Request('GET', 'http://foo.com/baz?bar=bam');
    $this
      ->assertEquals([
      'Host' => [
        'foo.com',
      ],
    ], $r
      ->getHeaders());
    $r2 = $r
      ->withUri(new Uri('http://www.baz.com/bar'));
    $this
      ->assertEquals('www.baz.com', $r2
      ->getHeaderLine('Host'));
  }
  public function testAggregatesHeaders() {
    $r = new Request('GET', 'http://foo.com', [
      'ZOO' => 'zoobar',
      'zoo' => [
        'foobar',
        'zoobar',
      ],
    ]);
    $this
      ->assertEquals('zoobar, foobar, zoobar', $r
      ->getHeaderLine('zoo'));
  }
  public function testAddsPortToHeader() {
    $r = new Request('GET', 'http://foo.com:8124/bar');
    $this
      ->assertEquals('foo.com:8124', $r
      ->getHeaderLine('host'));
  }
  public function testAddsPortToHeaderAndReplacePreviousPort() {
    $r = new Request('GET', 'http://foo.com:8124/bar');
    $r = $r
      ->withUri(new Uri('http://foo.com:8125/bar'));
    $this
      ->assertEquals('foo.com:8125', $r
      ->getHeaderLine('host'));
  }

}

Classes