annotate core/modules/dblog/src/Tests/Rest/DbLogResourceTest.php @ 9:1fc0ff908d1f

Add another data file
author Chris Cannam
date Mon, 05 Feb 2018 12:34:32 +0000
parents 4c8ae668cc8c
children
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 namespace Drupal\dblog\Tests\Rest;
Chris@0 4
Chris@0 5 use Drupal\Component\Serialization\Json;
Chris@0 6 use Drupal\Core\Url;
Chris@0 7 use Drupal\rest\Tests\RESTTestBase;
Chris@0 8
Chris@0 9 /**
Chris@0 10 * Tests the watchdog database log resource.
Chris@0 11 *
Chris@0 12 * @group dblog
Chris@0 13 */
Chris@0 14 class DbLogResourceTest extends RESTTestBase {
Chris@0 15
Chris@0 16 /**
Chris@0 17 * Modules to enable.
Chris@0 18 *
Chris@0 19 * @var array
Chris@0 20 */
Chris@0 21 public static $modules = ['hal', 'dblog'];
Chris@0 22
Chris@0 23 protected function setUp() {
Chris@0 24 parent::setUp();
Chris@0 25 // Enable REST API for the watchdog resource.
Chris@0 26 $this->enableService('dblog');
Chris@0 27 }
Chris@0 28
Chris@0 29 /**
Chris@0 30 * Writes a log messages and retrieves it via the REST API.
Chris@0 31 */
Chris@0 32 public function testWatchdog() {
Chris@0 33 // Write a log message to the DB.
Chris@0 34 $this->container->get('logger.channel.rest')->notice('Test message');
Chris@0 35 // Get the ID of the written message.
Chris@0 36 $id = db_query_range("SELECT wid FROM {watchdog} WHERE type = :type ORDER BY wid DESC", 0, 1, [':type' => 'rest'])
Chris@0 37 ->fetchField();
Chris@0 38
Chris@0 39 // Create a user account that has the required permissions to read
Chris@0 40 // the watchdog resource via the REST API.
Chris@0 41 $account = $this->drupalCreateUser(['restful get dblog']);
Chris@0 42 $this->drupalLogin($account);
Chris@0 43
Chris@0 44 $response = $this->httpRequest(Url::fromRoute('rest.dblog.GET.' . $this->defaultFormat, ['id' => $id, '_format' => $this->defaultFormat]), 'GET');
Chris@0 45 $this->assertResponse(200);
Chris@0 46 $this->assertHeader('content-type', $this->defaultMimeType);
Chris@0 47 $log = Json::decode($response);
Chris@0 48 $this->assertEqual($log['wid'], $id, 'Log ID is correct.');
Chris@0 49 $this->assertEqual($log['type'], 'rest', 'Type of log message is correct.');
Chris@0 50 $this->assertEqual($log['message'], 'Test message', 'Log message text is correct.');
Chris@0 51
Chris@0 52 // Request an unknown log entry.
Chris@0 53 $response = $this->httpRequest(Url::fromRoute('rest.dblog.GET.' . $this->defaultFormat, ['id' => 9999, '_format' => $this->defaultFormat]), 'GET');
Chris@0 54 $this->assertResponse(404);
Chris@0 55 $decoded = Json::decode($response);
Chris@0 56 $this->assertEqual($decoded['message'], 'Log entry with ID 9999 was not found', 'Response message is correct.');
Chris@0 57
Chris@0 58 // Make a bad request (a true malformed request would never be a route match).
Chris@0 59 $response = $this->httpRequest(Url::fromRoute('rest.dblog.GET.' . $this->defaultFormat, ['id' => 0, '_format' => $this->defaultFormat]), 'GET');
Chris@0 60 $this->assertResponse(400);
Chris@0 61 $decoded = Json::decode($response);
Chris@0 62 $this->assertEqual($decoded['message'], 'No log entry ID was provided', 'Response message is correct.');
Chris@0 63 }
Chris@0 64
Chris@0 65 }