protected function setUp() {
global $wgFileBackends;
parent::setUp();
- $uniqueId = time() . '-' . mt_rand();
$tmpDir = $this->getNewTempDirectory();
if ( $this->getCliArg( 'use-filebackend' ) ) {
if ( self::$backendToUse ) {
'name' => 'localtesting',
'lockManager' => LockManagerGroup::singleton()->get( 'fsLockManager' ),
'parallelize' => 'implicit',
- 'wikiId' => wfWikiId() . $uniqueId,
+ 'wikiId' => wfWikiId() . wfRandomString(),
'backends' => array(
array(
'name' => 'localmultitesting1',
$this->assertEquals( strlen( $fileBContents ),
$this->backend->getFileSize( array( 'src' => $fileC ) ),
"Correct file size of $fileC" );
- $this->assertEquals( wfBaseConvert( sha1( $fileBContents ), 16, 36, 31 ),
+ $this->assertEquals( Wikimedia\base_convert( sha1( $fileBContents ), 16, 36, 31 ),
$this->backend->getFileSha1Base36( array( 'src' => $fileC ) ),
"Correct file SHA-1 of $fileC" );
}
$this->assertEquals( strlen( $fileBContents ),
$this->backend->getFileSize( array( 'src' => $fileC ) ),
"Correct file size of $fileC" );
- $this->assertEquals( wfBaseConvert( sha1( $fileBContents ), 16, 36, 31 ),
+ $this->assertEquals( Wikimedia\base_convert( sha1( $fileBContents ), 16, 36, 31 ),
$this->backend->getFileSha1Base36( array( 'src' => $fileC ) ),
"Correct file SHA-1 of $fileC" );
}
$this->assertEquals( strlen( $fileBContents ),
$this->backend->getFileSize( array( 'src' => $fileA ) ),
"Correct file size of $fileA" );
- $this->assertEquals( wfBaseConvert( sha1( $fileBContents ), 16, 36, 31 ),
+ $this->assertEquals( Wikimedia\base_convert( sha1( $fileBContents ), 16, 36, 31 ),
$this->backend->getFileSha1Base36( array( 'src' => $fileA ) ),
"Correct file SHA-1 of $fileA" );
}
"Scoped unlocking of files succeeded with OK status ($backendName)." );
}
+ /**
+ * @dataProvider provider_testGetContentType
+ */
+ public function testGetContentType( $mimeCallback, $mimeFromString ) {
+ global $IP;
+
+ $be = TestingAccessWrapper::newFromObject( new MemoryFileBackend(
+ array(
+ 'name' => 'testing',
+ 'class' => 'MemoryFileBackend',
+ 'wikiId' => 'meow',
+ 'mimeCallback' => $mimeCallback
+ )
+ ) );
+
+ $dst = 'mwstore://testing/container/path/to/file_no_ext';
+ $src = "$IP/tests/phpunit/data/media/srgb.jpg";
+ $this->assertEquals( 'image/jpeg', $be->getContentType( $dst, null, $src ) );
+ $this->assertEquals(
+ $mimeFromString ? 'image/jpeg' : 'unknown/unknown',
+ $be->getContentType( $dst, file_get_contents( $src ), null ) );
+
+ $src = "$IP/tests/phpunit/data/media/Png-native-test.png";
+ $this->assertEquals( 'image/png', $be->getContentType( $dst, null, $src ) );
+ $this->assertEquals(
+ $mimeFromString ? 'image/png' : 'unknown/unknown',
+ $be->getContentType( $dst, file_get_contents( $src ), null ) );
+ }
+
+ public static function provider_testGetContentType() {
+ return array(
+ array( null, false ),
+ array( array( FileBackendGroup::singleton(), 'guessMimeInternal' ), true )
+ );
+ }
+
public function testReadAffinity() {
$be = TestingAccessWrapper::newFromObject(
new FileBackendMultiWrite( array(
);
}
+ public function testSanitizeOpHeaders() {
+ $be = TestingAccessWrapper::newFromObject( new MemoryFileBackend( array(
+ 'name' => 'localtesting',
+ 'wikiId' => wfWikiID()
+ ) ) );
+
+ $name = wfRandomString( 300 );
+
+ $input = array(
+ 'headers' => array(
+ 'content-Disposition' => FileBackend::makeContentDisposition( 'inline', $name ),
+ 'Content-dUration' => 25.6,
+ 'X-LONG-VALUE' => str_pad( '0', 300 ),
+ 'CONTENT-LENGTH' => 855055,
+ )
+ );
+ $expected = array(
+ 'headers' => array(
+ 'content-disposition' => FileBackend::makeContentDisposition( 'inline', $name ),
+ 'content-duration' => 25.6,
+ 'content-length' => 855055
+ )
+ );
+
+ MediaWiki\suppressWarnings();
+ $actual = $be->sanitizeOpHeaders( $input );
+ MediaWiki\restoreWarnings();
+
+ $this->assertEquals( $expected, $actual, "Header sanitized properly" );
+ }
+
// helper function
private function listToArray( $iter ) {
return is_array( $iter ) ? $iter : iterator_to_array( $iter );