execute(); $data[0] = $module->getResultData(); $data[1] = $req; $data[2] = $_SESSION; return $data; } function testLogin() { $data = $this->doApiRequest( array( 'action' => 'login', 'lgname' => 'WikiSysop', 'lgpassword' => 'none' ), $data ); $this->assertArrayHasKey( "login", $data[0] ); $this->assertArrayHasKey( "result", $data[0]['login'] ); $this->assertEquals( "NeedToken", $data[0]['login']['result'] ); $token = $data[0]['login']['token']; $data = $this->doApiRequest( array( 'action' => 'login', "lgtoken" => $token, "lgname" => 'WikiSysop', "lgpassword" => 'none' ), $data ); $this->assertArrayHasKey( "login", $data[0] ); $this->assertArrayHasKey( "result", $data[0]['login'] ); $this->assertEquals( "Success", $data[0]['login']['result'] ); $this->assertArrayHasKey( 'lgtoken', $data[0]['login'] ); return $data; } function testGetToken() { $data = $this->doApiRequest( array( 'action' => 'query', 'titles' => 'Main Page', 'intoken' => 'edit|delete|protect|move|block|unblock', 'prop' => 'info'), $data); $this->assertArrayHasKey( 'query', $data[0] ); $this->assertArrayHasKey( 'pages', $data[0]['query'] ); $key = array_pop( array_keys( $data[0]['query']['pages'] ) ); $this->assertArrayHasKey( $key, $data[0]['query']['pages'] ); $this->assertArrayHasKey( 'edittoken', $data[0]['query']['pages'][$key]); $this->assertArrayHasKey( 'movetoken', $data[0]['query']['pages'][$key]); $this->assertArrayHasKey( 'deletetoken', $data[0]['query']['pages'][$key]); $this->assertArrayHasKey( 'blocktoken', $data[0]['query']['pages'][$key]); $this->assertArrayHasKey( 'unblocktoken', $data[0]['query']['pages'][$key]); $this->assertArrayHasKey( 'protecttoken', $data[0]['query']['pages'][$key]); return $data; } /** * @depends testGetToken */ function testWatchEdit( $data ) { $key = array_pop( array_keys( $data[0]['query']['pages'] ) ); $pageinfo = $data[0]['query']['pages'][$key]; $data = $this->doApiRequest( array( 'action' => 'edit', 'title' => 'Main Page', 'text' => 'new text', 'token' => $pageinfo['edittoken'], 'watchlist' => 'watch'), $data); $this->assertArrayHasKey( 'edit', $data[0] ); $this->assertArrayHasKey( 'result', $data[0]['edit'] ); $this->assertEquals( 'Success', $data[0]['edit']['result'] ); return $data; } /** * @depends testWatchEdit */ function testWatchClear( $data ) { global $wgUser; $data = $this->doApiRequest( array( 'action' => 'query', 'list' => 'watchlist'), $data); if(isset($data[0]['query']['watchlist'])) { $wl = $data[0]['query']['watchlist']; foreach($wl as $page) { $data = $this->doApiRequest( array( 'action' => 'watch', 'title' => $page['title'], 'unwatch' => true), $data); } } $data = $this->doApiRequest( array( 'action' => 'query', 'list' => 'watchlist'), $data); $this->assertArrayHasKey( 'query', $data[0] ); $this->assertArrayHasKey( 'watchlist', $data[0]['query'] ); $this->assertEquals( 0, count($data[0]['query']['watchlist']) ); return $data; } /** * @depends testGetToken */ function testWatchProtect( $data ) { $key = array_pop( array_keys( $data[0]['query']['pages'] ) ); $pageinfo = $data[0]['query']['pages'][$key]; $data = $this->doApiRequest( array( 'action' => 'protect', 'token' => $pageinfo['protecttoken'], 'title' => 'Main Page', 'protections' => 'edit=sysop', 'watchlist' => 'unwatch'), $data); $this->assertArrayHasKey( 'protect', $data[0] ); $this->assertArrayHasKey( 'protections', $data[0]['protect'] ); $this->assertEquals( 1, count($data[0]['protect']['protections']) ); $this->assertArrayHasKey( 'edit', $data[0]['protect']['protections'][0] ); } /** * @depends testGetToken */ function testGetRollbackToken( $data ) { $data = $this->doApiRequest( array( 'action' => 'query', 'prop' => 'revisions', 'titles' => 'Main Page', 'rvtoken' => 'rollback'), $data); $this->assertArrayHasKey( 'query', $data[0] ); $this->assertArrayHasKey( 'pages', $data[0]['query'] ); $key = array_pop( array_keys( $data[0]['query']['pages'] ) ); $this->assertArrayHasKey( 'pageid', $data[0]['query']['pages'][$key]); $this->assertArrayHasKey( 'revisions', $data[0]['query']['pages'][$key]); $this->assertArrayHasKey( 0, $data[0]['query']['pages'][$key]['revisions'] ); $this->assertArrayHasKey( 'rollbacktoken', $data[0]['query']['pages'][$key]['revisions'][0] ); return $data; } /** * @depends testGetRollbackToken */ function testWatchRollback( $data ) { $key = array_pop( array_keys( $data[0]['query']['pages'] ) ); $pageinfo = $data[0]['query']['pages'][$key]['revisions'][0]; $data = $this->doApiRequest( array( 'action' => 'rollback', 'title' => 'Main Page', 'user' => 'WikiSysop', 'token' => $pageinfo['rollbacktoken'], 'watchlist' => 'watch'), $data); $this->assertArrayHasKey( 'rollback', $data[0] ); $this->assertArrayHasKey( 'title', $data[0]['rollback'] ); } /** * @depends testGetToken */ function testWatchDelete( $data ) { $key = array_pop( array_keys( $data[0]['query']['pages'] ) ); $pageinfo = $data[0]['query']['pages'][$key]; $data = $this->doApiRequest( array( 'action' => 'delete', 'token' => $pageinfo['deletetoken'], 'title' => 'Main Page'), $data); $this->assertArrayHasKey( 'delete', $data[0] ); $this->assertArrayHasKey( 'title', $data[0]['delete'] ); $data = $this->doApiRequest( array( 'action' => 'query', 'list' => 'watchlist'), $data); } }