Issue #3320670 by ankitv18, smustgrave, bbrala: Refactor rest\Functional\ResourceTestBase to use ApiRequestTrait
parent
4deadaa093
commit
e4d0beacad
|
@ -4,13 +4,12 @@ declare(strict_types=1);
|
|||
|
||||
namespace Drupal\Tests\rest\Functional;
|
||||
|
||||
use Behat\Mink\Driver\BrowserKitDriver;
|
||||
use Drupal\Core\Url;
|
||||
use Drupal\rest\RestResourceConfigInterface;
|
||||
use Drupal\Tests\ApiRequestTrait;
|
||||
use Drupal\Tests\BrowserTestBase;
|
||||
use Drupal\user\Entity\Role;
|
||||
use Drupal\user\RoleInterface;
|
||||
use GuzzleHttp\RequestOptions;
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
|
||||
/**
|
||||
|
@ -26,6 +25,10 @@ use Psr\Http\Message\ResponseInterface;
|
|||
*/
|
||||
abstract class ResourceTestBase extends BrowserTestBase {
|
||||
|
||||
use ApiRequestTrait {
|
||||
makeApiRequest as request;
|
||||
}
|
||||
|
||||
/**
|
||||
* The format to use in this test.
|
||||
*
|
||||
|
@ -325,36 +328,6 @@ abstract class ResourceTestBase extends BrowserTestBase {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs a HTTP request. Wraps the Guzzle HTTP client.
|
||||
*
|
||||
* Why wrap the Guzzle HTTP client? Because we want to keep the actual test
|
||||
* code as simple as possible, and hence not require them to specify the
|
||||
* 'http_errors = FALSE' request option, nor do we want them to have to
|
||||
* convert Drupal Url objects to strings.
|
||||
*
|
||||
* We also don't want to follow redirects automatically, to ensure these tests
|
||||
* are able to detect when redirects are added or removed.
|
||||
*
|
||||
* @see \GuzzleHttp\ClientInterface::request()
|
||||
*
|
||||
* @param string $method
|
||||
* HTTP method.
|
||||
* @param \Drupal\Core\Url $url
|
||||
* URL to request.
|
||||
* @param array $request_options
|
||||
* Request options to apply.
|
||||
*
|
||||
* @return \Psr\Http\Message\ResponseInterface
|
||||
*/
|
||||
protected function request($method, Url $url, array $request_options) {
|
||||
$request_options[RequestOptions::HTTP_ERRORS] = FALSE;
|
||||
$request_options[RequestOptions::ALLOW_REDIRECTS] = FALSE;
|
||||
$request_options = $this->decorateWithXdebugCookie($request_options);
|
||||
$client = $this->getHttpClient();
|
||||
return $client->request($method, $url->setAbsolute(TRUE)->toString(), $request_options);
|
||||
}
|
||||
|
||||
/**
|
||||
* Asserts that a resource response has the given status code and body.
|
||||
*
|
||||
|
@ -459,32 +432,6 @@ abstract class ResourceTestBase extends BrowserTestBase {
|
|||
$this->assertResourceResponse($expected_status_code, $expected_body, $response, $expected_cache_tags, $expected_cache_contexts, $expected_page_cache_header_value, $expected_dynamic_page_cache_header_value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the Xdebug cookie to the request options.
|
||||
*
|
||||
* @param array $request_options
|
||||
* The request options.
|
||||
*
|
||||
* @return array
|
||||
* Request options updated with the Xdebug cookie if present.
|
||||
*/
|
||||
protected function decorateWithXdebugCookie(array $request_options) {
|
||||
$session = $this->getSession();
|
||||
$driver = $session->getDriver();
|
||||
if ($driver instanceof BrowserKitDriver) {
|
||||
$client = $driver->getClient();
|
||||
foreach ($client->getCookieJar()->all() as $cookie) {
|
||||
if (isset($request_options[RequestOptions::HEADERS]['Cookie'])) {
|
||||
$request_options[RequestOptions::HEADERS]['Cookie'] .= '; ' . $cookie->getName() . '=' . $cookie->getValue();
|
||||
}
|
||||
else {
|
||||
$request_options[RequestOptions::HEADERS]['Cookie'] = $cookie->getName() . '=' . $cookie->getValue();
|
||||
}
|
||||
}
|
||||
}
|
||||
return $request_options;
|
||||
}
|
||||
|
||||
/**
|
||||
* Recursively sorts an array by key.
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue