<?php
+use MediaWiki\MediaWikiServices;
class MessageTest extends MediaWikiLangTestCase {
public function testWfMessageParams() {
$this->assertSame( 'Return to $1.', wfMessage( 'returnto' )->text() );
$this->assertSame( 'Return to $1.', wfMessage( 'returnto', [] )->text() );
+ $this->assertSame(
+ 'Return to 1,024.',
+ wfMessage( 'returnto', Message::numParam( 1024 ) )->text()
+ );
+ $this->assertSame(
+ 'Return to 1,024.',
+ wfMessage( 'returnto', [ Message::numParam( 1024 ) ] )->text()
+ );
$this->assertSame(
'You have foo (bar).',
wfMessage( 'youhavenewmessages', 'foo', 'bar' )->text()
'You have foo (bar).',
wfMessage( 'youhavenewmessages', [ 'foo', 'bar' ] )->text()
);
+ $this->assertSame(
+ 'You have 1,024 (bar).',
+ wfMessage(
+ 'youhavenewmessages',
+ Message::numParam( 1024 ), 'bar'
+ )->text()
+ );
+ $this->assertSame(
+ 'You have foo (2,048).',
+ wfMessage(
+ 'youhavenewmessages',
+ 'foo', Message::numParam( 2048 )
+ )->text()
+ );
+ $this->assertSame(
+ 'You have 1,024 (2,048).',
+ wfMessage(
+ 'youhavenewmessages',
+ [ Message::numParam( 1024 ), Message::numParam( 2048 ) ]
+ )->text()
+ );
}
/**
return [
[ '<span>foo</span>', 'parse', '<span>foo</span>', '<span>foo</span>' ],
[ '<span>foo</span>', 'escaped', '<span>foo</span>',
- '<span>foo</span>' ],
+ '<span>foo</span>' ],
[ '<span>foo</span>', 'plain', '<span>foo</span>', '<span>foo</span>' ],
[ '<script>alert(1)</script>', 'parse', '<script>alert(1)</script>',
'<script>alert(1)</script>' ],
[ '<script>alert(1)</script>', 'escaped', '<script>alert(1)</script>',
'<script>alert(1)</script>' ],
[ '<script>alert(1)</script>', 'plain', '<script>alert(1)</script>',
- '<script>alert(1)</script>' ],
+ '<script>alert(1)</script>' ],
];
}
$this->assertSame( 'example &', $msg->escaped() );
}
+ public function testRawHtmlInMsg() {
+ global $wgParserConf;
+ $this->setMwGlobals( 'wgRawHtml', true );
+ // We have to reset the core hook registration.
+ // to register the html hook
+ MessageCache::destroyInstance();
+ $this->setMwGlobals( 'wgParser',
+ ObjectFactory::constructClassInstance( $wgParserConf['class'], [ $wgParserConf ] )
+ );
+
+ $msg = new RawMessage( '<html><script>alert("xss")</script></html>' );
+ $txt = '<span class="error"><html> tags cannot be' .
+ ' used outside of normal pages.</span>';
+ $this->assertSame( $txt, $msg->parse() );
+ }
+
/**
* @covers Message::params
* @covers Message::toString
}
/**
- * FIXME: This should not need database, but Language#formatExpiry does (bug 55912)
+ * FIXME: This should not need database, but Language#formatExpiry does (T57912)
* @group Database
* @covers Message::expiryParam
* @covers Message::expiryParams