jenkins-bot has submitted this change and it was merged. (
https://gerrit.wikimedia.org/r/401405 )
Change subject: Add tests for ApiFormatRaw
..
Add tests for ApiFormatRaw
Bug: T183767
Change-Id: I63ce42dd61f6e47f7278c436cad1e4f05e287b04
---
A tests/phpunit/includes/api/format/ApiFormatRawTest.php
1 file changed, 120 insertions(+), 0 deletions(-)
Approvals:
Legoktm: Looks good to me, approved
jenkins-bot: Verified
Anomie: Looks good to me, but someone else must approve
diff --git a/tests/phpunit/includes/api/format/ApiFormatRawTest.php
b/tests/phpunit/includes/api/format/ApiFormatRawTest.php
new file mode 100644
index 000..0d3e63f
--- /dev/null
+++ b/tests/phpunit/includes/api/format/ApiFormatRawTest.php
@@ -0,0 +1,120 @@
+ 'ApiFormatRaw',
+ 'factory' => function ( ApiMain $main ) {
+ return new ApiFormatRaw( $main, new
ApiFormatJson( $main, 'json' ) );
+ }
+ ];
+
+ return [
+ [
+ [ 'mime' => 'text/plain', 'text' => 'foo' ],
+ 'foo',
+ [],
+ $options
+ ],
+ [
+ [ 'mime' => 'text/plain', 'text' => 'fóo' ],
+ 'fóo',
+ [],
+ $options
+ ],
+ [
+ [ 'text' => 'some text' ],
+ new MWException( 'No MIME type set for raw
formatter' ),
+ [],
+ $options
+ ],
+ [
+ [ 'mime' => 'text/plain' ],
+ new MWException( 'No text given for raw
formatter' ),
+ [],
+ $options
+ ],
+ 'test error fallback' => [
+ [ 'mime' => 'text/plain', 'text' => 'some
text', 'error' => 'some error' ],
+ '{"mime":"text/plain","text":"some
text","error":"some error"}',
+ [],
+ $options
+ ]
+ ];
+ }
+
+ /**
+* Test specifying filename
+*/
+ public function testFilename() {
+ $printer = new ApiFormatRaw( new ApiMain );
+ $printer->getResult()->addValue( null, 'filename',
'whatever.raw' );
+ $this->assertSame( 'whatever.raw', $printer->getFilename() );
+ }
+
+ /**
+* Test specifying filename with error fallback printer
+*/
+ public function testErrorFallbackFilename() {
+ $apiMain = new ApiMain;
+ $printer = new ApiFormatRaw( $apiMain, new ApiFormatJson(
$apiMain, 'json' ) );
+ $printer->getResult()->addValue( null, 'error', 'some error' );
+ $printer->getResult()->addValue( null, 'filename',
'whatever.raw' );
+ $this->assertSame( 'api-result.json', $printer->getFilename() );
+ }
+
+ /**
+* Test specifying mime
+*/
+ public function testMime() {
+ $printer = new ApiFormatRaw( new ApiMain );
+ $printer->getResult()->addValue( null, 'mime', 'text/plain' );
+ $this->assertSame( 'text/plain', $printer->getMimeType() );
+ }
+
+ /**
+* Test specifying mime with error fallback printer
+*/
+ public function testErrorFallbackMime() {
+ $apiMain = new ApiMain;
+ $printer = new ApiFormatRaw( $apiMain, new ApiFormatJson(
$apiMain, 'json' ) );
+ $printer->getResult()->addValue( null, 'error', 'some error' );
+ $printer->getResult()->addValue( null, 'mime', 'text/plain' );
+ $this->assertSame( 'application/json', $printer->getMimeType()
);
+ }
+
+ /**
+* Check that setting failWithHTTPError to true will result in 400
response status code
+*/
+ public function testFailWithHTTPError() {
+ $apiMain = null;
+
+ $this->testGeneralEncoding(
+ [ 'mime' => 'text/plain', 'text' => 'some text',
'error' => 'some error' ],
+ '{"mime":"text/plain","text":"some text","error":"some
error"}',
+ [],
+ [
+ 'class' => 'ApiFormatRaw',
+ 'factory' => function ( ApiMain $main ) use (
&$apiMain ) {
+ $apiMain = $main;
+ $printer = new