e12e46d5971a6b3b85af6297380e8dcb236b1525
3 class ApiWatchTest
extends ApiTestSetup
{
6 ini_set( 'log_errors', 1 );
7 ini_set( 'error_reporting', 1 );
8 ini_set( 'display_errors', 1 );
11 $wgMemc = new FakeMemCachedClient
;
21 function doApiRequest( $params, $data = null ) {
22 $_SESSION = isset( $data[2] ) ?
$data[2] : array();
24 $req = new FauxRequest( $params, true, $_SESSION );
25 $module = new ApiMain( $req, true );
28 $data[0] = $module->getResultData();
35 function testLogin() {
36 $data = $this->doApiRequest( array(
38 'lgname' => 'WikiSysop',
39 'lgpassword' => 'none' ), $data );
41 $this->assertArrayHasKey( "login", $data[0] );
42 $this->assertArrayHasKey( "result", $data[0]['login'] );
43 $this->assertEquals( "NeedToken", $data[0]['login']['result'] );
44 $token = $data[0]['login']['token'];
46 $data = $this->doApiRequest( array(
49 "lgname" => 'WikiSysop',
50 "lgpassword" => 'none' ), $data );
52 $this->assertArrayHasKey( "login", $data[0] );
53 $this->assertArrayHasKey( "result", $data[0]['login'] );
54 $this->assertEquals( "Success", $data[0]['login']['result'] );
55 $this->assertArrayHasKey( 'lgtoken', $data[0]['login'] );
60 function testGetToken() {
62 $data = $this->doApiRequest( array(
64 'titles' => 'Main Page',
65 'intoken' => 'edit|delete|protect|move|block|unblock',
66 'prop' => 'info' ), $data );
68 $this->assertArrayHasKey( 'query', $data[0] );
69 $this->assertArrayHasKey( 'pages', $data[0]['query'] );
70 $key = array_pop( array_keys( $data[0]['query']['pages'] ) );
72 $this->assertArrayHasKey( $key, $data[0]['query']['pages'] );
73 $this->assertArrayHasKey( 'edittoken', $data[0]['query']['pages'][$key] );
74 $this->assertArrayHasKey( 'movetoken', $data[0]['query']['pages'][$key] );
75 $this->assertArrayHasKey( 'deletetoken', $data[0]['query']['pages'][$key] );
76 $this->assertArrayHasKey( 'blocktoken', $data[0]['query']['pages'][$key] );
77 $this->assertArrayHasKey( 'unblocktoken', $data[0]['query']['pages'][$key] );
78 $this->assertArrayHasKey( 'protecttoken', $data[0]['query']['pages'][$key] );
84 * @depends testGetToken
86 function testWatchEdit( $data ) {
87 $key = array_pop( array_keys( $data[0]['query']['pages'] ) );
88 $pageinfo = $data[0]['query']['pages'][$key];
90 $data = $this->doApiRequest( array(
92 'title' => 'Main Page',
94 'token' => $pageinfo['edittoken'],
95 'watchlist' => 'watch' ), $data );
96 $this->assertArrayHasKey( 'edit', $data[0] );
97 $this->assertArrayHasKey( 'result', $data[0]['edit'] );
98 $this->assertEquals( 'Success', $data[0]['edit']['result'] );
105 * @depends testWatchEdit
107 function testWatchClear( $data ) {
108 $data = $this->doApiRequest( array(
110 'list' => 'watchlist' ), $data );
112 if ( isset( $data[0]['query']['watchlist'] ) ) {
113 $wl = $data[0]['query']['watchlist'];
115 foreach ( $wl as $page ) {
116 $data = $this->doApiRequest( array(
118 'title' => $page['title'],
119 'unwatch' => true ), $data );
122 $data = $this->doApiRequest( array(
124 'list' => 'watchlist' ), $data );
125 $this->assertArrayHasKey( 'query', $data[0] );
126 $this->assertArrayHasKey( 'watchlist', $data[0]['query'] );
127 $this->assertEquals( 0, count( $data[0]['query']['watchlist'] ) );
133 * @depends testGetToken
135 function testWatchProtect( $data ) {
136 $key = array_pop( array_keys( $data[0]['query']['pages'] ) );
137 $pageinfo = $data[0]['query']['pages'][$key];
139 $data = $this->doApiRequest( array(
140 'action' => 'protect',
141 'token' => $pageinfo['protecttoken'],
142 'title' => 'Main Page',
143 'protections' => 'edit=sysop',
144 'watchlist' => 'unwatch' ), $data );
146 $this->assertArrayHasKey( 'protect', $data[0] );
147 $this->assertArrayHasKey( 'protections', $data[0]['protect'] );
148 $this->assertEquals( 1, count( $data[0]['protect']['protections'] ) );
149 $this->assertArrayHasKey( 'edit', $data[0]['protect']['protections'][0] );
153 * @depends testGetToken
155 function testGetRollbackToken( $data ) {
156 $data = $this->doApiRequest( array(
158 'prop' => 'revisions',
159 'titles' => 'Main Page',
160 'rvtoken' => 'rollback' ), $data );
162 $this->assertArrayHasKey( 'query', $data[0] );
163 $this->assertArrayHasKey( 'pages', $data[0]['query'] );
164 $key = array_pop( array_keys( $data[0]['query']['pages'] ) );
166 $this->assertArrayHasKey( 'pageid', $data[0]['query']['pages'][$key] );
167 $this->assertArrayHasKey( 'revisions', $data[0]['query']['pages'][$key] );
168 $this->assertArrayHasKey( 0, $data[0]['query']['pages'][$key]['revisions'] );
169 $this->assertArrayHasKey( 'rollbacktoken', $data[0]['query']['pages'][$key]['revisions'][0] );
175 * @depends testGetRollbackToken
177 function testWatchRollback( $data ) {
178 $key = array_pop( array_keys( $data[0]['query']['pages'] ) );
179 $pageinfo = $data[0]['query']['pages'][$key]['revisions'][0];
181 $data = $this->doApiRequest( array(
182 'action' => 'rollback',
183 'title' => 'Main Page',
184 'user' => 'WikiSysop',
185 'token' => $pageinfo['rollbacktoken'],
186 'watchlist' => 'watch' ), $data );
188 $this->assertArrayHasKey( 'rollback', $data[0] );
189 $this->assertArrayHasKey( 'title', $data[0]['rollback'] );
193 * @depends testGetToken
195 function testWatchDelete( $data ) {
196 $key = array_pop( array_keys( $data[0]['query']['pages'] ) );
197 $pageinfo = $data[0]['query']['pages'][$key];
199 $data = $this->doApiRequest( array(
200 'action' => 'delete',
201 'token' => $pageinfo['deletetoken'],
202 'title' => 'Main Page' ), $data );
203 $this->assertArrayHasKey( 'delete', $data[0] );
204 $this->assertArrayHasKey( 'title', $data[0]['delete'] );
206 $data = $this->doApiRequest( array(
208 'list' => 'watchlist' ), $data );