| Current File : /home/jvzmxxx/wiki1/extensions/Kartographer/tests/phpunit/SimpleStyleParserTest.php |
<?php
namespace Kartographer\Tests;
use Kartographer\SimpleStyleParser;
use MediaWikiTestCase;
use Parser;
use ParserOptions;
use Title;
/**
* @group Kartographer
*/
class SimpleStyleParserTest extends MediaWikiTestCase {
/**
* @dataProvider provideExternalData
* @param string $expected
* @param string $input
* @param string $message
*/
public function testExternalData( $expected, $input, $message = '' ) {
$expected = json_decode( $expected );
$options = new ParserOptions();
$parser = new Parser();
$title = Title::newFromText( 'Test' );
$parser->startExternalParse( $title, $options, Parser::OT_HTML );
$ssp = new SimpleStyleParser( $parser );
$status = $ssp->parse( $input );
$this->assertTrue( $status->isOK(), "Parse is expected to succeed, but encountered '{$status->getMessage()->text()}'" );
$this->assertEquals( $expected, $status->getValue(), $message );
}
public function provideExternalData() {
return [
[
'[
{
"type": "ExternalData",
"url": "https://maps.wikimedia.org/geoshape?getgeojson=1&ids=Q1%2CQ2&query=FOO",
"service": "geoshape"
},
{
"type": "ExternalData",
"url": "https://maps.wikimedia.org/geoline?getgeojson=1&query=bar",
"service": "geoline",
"properties": {
"text": "foo"
}
}
]',
'[
{
"type": "ExternalData",
"service": "geoshape",
"ids": [ "Q1", "Q2" ],
"query": "FOO",
"some": "thing"
},
{
"type": "ExternalData",
"service": "geoline",
"query": "bar",
"properties": {
"text": "foo"
}
}
]',
'Test a couple objects in the same JSON blob'
],
[
'[
{
"type": "ExternalData",
"service": "geoshape",
"url": "https://maps.wikimedia.org/geoshape?getgeojson=1&query=test",
"properties": {}
}
]',
'{
"type": "ExternalData",
"service": "geoshape",
"query": "test",
"url": "http://some/bad/site",
"properties": {
"__proto__": "nasty stuff"
},
"__proto__": "stop me somebody!"
}',
"Make sure 'url' field or '__proto__' can't get through"
],
];
}
}