Merge "Use the request object provided in User::setCookies"
[lhc/web/wiklou.git] / tests / phpunit / includes / api / format / ApiFormatJsonTest.php
index fc1f902..bdf3f13 100644 (file)
@@ -2,21 +2,41 @@
 
 /**
  * @group API
- * @group Database
- * @group medium
  * @covers ApiFormatJson
  */
 class ApiFormatJsonTest extends ApiFormatTestBase {
 
-       public function testValidSyntax( ) {
-               $data = $this->apiRequest( 'json', array( 'action' => 'query', 'meta' => 'siteinfo' ) );
+       protected $printerName = 'json';
 
-               $this->assertInternalType( 'array', json_decode( $data, true ) );
-               $this->assertGreaterThan( 0, count( (array)$data ) );
-       }
+       public static function provideGeneralEncoding() {
+               return array(
+                       // Basic types
+                       array( array( null ), '[null]' ),
+                       array( array( true ), '[true]' ),
+                       array( array( false ), '[false]' ),
+                       array( array( 42 ), '[42]' ),
+                       array( array( 42.5 ), '[42.5]' ),
+                       array( array( 1e42 ), '[1.0e+42]' ),
+                       array( array( 'foo' ), '["foo"]' ),
+                       array( array( 'fóo' ), '["f\u00f3o"]' ),
+                       array( array( 'fóo' ), '["fóo"]', array( 'utf8' => 1 ) ),
+
+                       // Arrays and objects
+                       array( array( array() ), '[[]]' ),
+                       array( array( array( 1 ) ), '[[1]]' ),
+                       array( array( array( 'x' => 1 ) ), '[{"x":1}]' ),
+                       array( array( array( 2 => 1 ) ), '[{"2":1}]' ),
+                       array( array( (object)array() ), '[{}]' ),
+
+                       // Content
+                       array( array( '*' => 'foo' ), '{"*":"foo"}' ),
 
-       public function testJsonpInjection( ) {
-               $data = $this->apiRequest( 'json', array( 'action' => 'query', 'meta' => 'siteinfo', 'callback' => 'myCallback' ) );
-               $this->assertEquals( '/**/myCallback(', substr( $data, 0, 15 ) );
+                       // Callbacks
+                       array( array( 1 ), '/**/myCallback([1])', array( 'callback' => 'myCallback' ) ),
+
+                       // Cross-domain mangling
+                       array( array( '< Cross-Domain-Policy >' ), '["\u003C Cross-Domain-Policy \u003E"]' ),
+               );
        }
+
 }