preSaveTransform( $this->createMock( Title::class ), $this->createMock( User::class ), $this->createMock( ParserOptions::class ) ); $this->assertTrue( $newObj->equals( new JsonContent( $transformed ) ) ); } public function provideDataAndParserText() { return [ [ [], '
' . '' . '
Empty array
' ], [ (object)[], '' . '
Empty object
' ], [ (object)[ 'foo' ], '' . '
0"foo"
' ], [ (object)[ 'foo', 'bar' ], '' . '' . '
0"foo"
1"bar"
' ], [ (object)[ 'baz' => 'foo', 'bar' ], '' . '' . '
baz"foo"
0"bar"
' ], [ (object)[ 'baz' => 1000, 'bar' ], '' . '' . '
baz1000
0"bar"
' ], [ (object)[ '' ], '
0"' . '<script>alert("evil!")</script>"' . '
', ], ]; } /** * @dataProvider provideDataAndParserText */ public function testFillParserOutput( $data, $expected ) { $obj = new JsonContent( FormatJson::encode( $data ) ); $parserOutput = $obj->getParserOutput( $this->createMock( Title::class ), null, null, true ); $this->assertInstanceOf( ParserOutput::class, $parserOutput ); $this->assertEquals( $expected, $parserOutput->getText() ); } }