protected function ApiDocsJsonApi::verifyAccess in Apigee API Catalog 8
Same name and namespace in other branches
- 8.2 tests/src/Functional/ApiDocsJsonApi.php \Drupal\Tests\apigee_api_catalog\Functional\ApiDocsJsonApi::verifyAccess()
Verify the account has access when making JSON:API call.
Parameters
\Drupal\Core\Session\AccountInterface $account: The account to send the call.
array $apidocs_expected: An array of the expected API Docs.
string $url: The URL to call.
array $request_options: Any request parameters to pass in such as filter query params.
5 calls to ApiDocsJsonApi::verifyAccess()
- ApiDocsJsonApi::testFilterAdminAccess in tests/
src/ Functional/ ApiDocsJsonApi.php - Make sure admin can filter and get results back.
- ApiDocsJsonApi::testFilterViewAccessViewPublished in tests/
src/ Functional/ ApiDocsJsonApi.php - View published permission can filter published docs.
- ApiDocsJsonApi::testFilterViewPublishedWithViewPublishedAndUnpublishedPermissions in tests/
src/ Functional/ ApiDocsJsonApi.php - View published and unpublished permissions can see published docs.
- ApiDocsJsonApi::testFilterViewUnpublishedWithViewPublishedAndUnpublishedPermissions in tests/
src/ Functional/ ApiDocsJsonApi.php - View published and unpublished permissions can see unpublished docs.
- ApiDocsJsonApi::testListAdminAccess in tests/
src/ Functional/ ApiDocsJsonApi.php - Test listing API Docs as an admin.
File
- tests/
src/ Functional/ ApiDocsJsonApi.php, line 209
Class
- ApiDocsJsonApi
- Tests listing API Docs using JSON:API.
Namespace
Drupal\Tests\apigee_api_catalog\FunctionalCode
protected function verifyAccess(AccountInterface $account, array $apidocs_expected, string $url, array $request_options = []) {
// Need this header to make calls.
$request_options[RequestOptions::HEADERS]['Accept'] = 'application/vnd.api+json';
// Add request options and basic auth header together.
$request_options = NestedArray::mergeDeep($request_options, $this
->getAuthenticationRequestOptions($account));
$client = $this
->getSession()
->getDriver()
->getClient()
->getClient();
// Make the API call.
$response = $client
->request('GET', $url, $request_options);
$this
->assertSame([
'application/vnd.api+json',
], $response
->getHeader('Content-Type'));
$response_document = Json::decode((string) $response
->getBody());
// Get the API Docs from response and create array of names fetched.
$apidocs_response = $response_document['data'];
$names = [];
foreach ($apidocs_response as $apidoc) {
$names[] = $apidoc['attributes']['name'];
}
// Sort expected and actual response results by name for comparison.
usort($apidocs_expected, function ($a, $b) {
return strcmp($a
->getName(), $b
->getName());
});
usort($apidocs_response, function ($a, $b) {
return strcmp($a['attributes']['name'], $b['attributes']['name']);
});
for ($i = 0; $i < count($apidocs_response); $i++) {
$this
->assertEqual($apidocs_expected[$i]
->getName(), $apidocs_response[$i]['attributes']['name']);
}
// Make sure the count is the same.
$this
->assertCount(count($apidocs_expected), $apidocs_response, 'Count of API Docs returned does not match count of expected.');
}