1 ) ), 'a:1:{i:0;a:1:{s:1:"x";i:1;}}' ), array( array( array( 2 => 1 ) ), 'a:1:{i:0;a:1:{i:2;i:1;}}' ), // Content array( array( '*' => 'foo' ), 'a:1:{s:1:"*";s:3:"foo";}' ), ); } public function testCrossDomainMangling() { $config = new HashConfig( array( 'MangleFlashPolicy' => false ) ); $context = new RequestContext; $context->setConfig( new MultiConfig( array( $config, $context->getConfig(), ) ) ); $main = new ApiMain( $context ); $main->getResult()->addValue( null, null, '< Cross-Domain-Policy >' ); if ( !function_exists( 'wfOutputHandler' ) ) { function wfOutputHandler( $s ) { return $s; } } $printer = $main->createPrinterByName( 'php' ); ob_start( 'wfOutputHandler' ); $printer->initPrinter(); $printer->execute(); $printer->closePrinter(); $ret = ob_get_clean(); $this->assertSame( 'a:1:{i:0;s:23:"< Cross-Domain-Policy >";}', $ret ); $config->set( 'MangleFlashPolicy', true ); $printer = $main->createPrinterByName( 'php' ); ob_start( 'wfOutputHandler' ); try { $printer->initPrinter(); $printer->execute(); $printer->closePrinter(); ob_end_clean(); $this->fail( 'Expected exception not thrown' ); } catch ( UsageException $ex ) { ob_end_clean(); $this->assertSame( 'This response cannot be represented using format=php. See https://bugzilla.wikimedia.org/show_bug.cgi?id=66776', $ex->getMessage(), 'Expected exception' ); } } }