You are here

JsonResponseTest.php in Zircon Profile 8

Same filename and directory in other branches
  1. 8.0 vendor/symfony/http-foundation/Tests/JsonResponseTest.php

File

vendor/symfony/http-foundation/Tests/JsonResponseTest.php
View source
<?php

/*
 * This file is part of the Symfony package.
 *
 * (c) Fabien Potencier <fabien@symfony.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
namespace Symfony\Component\HttpFoundation\Tests;

use Symfony\Component\HttpFoundation\JsonResponse;
class JsonResponseTest extends \PHPUnit_Framework_TestCase {
  public function testConstructorEmptyCreatesJsonObject() {
    $response = new JsonResponse();
    $this
      ->assertSame('{}', $response
      ->getContent());
  }
  public function testConstructorWithArrayCreatesJsonArray() {
    $response = new JsonResponse(array(
      0,
      1,
      2,
      3,
    ));
    $this
      ->assertSame('[0,1,2,3]', $response
      ->getContent());
  }
  public function testConstructorWithAssocArrayCreatesJsonObject() {
    $response = new JsonResponse(array(
      'foo' => 'bar',
    ));
    $this
      ->assertSame('{"foo":"bar"}', $response
      ->getContent());
  }
  public function testConstructorWithSimpleTypes() {
    $response = new JsonResponse('foo');
    $this
      ->assertSame('"foo"', $response
      ->getContent());
    $response = new JsonResponse(0);
    $this
      ->assertSame('0', $response
      ->getContent());
    $response = new JsonResponse(0.1);
    $this
      ->assertSame('0.1', $response
      ->getContent());
    $response = new JsonResponse(true);
    $this
      ->assertSame('true', $response
      ->getContent());
  }
  public function testConstructorWithCustomStatus() {
    $response = new JsonResponse(array(), 202);
    $this
      ->assertSame(202, $response
      ->getStatusCode());
  }
  public function testConstructorAddsContentTypeHeader() {
    $response = new JsonResponse();
    $this
      ->assertSame('application/json', $response->headers
      ->get('Content-Type'));
  }
  public function testConstructorWithCustomHeaders() {
    $response = new JsonResponse(array(), 200, array(
      'ETag' => 'foo',
    ));
    $this
      ->assertSame('application/json', $response->headers
      ->get('Content-Type'));
    $this
      ->assertSame('foo', $response->headers
      ->get('ETag'));
  }
  public function testConstructorWithCustomContentType() {
    $headers = array(
      'Content-Type' => 'application/vnd.acme.blog-v1+json',
    );
    $response = new JsonResponse(array(), 200, $headers);
    $this
      ->assertSame('application/vnd.acme.blog-v1+json', $response->headers
      ->get('Content-Type'));
  }
  public function testCreate() {
    $response = JsonResponse::create(array(
      'foo' => 'bar',
    ), 204);
    $this
      ->assertInstanceOf('Symfony\\Component\\HttpFoundation\\JsonResponse', $response);
    $this
      ->assertEquals('{"foo":"bar"}', $response
      ->getContent());
    $this
      ->assertEquals(204, $response
      ->getStatusCode());
  }
  public function testStaticCreateEmptyJsonObject() {
    $response = JsonResponse::create();
    $this
      ->assertInstanceOf('Symfony\\Component\\HttpFoundation\\JsonResponse', $response);
    $this
      ->assertSame('{}', $response
      ->getContent());
  }
  public function testStaticCreateJsonArray() {
    $response = JsonResponse::create(array(
      0,
      1,
      2,
      3,
    ));
    $this
      ->assertInstanceOf('Symfony\\Component\\HttpFoundation\\JsonResponse', $response);
    $this
      ->assertSame('[0,1,2,3]', $response
      ->getContent());
  }
  public function testStaticCreateJsonObject() {
    $response = JsonResponse::create(array(
      'foo' => 'bar',
    ));
    $this
      ->assertInstanceOf('Symfony\\Component\\HttpFoundation\\JsonResponse', $response);
    $this
      ->assertSame('{"foo":"bar"}', $response
      ->getContent());
  }
  public function testStaticCreateWithSimpleTypes() {
    $response = JsonResponse::create('foo');
    $this
      ->assertInstanceOf('Symfony\\Component\\HttpFoundation\\JsonResponse', $response);
    $this
      ->assertSame('"foo"', $response
      ->getContent());
    $response = JsonResponse::create(0);
    $this
      ->assertInstanceOf('Symfony\\Component\\HttpFoundation\\JsonResponse', $response);
    $this
      ->assertSame('0', $response
      ->getContent());
    $response = JsonResponse::create(0.1);
    $this
      ->assertInstanceOf('Symfony\\Component\\HttpFoundation\\JsonResponse', $response);
    $this
      ->assertSame('0.1', $response
      ->getContent());
    $response = JsonResponse::create(true);
    $this
      ->assertInstanceOf('Symfony\\Component\\HttpFoundation\\JsonResponse', $response);
    $this
      ->assertSame('true', $response
      ->getContent());
  }
  public function testStaticCreateWithCustomStatus() {
    $response = JsonResponse::create(array(), 202);
    $this
      ->assertSame(202, $response
      ->getStatusCode());
  }
  public function testStaticCreateAddsContentTypeHeader() {
    $response = JsonResponse::create();
    $this
      ->assertSame('application/json', $response->headers
      ->get('Content-Type'));
  }
  public function testStaticCreateWithCustomHeaders() {
    $response = JsonResponse::create(array(), 200, array(
      'ETag' => 'foo',
    ));
    $this
      ->assertSame('application/json', $response->headers
      ->get('Content-Type'));
    $this
      ->assertSame('foo', $response->headers
      ->get('ETag'));
  }
  public function testStaticCreateWithCustomContentType() {
    $headers = array(
      'Content-Type' => 'application/vnd.acme.blog-v1+json',
    );
    $response = JsonResponse::create(array(), 200, $headers);
    $this
      ->assertSame('application/vnd.acme.blog-v1+json', $response->headers
      ->get('Content-Type'));
  }
  public function testSetCallback() {
    $response = JsonResponse::create(array(
      'foo' => 'bar',
    ))
      ->setCallback('callback');
    $this
      ->assertEquals('/**/callback({"foo":"bar"});', $response
      ->getContent());
    $this
      ->assertEquals('text/javascript', $response->headers
      ->get('Content-Type'));
  }
  public function testJsonEncodeFlags() {
    $response = new JsonResponse('<>\'&"');
    $this
      ->assertEquals('"\\u003C\\u003E\\u0027\\u0026\\u0022"', $response
      ->getContent());
  }
  public function testGetEncodingOptions() {
    $response = new JsonResponse();
    $this
      ->assertEquals(JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_AMP | JSON_HEX_QUOT, $response
      ->getEncodingOptions());
  }
  public function testSetEncodingOptions() {
    $response = new JsonResponse();
    $response
      ->setData(array(
      array(
        1,
        2,
        3,
      ),
    ));
    $this
      ->assertEquals('[[1,2,3]]', $response
      ->getContent());
    $response
      ->setEncodingOptions(JSON_FORCE_OBJECT);
    $this
      ->assertEquals('{"0":{"0":1,"1":2,"2":3}}', $response
      ->getContent());
  }

  /**
   * @expectedException \InvalidArgumentException
   */
  public function testSetCallbackInvalidIdentifier() {
    $response = new JsonResponse('foo');
    $response
      ->setCallback('+invalid');
  }

  /**
   * @expectedException \InvalidArgumentException
   */
  public function testSetContent() {
    JsonResponse::create("");
  }

  /**
   * @expectedException \Exception
   * @expectedExceptionMessage This error is expected
   */
  public function testSetContentJsonSerializeError() {
    if (!interface_exists('JsonSerializable')) {
      $this
        ->markTestSkipped('Interface JsonSerializable is available in PHP 5.4+');
    }
    $serializable = new JsonSerializableObject();
    JsonResponse::create($serializable);
  }

}
if (interface_exists('JsonSerializable')) {
  class JsonSerializableObject implements \JsonSerializable {
    public function jsonSerialize() {
      throw new \Exception('This error is expected');
    }

  }
}

Classes

Namesort descending Description
JsonResponseTest