Fix UploadFromUrl test cases, UploadFromUrlJob::run return value, and disable broken...
authorBryan Tong Minh <btongminh@users.mediawiki.org>
Thu, 29 Jul 2010 18:39:42 +0000 (18:39 +0000)
committerBryan Tong Minh <btongminh@users.mediawiki.org>
Thu, 29 Jul 2010 18:39:42 +0000 (18:39 +0000)
* Use a more specific filename in UploadFromUrlTest and fix some assertions.
* Return boolean from UploadFromUrlJob::run
* Force ignorewarnings and leavemessage in UploadFromUrlJob

includes/job/UploadFromUrlJob.php
maintenance/tests/UploadFromUrlTest.php

index d5225b1..675b144 100644 (file)
@@ -18,6 +18,14 @@ class UploadFromUrlJob extends Job {
        }
 
        public function run() {
+               # Until we find a way to store data in sessions, set leaveMessage to
+               # true unconditionally
+               $this->params['leaveMessage'] = true;
+               # Similar for ignorewarnings. This is not really a good fallback, but
+               # there is no easy way to get a wikitext formatted warning message to
+               # show to the user
+               $this->params['ignoreWarnings'] = true;
+               
                # Initialize this object and the upload object
                $this->upload = new UploadFromUrl();
                $this->upload->initialize( 
@@ -31,7 +39,7 @@ class UploadFromUrlJob extends Job {
                $status = $this->upload->fetchFile();
                if ( !$status->isOk() ) {
                        $this->leaveMessage( $status );
-                       return;
+                       return true;
                }
                
                # Verify upload
@@ -39,13 +47,13 @@ class UploadFromUrlJob extends Job {
                if ( $result['status'] != UploadBase::OK ) {
                        $status = $this->upload->convertVerifyErrorToStatus( $result );
                        $this->leaveMessage( $status );
-                       return;
+                       return true;
                }
                
                # Check warnings
                if ( !$this->params['ignoreWarnings'] ) {
                        $warnings = $this->upload->checkWarnings();
-                       if ( $warnings ) {
+                       if ( $warnings ) {              
                                if ( $this->params['leaveMessage'] ) {
                                        $this->user->leaveUserMessage( 
                                                wfMsg( 'upload-warning-subj' ),
@@ -59,7 +67,7 @@ class UploadFromUrlJob extends Job {
                                }
                                
                                // FIXME: stash in session
-                               return;
+                               return true;
                        }
                }
                
@@ -71,6 +79,8 @@ class UploadFromUrlJob extends Job {
                        $this->user
                );
                $this->leaveMessage( $status );
+               return true;
+               
        }
        
        /**
index b1567ae..1d870ef 100644 (file)
@@ -112,7 +112,7 @@ class UploadFromUrlTest extends ApiTestSetup {
                        $this->doApiRequest( array(
                                'action' => 'upload',
                                'url' => 'http://www.example.com/test.png',
-                               'filename' => 'Test.png',
+                               'filename' => 'UploadFromUrlTest.png',
                                'token' => $token,
                        ), $data );
                } catch ( UsageException $e ) {
@@ -128,18 +128,14 @@ class UploadFromUrlTest extends ApiTestSetup {
                        'action' => 'upload',
                        'url' => 'http://bits.wikimedia.org/skins-1.5/common/images/poweredby_mediawiki_88x31.png',
                        'asyncdownload' => 1,
-                       'filename' => 'Test.png',
+                       'filename' => 'UploadFromUrlTest.png',
                        'token' => $token,
                ), $data );
 
-               $this->assertTrue( $data[0]['upload']['queued'], 'Job added' );
-
+               $this->assertEquals( $data[0]['upload']['result'], 'Queued', 'Queued upload' );
+               
                $job = Job::pop();
-               $this->assertThat( $job, $this->isInstanceOf( 'UploadFromUrlJob' ),
-                       "Got Job Object" );
-
-               $job = Job::pop_type( 'upload' );
-               $this->assertFalse( $job );
+               $this->assertThat( $job, $this->isInstanceOf( 'UploadFromUrlJob' ), 'Queued upload inserted' );
        }
 
        /**
@@ -153,7 +149,7 @@ class UploadFromUrlTest extends ApiTestSetup {
                $wgUser->addGroup( 'users' );
                $data = $this->doApiRequest( array(
                        'action' => 'upload',
-                       'filename' => 'Test.png',
+                       'filename' => 'UploadFromUrlTest.png',
                        'url' => 'http://bits.wikimedia.org/skins-1.5/common/images/poweredby_mediawiki_88x31.png',
                        'asyncdownload' => 1,
                        'token' => $token,
@@ -164,7 +160,7 @@ class UploadFromUrlTest extends ApiTestSetup {
 
                $status = $job->run();
 
-               $this->assertTrue( $status->isOk() );
+               $this->assertTrue( $status );
 
                return $data;
        }
@@ -178,14 +174,14 @@ class UploadFromUrlTest extends ApiTestSetup {
                $token = md5( $data[2]['wsToken'] ) . EDIT_TOKEN_SUFFIX;
 
                $job = Job::pop();
-               $this->assertFalse( $job );
+               $this->assertFalse( $job, 'Starting with an empty jobqueue' );
 
-               $this->deleteFile( 'Test.png' );
+               //$this->deleteFile( 'UploadFromUrlTest.png' );
 
                $wgUser->addGroup( 'users' );
                $data = $this->doApiRequest( array(
                        'action' => 'upload',
-                       'filename' => 'Test.png',
+                       'filename' => 'UploadFromUrlTest.png',
                        'url' => 'http://bits.wikimedia.org/skins-1.5/common/images/poweredby_mediawiki_88x31.png',
                        'ignorewarnings' => true,
                        'token' => $token,
@@ -203,18 +199,17 @@ class UploadFromUrlTest extends ApiTestSetup {
         * @depends testDoDownload
         */
        function testVerifyDownload( $data ) {
-               $t = Title::newFromText( "Test.png", NS_FILE );
+               $t = Title::newFromText( "UploadFromUrlTest.png", NS_FILE );
 
                $this->assertTrue( $t->exists() );
 
-               $this->deleteFile( 'Test.png' );
+               $this->deleteFile( 'UploadFromUrlTest.png' );
         }
 
        /**
         *
         */
        function deleteFile( $name ) {
-
                $t = Title::newFromText( $name, NS_FILE );
                $this->assertTrue($t->exists(), "File '$name' exists");