diff options
Diffstat (limited to 'test/php/library/Icingadb')
-rw-r--r-- | test/php/library/Icingadb/Common/MacrosTest.php | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/test/php/library/Icingadb/Common/MacrosTest.php b/test/php/library/Icingadb/Common/MacrosTest.php new file mode 100644 index 0000000..dd01a01 --- /dev/null +++ b/test/php/library/Icingadb/Common/MacrosTest.php @@ -0,0 +1,105 @@ +<?php + +/* Icinga DB Web | (c) 2021 Icinga GmbH | GPLv2 */ + +namespace Tests\Icinga\Modules\Icingadb\Common; + +use Icinga\Module\Icingadb\Common\Macros; +use Icinga\Module\Icingadb\Model\Host; +use Icinga\Module\Icingadb\Model\Service; +use ipl\Orm\Query; +use ipl\Orm\ResultSet; +use PHPUnit\Framework\TestCase; + +class MacrosTest extends TestCase +{ + use Macros; + + const VARS = [ + 'os' => "Ubuntu", + 'days[0]' => 'mo', + 'days[1]' => 'tue', + 'days[2]' => 'wed', + 'days[3]' => 'thu', + 'days[4]' => 'fr' + ]; + + public function testHostMacros() + { + $mock = \Mockery::mock(Host::class); + $mock->name = 'test'; + $mock->address = '1.1.1.1'; + $mock->address6 = '::1'; + $mock->vars = self::VARS; + + $mock->hostgroup = new Query(); + + $this->assertEquals($mock->name, $this->expandMacros('$host.name$', $mock)); + $this->assertEquals($mock->name, $this->expandMacros('$name$', $mock)); + $this->assertEquals($mock->address, $this->expandMacros('$host.address$', $mock)); + $this->assertEquals($mock->address6, $this->expandMacros('$host.address6$', $mock)); + + // A Host can have more than one hostgroups + $this->assertEquals('$host.hostgroup$', $this->expandMacros('$host.hostgroup$', $mock)); + $this->assertEquals('$host.hostgroup.name$', $this->expandMacros('$host.hostgroup.name$', $mock)); + + // Host custom vars + $this->assertEquals($mock->vars['os'], $this->expandMacros('$host.vars.os$', $mock)); + $this->assertEquals($mock->vars['os'], $this->expandMacros('$vars.os$', $mock)); + $this->assertEquals($mock->vars['days[2]'], $this->expandMacros('$vars.days[2]$', $mock)); + $this->assertEquals($mock->vars['days[4]'], $this->expandMacros('$host.vars.days[4]$', $mock)); + + // Host to service relation + $this->assertEquals('$service.name$', $this->expandMacros('$service.name$', $mock)); + $this->assertEquals('$service.address$', $this->expandMacros('$service.address$', $mock)); + + // Service custom vars + $this->assertEquals('$service.vars.os$', $this->expandMacros('$service.vars.os$', $mock)); + $this->assertEquals('$service.vars.days[0]$', $this->expandMacros('$service.vars.days[0]$', $mock)); + $this->assertEquals('$service.vars.days[2]$', $this->expandMacros('$service.vars.days[2]$', $mock)); + } + + public function testServiceMacros() + { + $mock = \Mockery::mock(Service::class); + $mock->name = 'test-service'; + $mock->description = 'A test service'; + $mock->vars = self::VARS; + + $mock->servicegroup = new Query(); + + $hostMock = \Mockery::mock(Host::class); + $hostMock->name = 'test'; + $hostMock->address = '1.1.1.1'; + $hostMock->hostgroup = new ResultSet(new \ArrayIterator()); + $hostMock->vars = self::VARS; + + $mock->host = $hostMock; + + $this->assertEquals($mock->name, $this->expandMacros('$service.name$', $mock)); + $this->assertEquals($mock->name, $this->expandMacros('$name$', $mock)); + $this->assertEquals($mock->description, $this->expandMacros('$service.description$', $mock)); + + // A Service can have more than one hostgroups + $this->assertEquals('$service.servicegroup$', $this->expandMacros('$service.servicegroup$', $mock)); + $this->assertEquals('$service.servicegroup.name$', $this->expandMacros('$service.servicegroup.name$', $mock)); + + // Service custom vars + $this->assertEquals($mock->vars['os'], $this->expandMacros('$service.vars.os$', $mock)); + $this->assertEquals($mock->vars['os'], $this->expandMacros('$vars.os$', $mock)); + $this->assertEquals($mock->vars['days[2]'], $this->expandMacros('$vars.days[2]$', $mock)); + $this->assertEquals($mock->vars['days[4]'], $this->expandMacros('$service.vars.days[4]$', $mock)); + + $this->assertEquals($hostMock->name, $this->expandMacros('$host.name$', $mock)); + $this->assertEquals($hostMock->address, $this->expandMacros('$host.address$', $mock)); + + // Host custom vars + $this->assertEquals($hostMock->vars['os'], $this->expandMacros('$host.vars.os$', $mock)); + $this->assertEquals($hostMock->vars['days[0]'], $this->expandMacros('$host.vars.days[0]$', $mock)); + $this->assertEquals($hostMock->vars['days[3]'], $this->expandMacros('$host.vars.days[3]$', $mock)); + + // A Host can have more than one hostgroups + $this->assertEquals('$host.hostgroup$', $this->expandMacros('$host.hostgroup$', $mock)); + $this->assertEquals('$host.hostgroup.name$', $this->expandMacros('$host.hostgroup.name$', $mock)); + } +} |