Chris@18: request('GET', Url::fromUri('base://jsonapi'), $request_options); Chris@18: $document = Json::decode((string) $response->getBody()); Chris@18: $expected_cache_contexts = [ Chris@18: 'url.site', Chris@18: 'user.roles:authenticated', Chris@18: ]; Chris@18: $this->assertTrue($response->hasHeader('X-Drupal-Cache-Contexts')); Chris@18: $optimized_expected_cache_contexts = \Drupal::service('cache_contexts_manager')->optimizeTokens($expected_cache_contexts); Chris@18: $this->assertSame($optimized_expected_cache_contexts, explode(' ', $response->getHeader('X-Drupal-Cache-Contexts')[0])); Chris@18: $links = $document['links']; Chris@18: $this->assertRegExp('/.*\/jsonapi/', $links['self']['href']); Chris@18: $this->assertRegExp('/.*\/jsonapi\/user\/user/', $links['user--user']['href']); Chris@18: $this->assertRegExp('/.*\/jsonapi\/node_type\/node_type/', $links['node_type--node_type']['href']); Chris@18: $this->assertArrayNotHasKey('meta', $document); Chris@18: Chris@18: // A `me` link must be present for authenticated users. Chris@18: $user = $this->createUser(); Chris@18: $request_options[RequestOptions::HEADERS]['Authorization'] = 'Basic ' . base64_encode($user->name->value . ':' . $user->passRaw); Chris@18: $response = $this->request('GET', Url::fromUri('base://jsonapi'), $request_options); Chris@18: $document = Json::decode((string) $response->getBody()); Chris@18: $this->assertArrayHasKey('meta', $document); Chris@18: $this->assertStringEndsWith('/jsonapi/user/user/' . $user->uuid(), $document['meta']['links']['me']['href']); Chris@18: } Chris@18: Chris@18: }