acquia_dam-1.0.0-rc1/tests/src/Kernel/AuthenticationControllerTest.php
tests/src/Kernel/AuthenticationControllerTest.php
<?php
namespace Drupal\Tests\acquia_dam\Kernel;
/**
* Test Acquia Dam authentication request handling.
*
* @group acquia_dam
*/
class AuthenticationControllerTest extends AcquiaDamKernelTestBase {
/**
* {@inheritdoc}
*/
protected static $modules = [
'dblog',
];
/**
* {@inheritdoc}
*/
public function setUp(): void {
parent::setUp();
$this->installSchema('dblog', ['watchdog']);
}
/**
* Test how the site handling the errors thrown from the server.
*
* @throws \Drupal\Core\Entity\EntityStorageException
*/
public function testAuthPageResponse(): void {
$admin = $this->drupalSetUpCurrentUser([], [], TRUE);
$request = $this->getMockedRequest("/acquia-dam/auth?code=server_error", 'GET');
$response = $this->processRequest($request);
self::assertEquals(302, $response->getStatusCode());
$this->assertStringContainsString('/admin/config/acquia-dam', $response->getContent());
$this->assertTrue($this->isErrorLogged('Server error: `POST https://test.widencollective.com/api/rest/oauth/token` resulted in a `502 Bad Gateway` response'));
$this->assertTrue($this->isErrorLogged('Error during site authentication: Something went wrong contacting Acquia DAM, and your account can’t be connected. Contact the site administrator.'));
$request = $this->getMockedRequest("/user/acquia-dam/auth?code=client_error", 'GET');
$response = $this->processRequest($request);
self::assertEquals(302, $response->getStatusCode());
$this->assertTrue($this->isErrorLogged('User authentication request does not contain user id.'));
$request = $this->getMockedRequest("/user/acquia-dam/auth?uid={$admin->id()}", 'GET');
$response = $this->processRequest($request);
self::assertEquals(302, $response->getStatusCode());
$this->assertTrue($this->isErrorLogged('Authentication request does not contain authentication code.'));
}
/**
* Checks if the given error message is in the watchdog table.
*
* @param string $message
* Error message.
*
* @return bool
* TRUE if the message present, FALSE otherwise.
*/
protected function isErrorLogged(string $message) {
return (bool) \Drupal::database()
->select('watchdog', 'w')
->fields('w')
->condition('message', $message)
->countQuery()
->execute()
->fetchField();
}
}
