diff options
Diffstat (limited to '')
-rw-r--r-- | test/php/library/Director/PropertyModifier/PropertyModifierParseURLTest.php | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/test/php/library/Director/PropertyModifier/PropertyModifierParseURLTest.php b/test/php/library/Director/PropertyModifier/PropertyModifierParseURLTest.php new file mode 100644 index 0000000..a5ccb79 --- /dev/null +++ b/test/php/library/Director/PropertyModifier/PropertyModifierParseURLTest.php @@ -0,0 +1,147 @@ +<?php + +namespace Tests\Icinga\Module\Director\PropertyModifier; + +use Icinga\Module\Director\PropertyModifier\PropertyModifierParseURL; +use Icinga\Module\Director\Test\BaseTestCase; + +class PropertyModifierParseURLTest extends BaseTestCase +{ + protected static $validurl = 'https://www.icinga.org/path/file.html?foo=bar#section'; + protected static $invalidurl = 'http:///www.icinga.org/'; + + + public function testModifierDoesNotSupportArraysItself() + { + $modifier = new PropertyModifierParseURL(); + $this->assertFalse($modifier->hasArraySupport()); + } + + public function testEmptyPropertyReturnsNullOnfailureNull() + { + $modifier = new PropertyModifierParseURL(); + $modifier->setSettings([ + 'url_component' => 'query', + 'on_failure' => 'null', + ]); + + $this->assertNull($modifier->transform('')); + } + + public function testMissingComponentReturnsNullOnfailureNull() + { + $modifier = new PropertyModifierParseURL(); + $modifier->setSettings([ + 'url_component' => 'query', + 'on_failure' => 'null', + ]); + + $this->assertNull($modifier->transform('https://www.icinga.org/path/')); + } + + public function testMissingComponentReturnsPropertyOnfailureKeep() + { + $modifier = new PropertyModifierParseURL(); + $modifier->setSettings([ + 'url_component' => 'query', + 'on_failure' => 'keep', + ]); + + $this->assertEquals('http://www.icinga.org/path/', $modifier->transform('http://www.icinga.org/path/')); + } + + /** + * @expectedException \Icinga\Exception\InvalidPropertyException + */ + public function testMissingComponentThrowsExceptionOnfailureFail() + { + $modifier = new PropertyModifierParseURL(); + $modifier->setSettings([ + 'url_component' => 'query', + 'on_failure' => 'fail', + ]); + + $modifier->transform('http://www.icinga.org/path/'); + } + + + public function testInvalidUrlReturnsNullOnfailureNull() + { + $modifier = new PropertyModifierParseURL(); + $modifier->setSettings([ + 'url_component' => 'host', + 'on_failure' => 'null', + ]); + + $this->assertNull($modifier->transform(self::$invalidurl)); + } + + public function testInvalidUrlReturnsItselfOnfailureKeep() + { + $modifier = new PropertyModifierParseURL(); + $modifier->setSettings([ + 'url_component' => 'host', + 'on_failure' => 'keep', + ]); + + $this->assertEquals(self::$invalidurl, $modifier->transform(self::$invalidurl)); + } + + /** + * @expectedException \Icinga\Exception\InvalidPropertyException + */ + public function testInvalidUrlThrowsExceptionOnfailureFail() + { + $modifier = new PropertyModifierParseURL(); + $modifier->setSettings([ + 'url_component' => 'host', + 'on_failure' => 'fail', + ]); + + $modifier->transform(self::$invalidurl); + } + + + /** + * @dataProvider dataURLcomponentProvider + */ + public function testSuccessfullyParse($component, $result) + { + $modifier = new PropertyModifierParseURL(); + $modifier->setSettings([ + 'url_component' => $component, + 'on_failure' => 'null', + ]); + + $this->assertEquals($result, $modifier->transform(self::$validurl)); + } + public function dataURLcomponentProvider() + { + return [ + 'scheme' => [ + 'scheme', + 'https', + ], + 'host' => [ + 'host', + 'www.icinga.org', + ], + 'port' => [ + 'port', + '', + ], + 'path' => [ + 'path', + '/path/file.html', + ], + 'query' => [ + 'query', + 'foo=bar', + ], + 'fragment' => [ + 'fragment', + 'section', + ], + ]; + } +} |