8fcaa21423c68d2d588d177c2744af8cb2fbc0be
[lhc/web/wiklou.git] / tests / phpunit / includes / upload / UploadStashTest.php
1 <?php
2 /**
3 * @group Database
4 */
5 class UploadStashTest extends MediaWikiTestCase {
6 /**
7 * @var Array of UploadStashTestUser
8 */
9 public static $users;
10
11 protected function setUp() {
12 parent::setUp();
13
14 // Setup a file for bug 29408
15 $this->bug29408File = __DIR__ . '/bug29408';
16 file_put_contents( $this->bug29408File, "\x00" );
17
18 self::$users = array(
19 'sysop' => new TestUser(
20 'Uploadstashtestsysop',
21 'Upload Stash Test Sysop',
22 'upload_stash_test_sysop@example.com',
23 array( 'sysop' )
24 ),
25 'uploader' => new TestUser(
26 'Uploadstashtestuser',
27 'Upload Stash Test User',
28 'upload_stash_test_user@example.com',
29 array()
30 )
31 );
32 }
33
34 protected function tearDown() {
35 if ( file_exists( $this->bug29408File . "." ) ) {
36 unlink( $this->bug29408File . "." );
37 }
38
39 if ( file_exists( $this->bug29408File ) ) {
40 unlink( $this->bug29408File );
41 }
42
43 parent::tearDown();
44 }
45
46 public function testBug29408() {
47 global $wgUser;
48 $wgUser = self::$users['uploader']->user;
49
50 $repo = RepoGroup::singleton()->getLocalRepo();
51 $stash = new UploadStash( $repo );
52
53 // Throws exception caught by PHPUnit on failure
54 $file = $stash->stashFile( $this->bug29408File );
55 // We'll never reach this point if we hit bug 29408
56 $this->assertTrue( true, 'Unrecognized file without extension' );
57
58 $stash->removeFile( $file->getFileKey() );
59 }
60
61 public function testValidRequest() {
62 $request = new FauxRequest( array( 'wpFileKey' => 'foo' ) );
63 $this->assertFalse( UploadFromStash::isValidRequest( $request ), 'Check failure on bad wpFileKey' );
64
65 $request = new FauxRequest( array( 'wpSessionKey' => 'foo' ) );
66 $this->assertFalse( UploadFromStash::isValidRequest( $request ), 'Check failure on bad wpSessionKey' );
67
68 $request = new FauxRequest( array( 'wpFileKey' => 'testkey-test.test' ) );
69 $this->assertTrue( UploadFromStash::isValidRequest( $request ), 'Check good wpFileKey' );
70
71 $request = new FauxRequest( array( 'wpFileKey' => 'testkey-test.test' ) );
72 $this->assertTrue( UploadFromStash::isValidRequest( $request ), 'Check good wpSessionKey' );
73
74 $request = new FauxRequest( array( 'wpFileKey' => 'testkey-test.test', 'wpSessionKey' => 'foo' ) );
75 $this->assertTrue( UploadFromStash::isValidRequest( $request ), 'Check key precedence' );
76 }
77 }