function ResourceTest::testSerializationClassIsOptional

Same name and namespace in other branches
  1. 9 core/modules/rest/tests/src/Functional/ResourceTest.php \Drupal\Tests\rest\Functional\ResourceTest::testSerializationClassIsOptional()
  2. 8.9.x core/modules/rest/tests/src/Functional/ResourceTest.php \Drupal\Tests\rest\Functional\ResourceTest::testSerializationClassIsOptional()
  3. 11.x core/modules/rest/tests/src/Functional/ResourceTest.php \Drupal\Tests\rest\Functional\ResourceTest::testSerializationClassIsOptional()

Tests that serialization_class is optional.

File

core/modules/rest/tests/src/Functional/ResourceTest.php, line 119

Class

ResourceTest
Tests the structure of a REST resource.

Namespace

Drupal\Tests\rest\Functional

Code

public function testSerializationClassIsOptional() : void {
  RestResourceConfig::create([
    'id' => 'serialization_test',
    'granularity' => RestResourceConfigInterface::METHOD_GRANULARITY,
    'configuration' => [
      'POST' => [
        'supported_formats' => [
          'json',
        ],
        'supported_auth' => [
          'cookie',
        ],
      ],
    ],
  ])->save();
  \Drupal::service('router.builder')->rebuildIfNeeded();
  Role::load(RoleInterface::ANONYMOUS_ID)->grantPermission('restful post serialization_test')
    ->save();
  $serialized = $this->container
    ->get('serializer')
    ->serialize([
    'foo',
    'bar',
  ], 'json');
  $request_options = [
    RequestOptions::HEADERS => [
      'Content-Type' => 'application/json',
    ],
    RequestOptions::BODY => $serialized,
  ];
  /** @var \GuzzleHttp\ClientInterface $client */
  $client = $this->getSession()
    ->getDriver()
    ->getClient()
    ->getClient();
  $response = $client->request('POST', $this->buildUrl('serialization_test', [
    'query' => [
      '_format' => 'json',
    ],
  ]), $request_options);
  $this->assertSame(200, $response->getStatusCode());
  $this->assertSame('["foo","bar"]', (string) $response->getBody());
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.