MediaWiki REL1_33
UploadFromUrlTest.php
Go to the documentation of this file.
1<?php
2
11 protected function setUp() {
12 parent::setUp();
13
14 $this->setMwGlobals( [
15 'wgEnableUploads' => true,
16 'wgAllowCopyUploads' => true,
17 ] );
18
19 if ( wfLocalFile( 'UploadFromUrlTest.png' )->exists() ) {
20 $this->deleteFile( 'UploadFromUrlTest.png' );
21 }
22 }
23
24 protected function doApiRequest( array $params, array $unused = null,
25 $appendModule = false, User $user = null, $tokenType = null
26 ) {
27 global $wgRequest;
28
29 $req = new FauxRequest( $params, true, $wgRequest->getSession() );
30 $module = new ApiMain( $req, true );
31 $module->execute();
32
33 return [
34 $module->getResult()->getResultData( null, [ 'Strip' => 'all' ] ),
35 $req
36 ];
37 }
38
42 public function testClearQueue() {
43 $job = JobQueueGroup::singleton()->pop();
44 while ( $job ) {
45 $job = JobQueueGroup::singleton()->pop();
46 }
47 $this->assertFalse( $job );
48 }
49
53 public function testSetupUrlDownload( $data ) {
54 $token = $this->user->getEditToken();
55 $exception = false;
56
57 try {
58 $this->doApiRequest( [
59 'action' => 'upload',
60 ] );
61 } catch ( ApiUsageException $e ) {
62 $exception = true;
63 $this->assertEquals( "The token parameter must be set", $e->getMessage() );
64 }
65 $this->assertTrue( $exception, "Got exception" );
66
67 $exception = false;
68 try {
69 $this->doApiRequest( [
70 'action' => 'upload',
71 'token' => $token,
72 ], $data );
73 } catch ( ApiUsageException $e ) {
74 $exception = true;
75 $this->assertEquals( "One of the parameters sessionkey, file, url is required",
76 $e->getMessage() );
77 }
78 $this->assertTrue( $exception, "Got exception" );
79
80 $exception = false;
81 try {
82 $this->doApiRequest( [
83 'action' => 'upload',
84 'url' => 'http://www.example.com/test.png',
85 'token' => $token,
86 ], $data );
87 } catch ( ApiUsageException $e ) {
88 $exception = true;
89 $this->assertEquals( "The filename parameter must be set", $e->getMessage() );
90 }
91 $this->assertTrue( $exception, "Got exception" );
92
93 $this->user->removeGroup( 'sysop' );
94 $exception = false;
95 try {
96 $this->doApiRequest( [
97 'action' => 'upload',
98 'url' => 'http://www.example.com/test.png',
99 'filename' => 'UploadFromUrlTest.png',
100 'token' => $token,
101 ], $data );
102 } catch ( ApiUsageException $e ) {
103 $exception = true;
104 $this->assertEquals( "Permission denied", $e->getMessage() );
105 }
106 $this->assertTrue( $exception, "Got exception" );
107 }
108
112 public function testSyncDownload( $data ) {
113 $token = $this->user->getEditToken();
114
115 $job = JobQueueGroup::singleton()->pop();
116 $this->assertFalse( $job, 'Starting with an empty jobqueue' );
117
118 $this->user->addGroup( 'users' );
119 $data = $this->doApiRequest( [
120 'action' => 'upload',
121 'filename' => 'UploadFromUrlTest.png',
122 'url' => 'http://upload.wikimedia.org/wikipedia/mediawiki/b/bc/Wiki.png',
123 'ignorewarnings' => true,
124 'token' => $token,
125 ], $data );
126
127 $job = JobQueueGroup::singleton()->pop();
128 $this->assertFalse( $job );
129
130 $this->assertEquals( 'Success', $data[0]['upload']['result'] );
131 $this->deleteFile( 'UploadFromUrlTest.png' );
132
133 return $data;
134 }
135
136 protected function deleteFile( $name ) {
137 $t = Title::newFromText( $name, NS_FILE );
138 $this->assertTrue( $t->exists(), "File '$name' exists" );
139
140 if ( $t->exists() ) {
141 $file = wfFindFile( $name, [ 'ignoreRedirect' => true ] );
142 $empty = "";
143 FileDeleteForm::doDelete( $t, $file, $empty, "none", true );
144 $page = WikiPage::factory( $t );
145 $page->doDeleteArticle( "testing" );
146 }
147 $t = Title::newFromText( $name, NS_FILE );
148
149 $this->assertFalse( $t->exists(), "File '$name' was deleted" );
150 }
151}
and that you know you can do these things To protect your we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights These restrictions translate to certain responsibilities for you if you distribute copies of the or if you modify it For if you distribute copies of such a whether gratis or for a you must give the recipients all the rights that you have You must make sure that receive or can get the source code And you must show them these terms so they know their rights We protect your rights with two and(2) offer you this license which gives you legal permission to copy
wfLocalFile( $title)
Get an object referring to a locally registered file.
wfFindFile( $title, $options=[])
Find a file.
if(! $wgDBerrorLogTZ) $wgRequest
Definition Setup.php:728
This is the main API class, used for both external and internal processing.
Definition ApiMain.php:41
Exception used to abort API execution with an error.
WebRequest clone which takes values from a provided array.
static doDelete(&$title, &$file, &$oldimage, $reason, $suppress, User $user=null, $tags=[])
Really delete the file.
setMwGlobals( $pairs, $value=null)
Sets a global, maintaining a stashed version of the previous global to be restored in tearDown.
Broken Upload Database.
testClearQueue()
Ensure that the job queue is empty before continuing.
testSetupUrlDownload( $data)
@depends testClearQueue
doApiRequest(array $params, array $unused=null, $appendModule=false, User $user=null, $tokenType=null)
Does the API request and returns the result.
testSyncDownload( $data)
@depends testClearQueue
The User object encapsulates all of the user-specific settings (user_id, name, rights,...
Definition User.php:48
this hook is for auditing only $req
Definition hooks.txt:979
returning false will NOT prevent logging $e
Definition hooks.txt:2175
$data
Utility to generate mapping file used in mw.Title (phpCharToUpper.json)
const NS_FILE
Definition Defines.php:79
The wiki should then use memcached to cache various data To use multiple just add more items to the array To increase the weight of a make its entry a array("192.168.0.1:11211", 2))
if(count( $args)< 1) $job
$params