* re r65152 add back async option for uploadByURL API call
[lhc/web/wiklou.git] / maintenance / tests / UploadFromUrlTest.php
index 77fd099..1e18154 100644 (file)
@@ -6,25 +6,18 @@ require_once( dirname( dirname( __FILE__ ) ) . "/deleteArchivedFiles.inc" );
 require_once( dirname( dirname( __FILE__ ) ) . "/deleteArchivedRevisions.inc" );
 
 class nullClass {
-       public function handleOutput(){}
-       public function purgeRedundantText(){}
+       public function handleOutput() { }
+       public function purgeRedundantText() { }
 }
 
 class UploadFromUrlTest extends ApiSetup {
 
        function setUp() {
-               global $wgEnableUploads, $wgLocalFileRepo;
+               global $wgEnableUploads, $wgLocalFileRepo, $wgAllowCopyUploads;
 
                $wgEnableUploads = true;
+               $wgAllowCopyUploads = true;
                parent::setup();
-               $wgLocalFileRepo = array(
-                       'class' => 'LocalRepo',
-                       'name' => 'local',
-                       'directory' => 'test-repo',
-                       'url' => 'http://example.com/images',
-                       'hashLevels' => 2,
-                       'transformVia404' => false,
-               );
 
                ini_set( 'log_errors', 1 );
                ini_set( 'error_reporting', 1 );
@@ -43,8 +36,8 @@ class UploadFromUrlTest extends ApiSetup {
        }
 
        function testClearQueue() {
-               while ( $job = Job::pop() ) {}
-               $this->assertFalse($job);
+               while ( $job = Job::pop() ) { }
+               $this->assertFalse( $job );
        }
 
        function testLogin() {
@@ -118,7 +111,7 @@ class UploadFromUrlTest extends ApiSetup {
                }
                $this->assertTrue( $exception, "Got exception" );
 
-               $wgUser->removeGroup('sysop');
+               $wgUser->removeGroup( 'sysop' );
                $exception = false;
                try {
                        $this->doApiRequest( array(
@@ -133,19 +126,18 @@ class UploadFromUrlTest extends ApiSetup {
                }
                $this->assertTrue( $exception, "Got exception" );
 
-               $wgUser->addGroup('*');
-               $wgUser->addGroup('sysop');
+               $wgUser->addGroup( '*' );
+               $wgUser->addGroup( 'sysop' );
                $exception = false;
                $data = $this->doApiRequest( array(
                        'action' => 'upload',
                        'url' => 'http://bits.wikimedia.org/skins-1.5/common/images/poweredby_mediawiki_88x31.png',
+                       'asyncdownload' => 1,
                        'filename' => 'Test.png',
                        'token' => $token,
                ), $data );
 
-               $this->assertThat( $data[0]['upload'], $this->isInstanceOf( 'Status' ),
-                       "Got Status Object" );
-               $this->assertTrue( $data[0]['upload']->isOk(), 'Job added');
+               $this->assertTrue( $data[0]['upload']['queued'], 'Job added' );
 
                $job = Job::pop();
                $this->assertThat( $job, $this->isInstanceOf( 'UploadFromUrlJob' ),
@@ -163,29 +155,83 @@ class UploadFromUrlTest extends ApiSetup {
                $data[2]['wsEditToken'] = $data[2]['wsToken'];
                $token = md5( $data[2]['wsToken'] ) . EDIT_TOKEN_SUFFIX;
 
-               $wgUser->addGroup('users');
+               $wgUser->addGroup( 'users' );
                $data = $this->doApiRequest( array(
                        'action' => 'upload',
                        'filename' => 'Test.png',
                        'url' => 'http://bits.wikimedia.org/skins-1.5/common/images/poweredby_mediawiki_88x31.png',
+                       'asyncdownload' => 1,
                        'token' => $token,
                ), $data );
 
                $job = Job::pop();
-               $this->assertEquals( 'UploadFromUrlJob', get_class($job) );
+               $this->assertEquals( 'UploadFromUrlJob', get_class( $job ) );
+
+               $status = $job->run();
 
-               $status = $job->run();
                $this->assertTrue( $status->isOk() );
 
                return $data;
        }
 
+       /**
+        * @depends testLogin
+        */
+       function testSyncDownload( $data ) {
+               global $wgUser;
+               $data[2]['wsEditToken'] = $data[2]['wsToken'];
+               $token = md5( $data[2]['wsToken'] ) . EDIT_TOKEN_SUFFIX;
+
+               $job = Job::pop();
+               $this->assertFalse( $job );
+
+               self::deleteFile( 'Test.png' );
+
+               $wgUser->addGroup( 'users' );
+               $data = $this->doApiRequest( array(
+                       'action' => 'upload',
+                       'filename' => 'Test.png',
+                       'url' => 'http://bits.wikimedia.org/skins-1.5/common/images/poweredby_mediawiki_88x31.png',
+                       'ignorewarnings' => true,
+                       'token' => $token,
+               ), $data );
+
+               $job = Job::pop();
+               $this->assertFalse( $job );
+
+               $this->assertEquals( 'Success', $data[0]['upload']['result'] );
+
+               return $data;
+       }
+
        /**
         * @depends testDoDownload
         */
        function testVerifyDownload( $data ) {
-               $t = Title::newFromText("Test.png", NS_FILE);
+               $t = Title::newFromText( "Test.png", NS_FILE );
 
-               $this->assertTrue($t->exists());
+               $this->assertTrue( $t->exists() );
+
+               self::deleteFile( 'Test.png' );
+        }
+
+       /**
+        *
+        */
+       function deleteFile( $name ) {
+
+               $t = Title::newFromText( $name, NS_FILE );
+               $this->assertTrue($t->exists(), "File '$name' exists");
+
+               if ( $t->exists() ) {
+                       $file = wfFindFile( $name, array( 'ignoreRedirect' => true ) );
+                       $empty = "";
+                       $status = FileDeleteForm::doDelete( $t, $file, $empty, "none", true );
+                       $a = new Article ( $t );
+                       $a->doDeleteArticle( "testing" );
+               }
+               $t = Title::newFromText( $name, NS_FILE );
+
+               $this->assertFalse($t->exists(), "File '$name' was deleted");
        }
-}
+ }