mirror of
https://github.com/Icinga/icingaweb2.git
synced 2025-09-25 18:59:04 +02:00
Test: Introduce BaseDashboardTestCase
class
This commit is contained in:
parent
6939820c24
commit
af4d9c8257
99
library/Icinga/Test/BaseDashboardTestCase.php
Normal file
99
library/Icinga/Test/BaseDashboardTestCase.php
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/* Icinga Web 2 | (c) 2022 Icinga GmbH | GPLv2+ */
|
||||||
|
|
||||||
|
namespace Icinga\Test;
|
||||||
|
|
||||||
|
use Icinga\Authentication\Role;
|
||||||
|
use Icinga\User;
|
||||||
|
use Icinga\Util\DBUtils;
|
||||||
|
use Icinga\Web\Dashboard\Dashboard;
|
||||||
|
use Icinga\Web\Dashboard\DashboardHome;
|
||||||
|
use ipl\Sql\Connection;
|
||||||
|
use Mockery;
|
||||||
|
use PDO;
|
||||||
|
|
||||||
|
class BaseDashboardTestCase extends BaseTestCase
|
||||||
|
{
|
||||||
|
const TEST_HOME = 'Test Home';
|
||||||
|
|
||||||
|
/** @var Dashboard */
|
||||||
|
protected $dashboard;
|
||||||
|
|
||||||
|
/** @var User A test user for the dashboards */
|
||||||
|
protected $user;
|
||||||
|
|
||||||
|
public function setUp(): void
|
||||||
|
{
|
||||||
|
parent::setUp();
|
||||||
|
|
||||||
|
DBUtils::setConn($this->getDBConnection());
|
||||||
|
$this->dashboard = new Dashboard();
|
||||||
|
$this->dashboard->setUser($this->getUser());
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function tearDown(): void
|
||||||
|
{
|
||||||
|
parent::tearDown();
|
||||||
|
Mockery::close(); // Necessary because some tests run in a separate process
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function setupIcingaMock()
|
||||||
|
{
|
||||||
|
$moduleMock = Mockery::mock('Icinga\Application\Modules\Module');
|
||||||
|
$searchUrl = (object) array(
|
||||||
|
'title' => 'Hosts',
|
||||||
|
'url' => 'monitoring/list/hosts?sort=host_severity&limit=10'
|
||||||
|
);
|
||||||
|
$moduleMock->shouldReceive('getSearchUrls')->andReturn(array(
|
||||||
|
$searchUrl
|
||||||
|
));
|
||||||
|
$moduleMock->shouldReceive('getName')->andReturn('test');
|
||||||
|
$moduleMock->shouldReceive('getDashboard')->andReturn([]);
|
||||||
|
$moduleMock->shouldReceive('getDashlets')->andReturn([]);
|
||||||
|
|
||||||
|
$moduleManagerMock = Mockery::mock('Icinga\Application\Modules\Manager');
|
||||||
|
$moduleManagerMock->shouldReceive('getLoadedModules')->andReturn(array(
|
||||||
|
'test-module' => $moduleMock
|
||||||
|
));
|
||||||
|
|
||||||
|
$bootstrapMock = parent::setupIcingaMock();
|
||||||
|
$bootstrapMock->shouldReceive('getModuleManager')->andReturn($moduleManagerMock);
|
||||||
|
|
||||||
|
return $bootstrapMock;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function getDBConnection(): Connection
|
||||||
|
{
|
||||||
|
$conn = new Connection([
|
||||||
|
'db' => 'sqlite',
|
||||||
|
'dbname' => ':memory:',
|
||||||
|
'options' => [
|
||||||
|
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ
|
||||||
|
]
|
||||||
|
]);
|
||||||
|
|
||||||
|
$fixtures = @file_get_contents(__DIR__ . '/fixtures.sql');
|
||||||
|
$conn->exec($fixtures);
|
||||||
|
|
||||||
|
return $conn;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function getUser(): User
|
||||||
|
{
|
||||||
|
if ($this->user === null) {
|
||||||
|
$role = new Role();
|
||||||
|
$role->setPermissions(['*']);
|
||||||
|
|
||||||
|
$this->user = new User('test');
|
||||||
|
$this->user->setRoles([$role]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->user;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function getTestHome(string $name = self::TEST_HOME)
|
||||||
|
{
|
||||||
|
return new DashboardHome($name);
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user