This helps to find renamed or misspelled classes earlier. Phan will check the class names Change-Id: Ie541a7baae10ab6f5c13f95ac2ff6598b8f8950c
120 lines
3.1 KiB
PHP
120 lines
3.1 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @group API
|
|
* @covers ApiFormatRaw
|
|
*/
|
|
class ApiFormatRawTest extends ApiFormatTestBase {
|
|
|
|
protected $printerName = 'raw';
|
|
|
|
/**
|
|
* Test basic encoding and missing mime and text exceptions
|
|
* @return array datasets
|
|
*/
|
|
public static function provideGeneralEncoding() {
|
|
$options = [
|
|
'class' => ApiFormatRaw::class,
|
|
'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::class,
|
|
'factory' => function ( ApiMain $main ) use ( &$apiMain ) {
|
|
$apiMain = $main;
|
|
$printer = new ApiFormatRaw( $main, new ApiFormatJson( $main, 'json' ) );
|
|
$printer->setFailWithHTTPError( true );
|
|
return $printer;
|
|
}
|
|
]
|
|
);
|
|
$this->assertEquals( 400, $apiMain->getRequest()->response()->getStatusCode() );
|
|
}
|
|
|
|
}
|