3 require_once("ApiSetup.php");
5 class UploadFromChunksTest
extends ApiSetup
{
8 global $wgEnableUploads;
10 $wgEnableUploads=true;
11 ini_set('file_loads', true);
16 function makeChunk() {
17 $file = tempnam( wfTempDir(), "" );
18 $fh = fopen($file, "w");
20 $this->markTestIncomplete("Couldn't open $file!\n");
26 $_FILES['chunk']['tmp_name'] = $file;
27 $_FILES['chunk']['size'] = 3;
28 $_FILES['chunk']['error'] = null;
29 $_FILES['chunk']['name'] = "test.txt";
32 function cleanChunk() {
33 if(file_exists($_FILES['chunk']['tmp_name']))
34 unlink($_FILES['chunk']['tmp_name']);
37 function doApiRequest($params) {
38 $session = isset( $_SESSION ) ?
$_SESSION : array();
39 $req = new FauxRequest($params, true, $session);
40 $module = new ApiMain($req, true);
43 return $module->getResultData();
46 function testGetTitle() {
47 $filename = tempnam( wfTempDir(), "" );
48 $c = new UploadFromChunks();
49 $c->initialize(false, "temp.txt", null, $filename, 0, null);
50 $this->assertEquals(null, $c->getTitle());
52 $c = new UploadFromChunks();
53 $c->initialize(false, "temp.png", null, $filename, 0, null);
54 $this->assertEquals(Title
::makeTitleSafe(NS_FILE
, "Temp.png"), $c->getTitle());
57 function testLogin() {
58 $data = $this->doApiRequest(array('action' => 'login',
59 "lgname" => self
::$userName,
60 "lgpassword" => self
::$passWord ) );
61 $this->assertArrayHasKey("login", $data);
62 $this->assertArrayHasKey("result", $data['login']);
63 $this->assertEquals("Success", $data['login']['result']);
72 function testGetEditToken($data) {
74 $wgUser = User
::newFromName(self
::$userName);
77 $data = $this->doApiRequest(array('action' => 'query',
79 'intoken' => 'edit'));
82 function testSetupChunkSession() {
87 * @expectedException UsageException
89 function testPerformUploadInitError() {
91 $wgUser = User
::newFromId(1);
93 $req = new FauxRequest(
94 array('action' => 'upload',
95 'enablechunks' => '1',
96 'filename' => 'test.png',
98 $module = new ApiMain($req, true);
105 function testPerformUploadInitSuccess($login) {
108 $wgUser = User
::newFromName(self
::$userName);
109 $token = $wgUser->editToken();
111 $data = $this->doApiRequest(
112 array('action' => 'upload',
113 'enablechunks' => '1',
114 'filename' => 'test.png',
118 $this->assertArrayHasKey("uploadUrl", $data);
120 return array('data' => $data, 'session' => $_SESSION, 'token' => $token);
124 * @depends testPerformUploadInitSuccess
126 function testAppendChunk($combo) {
128 $data = $combo['data'];
129 $_SESSION = $combo['session'];
130 $wgUser = User
::newFromName(self
::$userName);
131 $token = $wgUser->editToken();
133 $url = $data['uploadUrl'];
134 $params = wfCgiToArray(substr($url, strpos($url, "?")));
136 for($i=0;$i<10;$i++
) {
138 $data = $this->doApiRequest($params);
142 return array('data' => $data, 'session' => $_SESSION, 'token' => $token, 'params' => $params);
146 * @depends testAppendChunk
148 function testUploadChunkDone($combo) {
150 $data = $combo['data'];
151 $params = $combo['params'];
152 $_SESSION = $combo['session'];
153 $wgUser = User
::newFromName(self
::$userName);
154 $token = $wgUser->editToken();
159 $data = $this->doApiRequest($params);