wiki.techinc.nl/tests/phpunit/includes/UploadTest.php

91 lines
2.2 KiB
PHP
Raw Normal View History

<?php
/**
* @group Upload
*/
class UploadTest extends MediaWikiTestCase {
protected $upload;
function setUp() {
global $wgContLang;
parent::setUp();
$wgContLang = Language::factory( 'en' );
$this->upload = new UploadTestHandler;
}
/**
* Test various forms of valid and invalid titles that can be supplied.
*/
public function testTitleValidation() {
/* Test a valid title */
$this->assertUploadTitleAndCode( 'ValidTitle.jpg',
'ValidTitle.jpg', UploadBase::OK,
'upload valid title' );
/* A title with a slash */
$this->assertUploadTitleAndCode( 'A/B.jpg',
'B.jpg', UploadBase::OK,
'upload title with slash' );
/* A title with illegal char */
$this->assertUploadTitleAndCode( 'A:B.jpg',
'A-B.jpg', UploadBase::OK,
'upload title with colon' );
/* A title without extension */
$this->assertUploadTitleAndCode( 'A',
null, UploadBase::FILETYPE_MISSING,
'upload title without extension' );
/* A title with no basename */
$this->assertUploadTitleAndCode( '.jpg',
null, UploadBase::MIN_LENGTH_PARTNAME,
'upload title without basename' );
}
/**
* Helper function for testTitleValidation. First checks the return code
* of UploadBase::getTitle() and then the actual returned titl
*/
private function assertUploadTitleAndCode( $srcFilename, $dstFilename, $code, $msg ) {
/* Check the result code */
$this->assertEquals( $code,
$this->upload->testTitleValidation( $srcFilename ),
"$msg code" );
/* If we expect a valid title, check the title itself. */
if ( $code == UploadBase::OK ) {
$this->assertEquals( $dstFilename,
$this->upload->getTitle()->getText(),
"$msg text" );
}
}
/**
* Test the upload verification functions
*/
public function testVerifyUpload() {
/* Setup with zero file size */
$this->upload->initializePathInfo( '', '', 0 );
$result = $this->upload->verifyUpload();
$this->assertEquals( UploadBase::EMPTY_FILE,
$result['status'],
'upload empty file' );
}
}
class UploadTestHandler extends UploadBase {
public function initializeFromRequest( &$request ) { }
public function testTitleValidation( $name ) {
$this->mTitle = false;
$this->mDesiredDestName = $name;
$this->getTitle();
return $this->mTitleError;
}
}