From f66ab8dae2f3d0418759f81a3a64dc9517a62449 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 14 Apr 2024 15:17:31 +0200 Subject: Adding upstream version 1.10.2. Signed-off-by: Daniel Baumann --- .../Director/Data/AssignFilterHelperTest.php | 86 ++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 test/php/library/Director/Data/AssignFilterHelperTest.php (limited to 'test/php/library/Director/Data/AssignFilterHelperTest.php') diff --git a/test/php/library/Director/Data/AssignFilterHelperTest.php b/test/php/library/Director/Data/AssignFilterHelperTest.php new file mode 100644 index 0000000..5fcdd95 --- /dev/null +++ b/test/php/library/Director/Data/AssignFilterHelperTest.php @@ -0,0 +1,86 @@ + '127.0.0.1', + 'vars.operatingsystem' => 'centos', + 'vars.customer' => 'ACME', + 'vars.roles' => ['webserver', 'mailserver'], + 'vars.bool_string' => 'true', + 'groups' => ['web-server', 'mail-server'], + ]; + } + + public function testSimpleApplyFilter() + { + $this->assertFilterOutcome(true, 'host.address=true', self::$exampleHost); + $this->assertFilterOutcome(false, 'host.address=false', self::$exampleHost); + $this->assertFilterOutcome(true, 'host.address=false', (object) ['address' => null]); + $this->assertFilterOutcome(false, 'host.address=true', (object) ['address' => null]); + $this->assertFilterOutcome(true, 'host.address=%22127.0.0.%2A%22', self::$exampleHost); + } + + public function testListApplyFilter() + { + $this->assertFilterOutcome(true, 'host.vars.roles=%22*server%22', self::$exampleHost); + $this->assertFilterOutcome(true, 'host.groups=%22*-server%22', self::$exampleHost); + $this->assertFilterOutcome(false, 'host.groups=%22*-nothing%22', self::$exampleHost); + } + + public function testComplexApplyFilter() + { + $this->assertFilterOutcome( + true, + 'host.vars.operatingsystem=%5B%22centos%22%2C%22fedora%22%5D|host.vars.osfamily=%22redhat%22', + self::$exampleHost + ); + + $this->assertFilterOutcome( + false, + 'host.vars.operatingsystem=%5B%22centos%22%2C%22fedora%22%5D&(!(host.vars.customer=%22acme*%22))', + self::$exampleHost + ); + + $this->assertFilterOutcome( + true, + '!(host.vars.bool_string="false")&host.vars.operatingsystem="centos"', + self::$exampleHost + ); + } + + /** + * @param bool $expected + * @param string $filterQuery + * @param object $object + * @param string $message + */ + protected function assertFilterOutcome($expected, $filterQuery, $object, $message = null, $type = 'host') + { + $filter = Filter::fromQueryString($filterQuery); + + if ($type === 'host') { + HostApplyMatches::fixFilterColumns($filter); + } + + $helper = new AssignFilterHelper($filter); + $actual = $helper->matches($object); + + if ($message === null) { + $message = sprintf('with filter "%s"', $filterQuery); + } + + $this->assertEquals($expected, $actual, $message); + } +} -- cgit v1.2.3