protected function EntityShareClientFunctionalTestBase::discoverJsonApiEndpoints in Entity Share 8.2
Same name and namespace in other branches
- 8.3 modules/entity_share_client/tests/src/Functional/EntityShareClientFunctionalTestBase.php \Drupal\Tests\entity_share_client\Functional\EntityShareClientFunctionalTestBase::discoverJsonApiEndpoints()
Helper function to populate the request service with responses.
Parameters
\GuzzleHttp\Client $http_client: The http client.
string $url: THe url to request.
6 calls to EntityShareClientFunctionalTestBase::discoverJsonApiEndpoints()
- CliTest::populateRequestService in modules/
entity_share_client/ tests/ src/ Functional/ CliTest.php - Helper function to populate the request service with responses.
- ContentEntityReferenceTest::populateRequestService in modules/
entity_share_client/ tests/ src/ Functional/ ContentEntityReferenceTest.php - Helper function to populate the request service with responses.
- EntityShareAsyncFunctionalTest::populateRequestService in modules/
entity_share_async/ tests/ src/ Functional/ EntityShareAsyncFunctionalTest.php - Helper function to populate the request service with responses.
- EntityShareClientFunctionalTestBase::populateRequestService in modules/
entity_share_client/ tests/ src/ Functional/ EntityShareClientFunctionalTestBase.php - Helper function to populate the request service with responses.
- InfiniteLoopTest::populateRequestService in modules/
entity_share_client/ tests/ src/ Functional/ InfiniteLoopTest.php - Helper function to populate the request service with responses.
File
- modules/
entity_share_client/ tests/ src/ Functional/ EntityShareClientFunctionalTestBase.php, line 406
Class
- EntityShareClientFunctionalTestBase
- Base class for Entity share server functional tests.
Namespace
Drupal\Tests\entity_share_client\FunctionalCode
protected function discoverJsonApiEndpoints(Client $http_client, $url) {
// Prevents infinite loop.
if (in_array($url, $this->visitedUrlsDuringSetup)) {
return;
}
$this->visitedUrlsDuringSetup[] = $url;
$response = $this->requestService
->request($http_client, 'GET', $url);
$json_response = Json::decode((string) $response
->getBody());
// Loop on the data and relationships to get expected endpoints.
if (is_array($json_response['data'])) {
foreach (EntityShareUtility::prepareData($json_response['data']) as $data) {
if (isset($data['relationships'])) {
foreach ($data['relationships'] as $field_data) {
if (isset($field_data['links']['related']['href'])) {
$this
->discoverJsonApiEndpoints($http_client, $field_data['links']['related']['href']);
}
}
}
// File entity.
if ($data['type'] == 'file--file' && isset($data['attributes']['uri']['url'])) {
// Need to handle exception for the test where the physical file has
// been deleted.
try {
$this->requestService
->request($this->remoteManager
->prepareClient($this->remote), 'GET', $data['attributes']['uri']['url']);
} catch (ClientException $exception) {
// Do nothing.
}
}
}
}
// Handle pagination.
if (isset($json_response['links']['next']['href'])) {
$this
->discoverJsonApiEndpoints($http_client, $json_response['links']['next']['href']);
}
}