Commit 1aab6ab2 authored by larowlan's avatar larowlan

Issue #2927758 by Wim Leers, dagmar: Update DbLogResourceTest to use the...

Issue #2927758 by Wim Leers, dagmar: Update DbLogResourceTest to use the ResourceTestBase base class instead of the deprecated RESTTestBase
parent 66fc1807
<?php
namespace Drupal\dblog\Tests\Rest;
namespace Drupal\Tests\dblog\Functional;
use Drupal\Component\Serialization\Json;
use Drupal\Core\Url;
use Drupal\rest\Tests\RESTTestBase;
use Drupal\Tests\rest\Functional\CookieResourceTestTrait;
use Drupal\Tests\rest\Functional\ResourceTestBase;
/**
* Tests the watchdog database log resource.
*
* @group dblog
*/
class DbLogResourceTest extends RESTTestBase {
class DbLogResourceTest extends ResourceTestBase {
use CookieResourceTestTrait;
/**
* {@inheritdoc}
*/
protected static $format = 'hal_json';
/**
* {@inheritdoc}
*/
protected static $mimeType = 'application/hal+json';
/**
* {@inheritdoc}
*/
protected static $auth = 'cookie';
/**
* Modules to enable.
*
* @var array
* {@inheritdoc}
*/
protected static $resourceConfigId = 'dblog';
/**
* {@inheritdoc}
*/
public static $modules = ['hal', 'dblog'];
protected function setUp() {
/**
* {@inheritdoc}
*/
public function setUp() {
parent::setUp();
// Enable REST API for the watchdog resource.
$this->enableService('dblog');
$auth = isset(static::$auth) ? [static::$auth] : [];
$this->provisionResource([static::$format], $auth);
}
/**
......@@ -36,30 +61,67 @@ public function testWatchdog() {
$id = db_query_range("SELECT wid FROM {watchdog} WHERE type = :type ORDER BY wid DESC", 0, 1, [':type' => 'rest'])
->fetchField();
$this->initAuthentication();
$url = Url::fromRoute('rest.dblog.GET.' . static::$format, ['id' => $id, '_format' => static::$format]);
$request_options = $this->getAuthenticationRequestOptions('GET');
$response = $this->request('GET', $url, $request_options);
$this->assertResourceErrorResponse(403, "The 'restful get dblog' permission is required.", $response);
// Create a user account that has the required permissions to read
// the watchdog resource via the REST API.
$account = $this->drupalCreateUser(['restful get dblog']);
$this->drupalLogin($account);
$this->setUpAuthorization('GET');
$response = $this->httpRequest(Url::fromRoute('rest.dblog.GET.' . $this->defaultFormat, ['id' => $id, '_format' => $this->defaultFormat]), 'GET');
$this->assertResponse(200);
$this->assertHeader('content-type', $this->defaultMimeType);
$log = Json::decode($response);
$response = $this->request('GET', $url, $request_options);
$this->assertResourceResponse(200, FALSE, $response, ['config:rest.resource.dblog', 'config:rest.settings', 'http_response'], ['user.permissions'], FALSE, 'MISS');
$log = Json::decode((string) $response->getBody());
$this->assertEqual($log['wid'], $id, 'Log ID is correct.');
$this->assertEqual($log['type'], 'rest', 'Type of log message is correct.');
$this->assertEqual($log['message'], 'Test message', 'Log message text is correct.');
// Request an unknown log entry.
$response = $this->httpRequest(Url::fromRoute('rest.dblog.GET.' . $this->defaultFormat, ['id' => 9999, '_format' => $this->defaultFormat]), 'GET');
$this->assertResponse(404);
$decoded = Json::decode($response);
$this->assertEqual($decoded['message'], 'Log entry with ID 9999 was not found', 'Response message is correct.');
$url->setRouteParameter('id', 9999);
$response = $this->request('GET', $url, $request_options);
$this->assertResourceErrorResponse(404, 'Log entry with ID 9999 was not found', $response);
// Make a bad request (a true malformed request would never be a route match).
$response = $this->httpRequest(Url::fromRoute('rest.dblog.GET.' . $this->defaultFormat, ['id' => 0, '_format' => $this->defaultFormat]), 'GET');
$this->assertResponse(400);
$decoded = Json::decode($response);
$this->assertEqual($decoded['message'], 'No log entry ID was provided', 'Response message is correct.');
$url->setRouteParameter('id', 0);
$response = $this->request('GET', $url, $request_options);
$this->assertResourceErrorResponse(400, 'No log entry ID was provided', $response);
}
/**
* {@inheritdoc}
*/
protected function setUpAuthorization($method) {
switch ($method) {
case 'GET':
$this->grantPermissionsToTestedRole(['restful get dblog']);
break;
default:
throw new \UnexpectedValueException();
}
}
/**
* {@inheritdoc}
*/
protected function assertNormalizationEdgeCases($method, Url $url, array $request_options) {}
/**
* {@inheritdoc}
*/
protected function getExpectedUnauthorizedAccessMessage($method) {}
/**
* {@inheritdoc}
*/
protected function getExpectedBcUnauthorizedAccessMessage($method) {}
/**
* {@inheritdoc}
*/
protected function getExpectedUnauthorizedAccessCacheability() {}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment