X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;f=web%2Fcore%2Fmodules%2Fdblog%2Fsrc%2FTests%2FRest%2FDbLogResourceTest.php;fp=web%2Fcore%2Fmodules%2Fdblog%2Fsrc%2FTests%2FRest%2FDbLogResourceTest.php;h=44dbe99dd1eab7789ac5a39228f43e4e0a217775;hb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;hp=0000000000000000000000000000000000000000;hpb=57c063afa3f66b07c4bbddc2d6129a96d90f0aad;p=yaffs-website diff --git a/web/core/modules/dblog/src/Tests/Rest/DbLogResourceTest.php b/web/core/modules/dblog/src/Tests/Rest/DbLogResourceTest.php new file mode 100644 index 000000000..44dbe99dd --- /dev/null +++ b/web/core/modules/dblog/src/Tests/Rest/DbLogResourceTest.php @@ -0,0 +1,65 @@ +enableService('dblog'); + } + + /** + * Writes a log messages and retrieves it via the REST API. + */ + public function testWatchdog() { + // Write a log message to the DB. + $this->container->get('logger.channel.rest')->notice('Test message'); + // Get the ID of the written message. + $id = db_query_range("SELECT wid FROM {watchdog} WHERE type = :type ORDER BY wid DESC", 0, 1, [':type' => 'rest']) + ->fetchField(); + + // 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); + + $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); + $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.'); + + // 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.'); + } + +}