diff options
author | Bernhard Posselt <dev@bernhard-posselt.com> | 2014-11-07 12:32:05 +0100 |
---|---|---|
committer | Bernhard Posselt <dev@bernhard-posselt.com> | 2014-11-07 12:32:05 +0100 |
commit | 7f81afd7efbeb931d16ce1f3a1ed53a54226d553 (patch) | |
tree | 180720cd96aa66ae8964f13734e090d4b82a178e /vendor/fguillot/picofeed/tests/Parser/XmlParserTest.php | |
parent | a6d6288e65aa416aca7535e81d9e8837c2cfb103 (diff) |
move 3rdparty directory to vendor to be more consistent with composer standard and because we also use js/vendor for third party libs
Diffstat (limited to 'vendor/fguillot/picofeed/tests/Parser/XmlParserTest.php')
-rw-r--r-- | vendor/fguillot/picofeed/tests/Parser/XmlParserTest.php | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/vendor/fguillot/picofeed/tests/Parser/XmlParserTest.php b/vendor/fguillot/picofeed/tests/Parser/XmlParserTest.php new file mode 100644 index 000000000..b20b3f635 --- /dev/null +++ b/vendor/fguillot/picofeed/tests/Parser/XmlParserTest.php @@ -0,0 +1,105 @@ +<?php +namespace PicoFeed\Parser; + +use DOMDocument; + +use PHPUnit_Framework_TestCase; + + +class XmlParserTest extends PHPUnit_Framework_TestCase +{ + public function testGetEncodingFromXmlTag() + { + $this->assertEquals('utf-8', XmlParser::getEncodingFromXmlTag("<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet")); + $this->assertEquals('utf-8', XmlParser::getEncodingFromXmlTag('<?xml version="1.0" encoding="UTF-8"?><feed xml:')); + $this->assertEquals('windows-1251', XmlParser::getEncodingFromXmlTag('<?xml version="1.0" encoding="Windows-1251"?><rss version="2.0">')); + } + + public function testScanForXEE() + { + $xml = <<<XML +<?xml version="1.0"?> +<!DOCTYPE results [<!ENTITY harmless "completely harmless">]> +<results> + <result>This result is &harmless;</result> +</results> +XML; + + $this->assertFalse(XmlParser::getDomDocument($xml)); + } + + public function testScanForXXE() + { + $file = tempnam(sys_get_temp_dir(), 'PicoFeed_XmlParser'); + file_put_contents($file, 'Content Injection'); + + $xml = <<<XML +<?xml version="1.0"?> +<!DOCTYPE root +[ +<!ENTITY foo SYSTEM "file://$file"> +]> +<results> + <result>&foo;</result> +</results> +XML; + + $this->assertFalse(XmlParser::getDomDocument($xml)); + unlink($file); + } + + public function testScanSimpleXML() + { + return <<<XML +<?xml version="1.0"?> +<results> + <result>test</result> +</results> +XML; + $result = XmlParser::getSimpleXml($xml); + $this->assertTrue($result instanceof SimpleXMLElement); + $this->assertEquals($result->result, 'test'); + } + + public function testScanDomDocument() + { + return <<<XML +<?xml version="1.0"?> +<results> + <result>test</result> +</results> +XML; + $result = XmlParser::getDomDocument($xml); + $this->assertTrue($result instanceof DOMDocument); + $node = $result->getElementsByTagName('result')->item(0); + $this->assertEquals($node->nodeValue, 'test'); + } + + public function testScanInvalidXml() + { + $xml = <<<XML +<foo>test</bar> +XML; + + $this->assertFalse(XmlParser::getDomDocument($xml)); + $this->assertFalse(XmlParser::getSimpleXml($xml)); + } + + public function testScanXmlWithDTD() + { + $xml = <<<XML +<?xml version="1.0"?> +<!DOCTYPE results [ +<!ELEMENT results (result+)> +<!ELEMENT result (#PCDATA)> +]> +<results> + <result>test</result> +</results> +XML; + + $result = XmlParser::getDomDocument($xml); + $this->assertTrue($result instanceof DOMDocument); + $this->assertTrue($result->validate()); + } +} |