MediaWiki REL1_31
ApiFormatRawTest.php
Go to the documentation of this file.
1<?php
2
8
9 protected $printerName = 'raw';
10
15 public static function provideGeneralEncoding() {
16 $options = [
17 'class' => ApiFormatRaw::class,
18 'factory' => function ( ApiMain $main ) {
19 return new ApiFormatRaw( $main, new ApiFormatJson( $main, 'json' ) );
20 }
21 ];
22
23 return [
24 [
25 [ 'mime' => 'text/plain', 'text' => 'foo' ],
26 'foo',
27 [],
29 ],
30 [
31 [ 'mime' => 'text/plain', 'text' => 'fóo' ],
32 'fóo',
33 [],
35 ],
36 [
37 [ 'text' => 'some text' ],
38 new MWException( 'No MIME type set for raw formatter' ),
39 [],
41 ],
42 [
43 [ 'mime' => 'text/plain' ],
44 new MWException( 'No text given for raw formatter' ),
45 [],
47 ],
48 'test error fallback' => [
49 [ 'mime' => 'text/plain', 'text' => 'some text', 'error' => 'some error' ],
50 '{"mime":"text/plain","text":"some text","error":"some error"}',
51 [],
53 ]
54 ];
55 }
56
60 public function testFilename() {
61 $printer = new ApiFormatRaw( new ApiMain );
62 $printer->getResult()->addValue( null, 'filename', 'whatever.raw' );
63 $this->assertSame( 'whatever.raw', $printer->getFilename() );
64 }
65
69 public function testErrorFallbackFilename() {
70 $apiMain = new ApiMain;
71 $printer = new ApiFormatRaw( $apiMain, new ApiFormatJson( $apiMain, 'json' ) );
72 $printer->getResult()->addValue( null, 'error', 'some error' );
73 $printer->getResult()->addValue( null, 'filename', 'whatever.raw' );
74 $this->assertSame( 'api-result.json', $printer->getFilename() );
75 }
76
80 public function testMime() {
81 $printer = new ApiFormatRaw( new ApiMain );
82 $printer->getResult()->addValue( null, 'mime', 'text/plain' );
83 $this->assertSame( 'text/plain', $printer->getMimeType() );
84 }
85
89 public function testErrorFallbackMime() {
90 $apiMain = new ApiMain;
91 $printer = new ApiFormatRaw( $apiMain, new ApiFormatJson( $apiMain, 'json' ) );
92 $printer->getResult()->addValue( null, 'error', 'some error' );
93 $printer->getResult()->addValue( null, 'mime', 'text/plain' );
94 $this->assertSame( 'application/json', $printer->getMimeType() );
95 }
96
100 public function testFailWithHTTPError() {
101 $apiMain = null;
102
103 $this->testGeneralEncoding(
104 [ 'mime' => 'text/plain', 'text' => 'some text', 'error' => 'some error' ],
105 '{"mime":"text/plain","text":"some text","error":"some error"}',
106 [],
107 [
108 'class' => ApiFormatRaw::class,
109 'factory' => function ( ApiMain $main ) use ( &$apiMain ) {
110 $apiMain = $main;
111 $printer = new ApiFormatRaw( $main, new ApiFormatJson( $main, 'json' ) );
112 $printer->setFailWithHTTPError( true );
113 return $printer;
114 }
115 ]
116 );
117 $this->assertEquals( 400, $apiMain->getRequest()->response()->getStatusCode() );
118 }
119
120}
API JSON output formatter.
API ApiFormatRaw.
testFailWithHTTPError()
Check that setting failWithHTTPError to true will result in 400 response status code.
testErrorFallbackFilename()
Test specifying filename with error fallback printer.
static provideGeneralEncoding()
Test basic encoding and missing mime and text exceptions.
testFilename()
Test specifying filename.
testMime()
Test specifying mime.
testErrorFallbackMime()
Test specifying mime with error fallback printer.
Formatter that spits out anything you like with any desired MIME type.
testGeneralEncoding(array $data, $expect, array $params=[], array $options=[])
provideGeneralEncoding
This is the main API class, used for both external and internal processing.
Definition ApiMain.php:43
MediaWiki exception.
null means default in associative array with keys and values unescaped Should be merged with default with a value of false meaning to suppress the attribute in associative array with keys and values unescaped & $options
Definition hooks.txt:2001