diff options
author | Bernhard Posselt <dev@bernhard-posselt.com> | 2015-01-27 09:31:40 +0100 |
---|---|---|
committer | Bernhard Posselt <dev@bernhard-posselt.com> | 2015-01-27 09:31:40 +0100 |
commit | 8241180c6ce0cb19255d70a3394f891e08182542 (patch) | |
tree | 325996a06d9896567957871cc0f34865c46118da /vendor/fguillot/picofeed/tests/Parser/XmlParserTest.php | |
parent | 73f65c8fbadbdd2098448e77b6d3f0464ad8613e (diff) |
dont use picofeed submodule
Diffstat (limited to 'vendor/fguillot/picofeed/tests/Parser/XmlParserTest.php')
m--------- | vendor/fguillot/picofeed | 0 | ||||
-rw-r--r-- | vendor/fguillot/picofeed/tests/Parser/XmlParserTest.php | 105 |
2 files changed, 105 insertions, 0 deletions
diff --git a/vendor/fguillot/picofeed b/vendor/fguillot/picofeed deleted file mode 160000 -Subproject 0a1d0d3950f7f047dc8fb1d80aa6296e15f306d 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()); + } +} |