29 $user = self::$users[
'uploader'];
30 $userName =
$user->getUser()->getName();
31 $password =
$user->getPassword();
35 'lgname' => $userName,
36 'lgpassword' => $password
39 $this->assertArrayHasKey(
"login",
$result );
40 $this->assertArrayHasKey(
"result",
$result[
'login'] );
41 $this->assertEquals(
"NeedToken",
$result[
'login'][
'result'] );
42 $token =
$result[
'login'][
'token'];
47 'lgname' => $userName,
48 'lgpassword' => $password
51 $this->assertArrayHasKey(
"login",
$result );
52 $this->assertArrayHasKey(
"result",
$result[
'login'] );
53 $this->assertEquals(
"Success",
$result[
'login'][
'result'] );
54 $this->assertArrayHasKey(
'lgtoken',
$result[
'login'] );
56 $this->assertNotEmpty( $session,
'API Login must return a session' );
72 $this->assertEquals(
'The "token" parameter must be set',
$e->getMessage() );
74 $this->assertTrue( $exception,
"Got exception" );
85 ], $session, self::$users[
'uploader']->getUser() );
88 $this->assertEquals(
"One of the parameters filekey, file, url is required",
91 $this->assertTrue( $exception,
"Got exception" );
99 $mimeType =
'image/png';
103 $filePaths = $randomImageGenerator->writeImages( 1, $extension, $this->
getNewTempDirectory() );
104 }
catch ( Exception
$e ) {
105 $this->markTestIncomplete(
$e->getMessage() );
109 $filePath = $filePaths[0];
110 $fileSize = filesize( $filePath );
111 $fileName = basename( $filePath );
116 if ( !$this->
fakeUploadFile(
'file', $fileName, $mimeType, $filePath ) ) {
117 $this->markTestIncomplete(
"Couldn't upload file!\n" );
121 'action' =>
'upload',
122 'filename' => $fileName,
123 'file' =>
'dummy content',
124 'comment' =>
'dummy comment',
125 'text' =>
"This is the page text for $fileName",
131 self::$users[
'uploader']->getUser() );
135 $this->assertTrue( isset(
$result[
'upload'] ) );
136 $this->assertEquals(
'Success',
$result[
'upload'][
'result'] );
137 $this->assertEquals( $fileSize, (
int)
$result[
'upload'][
'imageinfo'][
'size'] );
138 $this->assertEquals( $mimeType,
$result[
'upload'][
'imageinfo'][
'mime'] );
139 $this->assertFalse( $exception );
149 $mimeType =
'image/png';
152 $fileName =
"apiTestUploadZeroLength.png";
156 if ( !$this->
fakeUploadFile(
'file', $fileName, $mimeType, $filePath ) ) {
157 $this->markTestIncomplete(
"Couldn't upload file!\n" );
161 'action' =>
'upload',
162 'filename' => $fileName,
163 'file' =>
'dummy content',
164 'comment' =>
'dummy comment',
165 'text' =>
"This is the page text for $fileName",
172 $this->assertContains(
'The file you submitted was empty',
$e->getMessage() );
175 $this->assertTrue( $exception );
186 $mimeType =
'image/png';
190 $filePaths = $randomImageGenerator->writeImages( 2, $extension, $this->
getNewTempDirectory() );
191 }
catch ( Exception
$e ) {
192 $this->markTestIncomplete(
$e->getMessage() );
197 $fileName = basename( $filePaths[0] );
204 'action' =>
'upload',
205 'filename' => $fileName,
206 'file' =>
'dummy content',
207 'comment' =>
'dummy comment',
208 'text' =>
"This is the page text for $fileName",
213 if ( !$this->
fakeUploadFile(
'file', $fileName, $mimeType, $filePaths[0] ) ) {
214 $this->markTestIncomplete(
"Couldn't upload file!\n" );
220 self::$users[
'uploader']->getUser() );
224 $this->assertTrue( isset(
$result[
'upload'] ) );
225 $this->assertEquals(
'Success',
$result[
'upload'][
'result'] );
226 $this->assertFalse( $exception );
230 if ( !$this->
fakeUploadFile(
'file', $fileName, $mimeType, $filePaths[1] ) ) {
231 $this->markTestIncomplete(
"Couldn't upload file!\n" );
237 self::$users[
'uploader']->getUser() );
241 $this->assertTrue( isset(
$result[
'upload'] ) );
242 $this->assertEquals(
'Warning',
$result[
'upload'][
'result'] );
243 $this->assertTrue( isset(
$result[
'upload'][
'warnings'] ) );
244 $this->assertTrue( isset(
$result[
'upload'][
'warnings'][
'exists'] ) );
245 $this->assertFalse( $exception );
256 $mimeType =
'image/png';
260 $filePaths = $randomImageGenerator->writeImages( 1, $extension, $this->
getNewTempDirectory() );
261 }
catch ( Exception
$e ) {
262 $this->markTestIncomplete(
$e->getMessage() );
266 $fileNames[0] = basename( $filePaths[0] );
267 $fileNames[1] =
"SameContentAs" . $fileNames[0];
277 'action' =>
'upload',
278 'filename' => $fileNames[0],
279 'file' =>
'dummy content',
280 'comment' =>
'dummy comment',
281 'text' =>
"This is the page text for " . $fileNames[0],
284 if ( !$this->
fakeUploadFile(
'file', $fileNames[0], $mimeType, $filePaths[0] ) ) {
285 $this->markTestIncomplete(
"Couldn't upload file!\n" );
291 self::$users[
'uploader']->getUser() );
295 $this->assertTrue( isset(
$result[
'upload'] ) );
296 $this->assertEquals(
'Success',
$result[
'upload'][
'result'] );
297 $this->assertFalse( $exception );
301 if ( !$this->
fakeUploadFile(
'file', $fileNames[1], $mimeType, $filePaths[0] ) ) {
302 $this->markTestIncomplete(
"Couldn't upload file!\n" );
306 'action' =>
'upload',
307 'filename' => $fileNames[1],
308 'file' =>
'dummy content',
309 'comment' =>
'dummy comment',
310 'text' =>
"This is the page text for " . $fileNames[1],
316 self::$users[
'uploader']->getUser() );
320 $this->assertTrue( isset(
$result[
'upload'] ) );
321 $this->assertEquals(
'Warning',
$result[
'upload'][
'result'] );
322 $this->assertTrue( isset(
$result[
'upload'][
'warnings'] ) );
323 $this->assertTrue( isset(
$result[
'upload'][
'warnings'][
'duplicate'] ) );
324 $this->assertFalse( $exception );
336 'wgUser' => self::$users[
'uploader']->getUser(),
340 $mimeType =
'image/png';
344 $filePaths = $randomImageGenerator->writeImages( 1, $extension, $this->
getNewTempDirectory() );
345 }
catch ( Exception
$e ) {
346 $this->markTestIncomplete(
$e->getMessage() );
350 $filePath = $filePaths[0];
351 $fileSize = filesize( $filePath );
352 $fileName = basename( $filePath );
357 if ( !$this->
fakeUploadFile(
'file', $fileName, $mimeType, $filePath ) ) {
358 $this->markTestIncomplete(
"Couldn't upload file!\n" );
362 'action' =>
'upload',
364 'filename' => $fileName,
365 'file' =>
'dummy content',
366 'comment' =>
'dummy comment',
367 'text' =>
"This is the page text for $fileName",
373 self::$users[
'uploader']->getUser() );
377 $this->assertFalse( $exception );
378 $this->assertTrue( isset(
$result[
'upload'] ) );
379 $this->assertEquals(
'Success',
$result[
'upload'][
'result'] );
380 $this->assertEquals( $fileSize, (
int)
$result[
'upload'][
'imageinfo'][
'size'] );
381 $this->assertEquals( $mimeType,
$result[
'upload'][
'imageinfo'][
'mime'] );
382 $this->assertTrue( isset(
$result[
'upload'][
'filekey'] ) );
383 $this->assertEquals(
$result[
'upload'][
'sessionkey'],
$result[
'upload'][
'filekey'] );
384 $filekey =
$result[
'upload'][
'filekey'];
391 'action' =>
'upload',
392 'filekey' => $filekey,
393 'filename' => $fileName,
394 'comment' =>
'dummy comment',
395 'text' =>
"This is the page text for $fileName, altered",
402 self::$users[
'uploader']->getUser() );
406 $this->assertTrue( isset(
$result[
'upload'] ) );
407 $this->assertEquals(
'Success',
$result[
'upload'][
'result'] );
408 $this->assertFalse( $exception,
"No ApiUsageException exception." );
420 'wgUser' => self::$users[
'uploader']->getUser(),
423 $chunkSize = 1048576;
427 $mimeType =
'image/jpeg';
428 $url =
'http://upload.wikimedia.org/wikipedia/commons/'
429 .
'e/ed/Oberaargletscher_from_Oberaar%2C_2010_07.JPG';
432 copy( $url, $filePath );
433 }
catch ( Exception
$e ) {
434 $this->markTestIncomplete(
$e->getMessage() );
437 $fileSize = filesize( $filePath );
438 $fileName = basename( $filePath );
445 'action' =>
'upload',
447 'filename' => $fileName,
448 'filesize' => $fileSize,
453 $chunkSessionKey =
false;
456 MediaWiki\suppressWarnings();
457 $handle = fopen( $filePath,
"r" );
458 MediaWiki\restoreWarnings();
460 if ( $handle ===
false ) {
461 $this->markTestIncomplete(
"could not open file: $filePath" );
464 while ( !feof( $handle ) ) {
466 MediaWiki\suppressWarnings();
467 $chunkData = fread( $handle, $chunkSize );
468 MediaWiki\restoreWarnings();
474 if ( !$chunkSessionKey ) {
478 self::$users[
'uploader']->getUser() );
480 $this->markTestIncomplete(
$e->getMessage() );
483 $this->assertTrue( isset(
$result[
'upload'] ) );
484 $this->assertTrue( isset(
$result[
'upload'][
'filekey'] ) );
486 if ( !isset(
$result[
'upload'][
'filekey'] ) ) {
487 $this->markTestIncomplete(
"no filekey provided" );
489 $chunkSessionKey =
$result[
'upload'][
'filekey'];
490 $this->assertEquals(
'Continue',
$result[
'upload'][
'result'] );
492 $this->assertEquals( $chunkSize,
$result[
'upload'][
'offset'] );
493 $resultOffset =
$result[
'upload'][
'offset'];
497 $params[
'filekey'] = $chunkSessionKey;
500 $params[
'offset'] += $chunkSize;
502 $this->assertEquals( $resultOffset,
$params[
'offset'] );
506 self::$users[
'uploader']->getUser() );
508 $this->markTestIncomplete(
$e->getMessage() );
511 $this->assertTrue( isset(
$result[
'upload'] ) );
512 $this->assertTrue( isset(
$result[
'upload'][
'filekey'] ) );
515 if (
$params[
'offset'] + $chunkSize >= $fileSize ) {
516 $this->assertEquals(
'Success',
$result[
'upload'][
'result'] );
519 $this->assertEquals(
'Continue',
$result[
'upload'][
'result'] );
521 $resultOffset =
$result[
'upload'][
'offset'];
528 .
" hohoh filesize {$fileSize} info {$result['upload']['imageinfo']['size']}\n\n" );
529 $this->assertEquals( $fileSize,
$result[
'upload'][
'imageinfo'][
'size'] );
530 $this->assertEquals( $mimeType,
$result[
'upload'][
'imageinfo'][
'mime'] );
531 $this->assertTrue( isset(
$result[
'upload'][
'filekey'] ) );
532 $filekey =
$result[
'upload'][
'filekey'];
536 'action' =>
'upload',
537 'filekey' => $filekey,
538 'filename' => $fileName,
539 'comment' =>
'dummy comment',
540 'text' =>
"This is the page text for $fileName, altered",
546 self::$users[
'uploader']->getUser() );
550 $this->assertTrue( isset(
$result[
'upload'] ) );
551 $this->assertEquals(
'Success',
$result[
'upload'][
'result'] );
552 $this->assertFalse( $exception );