2014-08-08 16:41:26 +00:00
|
|
|
<?php
|
|
|
|
|
|
2021-10-14 14:01:58 +00:00
|
|
|
class JsonContentHandlerIntegrationTest extends MediaWikiLangTestCase {
|
2014-08-08 16:41:26 +00:00
|
|
|
|
2021-03-15 23:28:55 +00:00
|
|
|
public function provideDataAndParserText() {
|
2016-02-17 09:09:32 +00:00
|
|
|
return [
|
|
|
|
|
[
|
|
|
|
|
[],
|
2015-01-16 03:25:15 +00:00
|
|
|
'<table class="mw-json"><tbody><tr><td>' .
|
|
|
|
|
'<table class="mw-json"><tbody><tr><td class="mw-json-empty">Empty array</td></tr>'
|
|
|
|
|
. '</tbody></table></td></tr></tbody></table>'
|
2016-02-17 09:09:32 +00:00
|
|
|
],
|
|
|
|
|
[
|
|
|
|
|
(object)[],
|
2014-12-18 13:13:07 +00:00
|
|
|
'<table class="mw-json"><tbody><tr><td class="mw-json-empty">Empty object</td></tr>' .
|
|
|
|
|
'</tbody></table>'
|
2016-02-17 09:09:32 +00:00
|
|
|
],
|
|
|
|
|
[
|
|
|
|
|
(object)[ 'foo' ],
|
2020-01-10 18:44:36 +00:00
|
|
|
'<table class="mw-json"><tbody><tr><th><span>0</span></th>' .
|
|
|
|
|
'<td class="mw-json-value">"foo"</td></tr></tbody></table>'
|
2016-02-17 09:09:32 +00:00
|
|
|
],
|
|
|
|
|
[
|
|
|
|
|
(object)[ 'foo', 'bar' ],
|
2020-01-10 18:44:36 +00:00
|
|
|
'<table class="mw-json"><tbody><tr><th><span>0</span></th>' .
|
|
|
|
|
'<td class="mw-json-value">"foo"</td></tr><tr><th><span>1</span></th>' .
|
|
|
|
|
'<td class="mw-json-value">"bar"</td></tr></tbody></table>'
|
2016-02-17 09:09:32 +00:00
|
|
|
],
|
|
|
|
|
[
|
|
|
|
|
(object)[ 'baz' => 'foo', 'bar' ],
|
2020-01-10 18:44:36 +00:00
|
|
|
'<table class="mw-json"><tbody><tr><th><span>baz</span></th>' .
|
|
|
|
|
'<td class="mw-json-value">"foo"</td></tr><tr><th><span>0</span></th>' .
|
|
|
|
|
'<td class="mw-json-value">"bar"</td></tr></tbody></table>'
|
2016-02-17 09:09:32 +00:00
|
|
|
],
|
|
|
|
|
[
|
|
|
|
|
(object)[ 'baz' => 1000, 'bar' ],
|
2020-01-10 18:44:36 +00:00
|
|
|
'<table class="mw-json"><tbody><tr><th><span>baz</span></th>' .
|
|
|
|
|
'<td class="mw-json-value">1000</td></tr><tr><th><span>0</span></th>' .
|
|
|
|
|
'<td class="mw-json-value">"bar"</td></tr></tbody></table>'
|
2016-02-17 09:09:32 +00:00
|
|
|
],
|
|
|
|
|
[
|
|
|
|
|
(object)[ '<script>alert("evil!")</script>' ],
|
2020-01-10 18:44:36 +00:00
|
|
|
'<table class="mw-json"><tbody><tr><th><span>0</span></th><td class="mw-json-value">"' .
|
2015-01-16 03:25:15 +00:00
|
|
|
'<script>alert("evil!")</script>"' .
|
2014-12-18 13:13:07 +00:00
|
|
|
'</td></tr></tbody></table>',
|
2016-02-17 09:09:32 +00:00
|
|
|
],
|
|
|
|
|
];
|
2014-08-08 16:41:26 +00:00
|
|
|
}
|
2014-12-03 01:52:00 +00:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @dataProvider provideDataAndParserText
|
2021-10-14 14:01:58 +00:00
|
|
|
* @covers JsonContentHandler::fillParserOutput
|
2014-12-03 01:52:00 +00:00
|
|
|
*/
|
|
|
|
|
public function testFillParserOutput( $data, $expected ) {
|
2021-10-14 14:01:58 +00:00
|
|
|
$content = new JsonContent( FormatJson::encode( $data ) );
|
|
|
|
|
$contentRenderer = $this->getServiceContainer()->getContentRenderer();
|
|
|
|
|
$parserOutput = $contentRenderer->getParserOutput(
|
|
|
|
|
$content,
|
2021-03-15 23:28:55 +00:00
|
|
|
$this->createMock( Title::class ),
|
|
|
|
|
null,
|
|
|
|
|
null,
|
|
|
|
|
true
|
|
|
|
|
);
|
2018-01-13 00:02:09 +00:00
|
|
|
$this->assertInstanceOf( ParserOutput::class, $parserOutput );
|
2014-12-03 01:52:00 +00:00
|
|
|
$this->assertEquals( $expected, $parserOutput->getText() );
|
|
|
|
|
}
|
2014-08-13 17:59:03 +00:00
|
|
|
}
|