MediaWiki REL1_30
XmlTypeCheckTest.php
Go to the documentation of this file.
1<?php
8class XmlTypeCheckTest extends PHPUnit_Framework_TestCase {
9 const WELL_FORMED_XML = "<root><child /></root>";
10 const MAL_FORMED_XML = "<root><child /></error>";
11 // @codingStandardsIgnoreStart Generic.Files.LineLength
12 const XML_WITH_PIH = '<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="/w/index.php"?><svg><child /></svg>';
13 // @codingStandardsIgnoreEnd
14
19 public function testWellFormedXML() {
20 $testXML = XmlTypeCheck::newFromString( self::WELL_FORMED_XML );
21 $this->assertTrue( $testXML->wellFormed );
22 $this->assertEquals( 'root', $testXML->getRootElement() );
23 }
24
28 public function testMalFormedXML() {
29 $testXML = XmlTypeCheck::newFromString( self::MAL_FORMED_XML );
30 $this->assertFalse( $testXML->wellFormed );
31 }
32
38 public function testRecursiveEntity() {
39 $xml = <<<'XML'
40<?xml version="1.0" encoding="utf-8"?>
41<!DOCTYPE foo [
42 <!ENTITY test "&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;">
43 <!ENTITY a "&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;">
44 <!ENTITY b "&c;&c;&c;&c;&c;&c;&c;&c;&c;&c;&c;&c;&c;&c;&c;&c;&c;&c;&c;&c;&c;&c;&c;&c;">
45 <!ENTITY c "&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;">
46 <!ENTITY d "&e;&e;&e;&e;&e;&e;&e;&e;&e;&e;&e;&e;&e;&e;&e;&e;&e;&e;&e;&e;&e;&e;&e;&e;">
47 <!ENTITY e "&f;&f;&f;&f;&f;&f;&f;&f;&f;&f;&f;&f;&f;&f;&f;&f;&f;&f;&f;&f;&f;&f;&f;&f;">
48 <!ENTITY f "&g;&g;&g;&g;&g;&g;&g;&g;&g;&g;&g;&g;&g;&g;&g;&g;&g;&g;&g;&g;&g;&g;&g;&g;">
49 <!ENTITY g "-00000000000000000000000000000000000000000000000000000000000000000000000-">
50]>
51<foo>
52<bar>&test;</bar>
53</foo>
54XML;
55 $check = XmlTypeCheck::newFromString( $xml );
56 $this->assertFalse( $check->wellFormed );
57 }
58
63 $called = false;
64 $testXML = new XmlTypeCheck(
65 self::XML_WITH_PIH,
66 null,
67 false,
68 [
69 'processing_instruction_handler' => function () use ( &$called ) {
70 $called = true;
71 }
72 ]
73 );
74 $this->assertTrue( $called );
75 }
76
77}
type show c for details The hypothetical commands show w and show c should show the appropriate parts of the General Public License Of the commands you use may be called something other than show w and show c
Definition COPYING.txt:322
PHPUnit tests for XMLTypeCheck.
testRecursiveEntity()
Verify we check for recursive entity DOS.
testProcessingInstructionHandler()
XMLTypeCheck::processingInstructionHandler.
testMalFormedXML()
XMLTypeCheck::newFromString.
testWellFormedXML()
XMLTypeCheck::newFromString XMLTypeCheck::getRootElement.
static newFromString( $string, $filterCallback=null)
Alternative constructor: from string.
in this case you re responsible for computing and outputting the entire conflict i e
Definition hooks.txt:1411
Prior to version