View source
<?php
namespace Drupal\Tests\backup_migrate\Functional;
use Drupal\Core\File\FileSystemInterface;
use Drupal\Tests\BrowserTestBase;
class BackupMigratePermissionsTest extends BrowserTestBase {
public static $modules = [
'backup_migrate',
];
protected $strictConfigSchema = FALSE;
protected $defaultTheme = 'stark';
protected $allPaths = [
'admin/config/development/backup_migrate',
'admin/config/development/backup_migrate/advanced',
'admin/config/development/backup_migrate/restore',
'admin/config/development/backup_migrate/backups',
'admin/config/development/backup_migrate/schedule',
'admin/config/development/backup_migrate/schedule/add',
'admin/config/development/backup_migrate/settings',
'admin/config/development/backup_migrate/settings/add',
'admin/config/development/backup_migrate/settings/destination',
'admin/config/development/backup_migrate/settings/destination/add',
'admin/config/development/backup_migrate/settings/source',
'admin/config/development/backup_migrate/settings/source/add',
'admin/config/development/backup_migrate/settings/destination/backups/private_files/delete/none.mysql.gz',
];
public function setUp() : void {
parent::setUp();
$path = 'private://backup_migrate/';
\Drupal::service('file_system')
->prepareDirectory($path, FileSystemInterface::CREATE_DIRECTORY);
}
private function checkPathsWithUser(array $ok_paths = [], array $permissions = []) {
$this
->drupalLogin($this
->drupalCreateUser($permissions));
$this
->checkPaths($ok_paths);
}
private function checkPaths(array $ok_paths = []) {
foreach ($this->allPaths as $path) {
$this
->drupalGet($path);
if (in_array($path, $ok_paths)) {
$this
->assertSession()
->statusCodeEquals(200);
}
else {
$this
->assertSession()
->statusCodeEquals(403);
}
}
}
public function testAnonymous() {
$this
->checkPaths([]);
}
public function testAuthenticated() {
$permissions = [];
$ok_paths = [];
$this
->checkPathsWithUser($ok_paths, $permissions);
}
public function testAdminister() {
$permissions = [
'administer backup and migrate',
];
$ok_paths = [
'admin/config/development/backup_migrate/schedule',
'admin/config/development/backup_migrate/schedule/add',
'admin/config/development/backup_migrate/settings',
'admin/config/development/backup_migrate/settings/add',
'admin/config/development/backup_migrate/settings/destination',
'admin/config/development/backup_migrate/settings/destination/add',
'admin/config/development/backup_migrate/settings/source',
'admin/config/development/backup_migrate/settings/source/add',
'admin/config/development/backup_migrate/settings/destination/backups/private_files/delete/none.mysql.gz',
];
$this
->checkPathsWithUser($ok_paths, $permissions);
}
public function testPerformBackup() {
$permissions = [
'perform backup',
];
$ok_paths = [
'admin/config/development/backup_migrate',
'admin/config/development/backup_migrate/advanced',
];
$this
->checkPathsWithUser($ok_paths, $permissions);
}
public function testRestoreFromBackup() {
$permissions = [
'restore from backup',
];
$ok_paths = [
'admin/config/development/backup_migrate/restore',
];
$this
->checkPathsWithUser($ok_paths, $permissions);
}
public function testAccessBackupFiles() {
$permissions = [
'access backup files',
];
$ok_paths = [
'admin/config/development/backup_migrate/backups',
];
$this
->checkPathsWithUser($ok_paths, $permissions);
}
}