summaryrefslogtreecommitdiffstats
path: root/test/php/library/Director/Objects/HostApplyMatchesTest.php
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--test/php/library/Director/Objects/HostApplyMatchesTest.php93
1 files changed, 93 insertions, 0 deletions
diff --git a/test/php/library/Director/Objects/HostApplyMatchesTest.php b/test/php/library/Director/Objects/HostApplyMatchesTest.php
new file mode 100644
index 0000000..b9f22ca
--- /dev/null
+++ b/test/php/library/Director/Objects/HostApplyMatchesTest.php
@@ -0,0 +1,93 @@
+<?php
+
+namespace Tests\Icinga\Module\Director\Objects;
+
+use Icinga\Data\Filter\Filter;
+use Icinga\Module\Director\Objects\HostApplyMatches;
+use Icinga\Module\Director\Objects\IcingaHost;
+use Icinga\Module\Director\Test\BaseTestCase;
+
+class HostApplyMatchesTest extends BaseTestCase
+{
+ public function testExactMatches()
+ {
+ $matcher = HostApplyMatches::prepare($this->sampleHost());
+ $this->assertTrue(
+ $matcher->matchesFilter(
+ Filter::fromQueryString('host.name=%22aha%22')
+ )
+ );
+ $this->assertFalse(
+ $matcher->matchesFilter(
+ Filter::fromQueryString('host.name=%22ahaa%22')
+ )
+ );
+ }
+
+ public function testWildcardMatches()
+ {
+ $matcher = HostApplyMatches::prepare($this->sampleHost());
+ $this->assertTrue(
+ $matcher->matchesFilter(
+ Filter::fromQueryString('host.name=%22ah*%22')
+ )
+ );
+ $this->assertTrue(
+ $matcher->matchesFilter(
+ Filter::fromQueryString('host.name=%22*h*%22')
+ )
+ );
+ $this->assertFalse(
+ $matcher->matchesFilter(
+ Filter::fromQueryString('host.name=%22*g*%22')
+ )
+ );
+ }
+
+ public function testStringVariableMatches()
+ {
+ $matcher = HostApplyMatches::prepare($this->sampleHost());
+ $this->assertTrue(
+ $matcher->matchesFilter(
+ Filter::fromQueryString('host.vars.location=%22*urem*%22')
+ )
+ );
+ $this->assertTrue(
+ $matcher->matchesFilter(
+ Filter::fromQueryString('host.vars.location=%22Nuremberg%22')
+ )
+ );
+ $this->assertFalse(
+ $matcher->matchesFilter(
+ Filter::fromQueryString('host.vars.location=%22Nurembergg%22')
+ )
+ );
+ }
+
+ public function testArrayVariableMatches()
+ {
+ $matcher = HostApplyMatches::prepare($this->sampleHost());
+ $this->assertTrue(
+ $matcher->matchesFilter(
+ Filter::fromQueryString('%22Amazing%22=host.vars.tags')
+ )
+ );
+ $this->assertFalse(
+ $matcher->matchesFilter(
+ Filter::fromQueryString('%22Amazingg%22=host.vars.tags')
+ )
+ );
+ }
+
+ protected function sampleHost()
+ {
+ return IcingaHost::create(array(
+ 'object_type' => 'object',
+ 'object_name' => 'aha',
+ 'vars' => array(
+ 'location' => 'Nuremberg',
+ 'tags' => array('Special', 'Amazing'),
+ )
+ ), $this->getDb());
+ }
+}