summaryrefslogtreecommitdiff
path: root/tests/phpunit/includes/filebackend
diff options
context:
space:
mode:
authorPierre Schmitz <pierre@archlinux.de>2015-12-17 09:15:42 +0100
committerPierre Schmitz <pierre@archlinux.de>2015-12-17 09:44:51 +0100
commita1789ddde42033f1b05cc4929491214ee6e79383 (patch)
tree63615735c4ddffaaabf2428946bb26f90899f7bf /tests/phpunit/includes/filebackend
parent9e06a62f265e3a2aaabecc598d4bc617e06fa32d (diff)
Update to MediaWiki 1.26.0
Diffstat (limited to 'tests/phpunit/includes/filebackend')
-rw-r--r--tests/phpunit/includes/filebackend/FileBackendTest.php52
-rw-r--r--tests/phpunit/includes/filebackend/SwiftFileBackendTest.php148
2 files changed, 199 insertions, 1 deletions
diff --git a/tests/phpunit/includes/filebackend/FileBackendTest.php b/tests/phpunit/includes/filebackend/FileBackendTest.php
index bfca75ad..2e4942f0 100644
--- a/tests/phpunit/includes/filebackend/FileBackendTest.php
+++ b/tests/phpunit/includes/filebackend/FileBackendTest.php
@@ -2376,7 +2376,7 @@ class FileBackendTest extends MediaWikiTestCase {
$status = Status::newGood();
$sl = $this->backend->getScopedFileLocks( $paths, LockManager::LOCK_EX, $status );
- $this->assertType( 'ScopedLock', $sl,
+ $this->assertInstanceOf( 'ScopedLock', $sl,
"Scoped locking of files succeeded ($backendName)." );
$this->assertEquals( array(), $status->errors,
"Scoped locking of files succeeded ($backendName)." );
@@ -2392,6 +2392,56 @@ class FileBackendTest extends MediaWikiTestCase {
"Scoped unlocking of files succeeded with OK status ($backendName)." );
}
+ public function testReadAffinity() {
+ $be = TestingAccessWrapper::newFromObject(
+ new FileBackendMultiWrite( array(
+ 'name' => 'localtesting',
+ 'wikiId' => wfWikiId() . mt_rand(),
+ 'backends' => array(
+ array( // backend 0
+ 'name' => 'multitesting0',
+ 'class' => 'MemoryFileBackend',
+ 'isMultiMaster' => false,
+ 'readAffinity' => true
+ ),
+ array( // backend 1
+ 'name' => 'multitesting1',
+ 'class' => 'MemoryFileBackend',
+ 'isMultiMaster' => true
+ )
+ )
+ ) )
+ );
+
+ $this->assertEquals(
+ 1,
+ $be->getReadIndexFromParams( array( 'latest' => 1 ) ),
+ 'Reads with "latest" flag use backend 1'
+ );
+ $this->assertEquals(
+ 0,
+ $be->getReadIndexFromParams( array( 'latest' => 0 ) ),
+ 'Reads without "latest" flag use backend 0'
+ );
+
+ $p = 'container/test-cont/file.txt';
+ $be->backends[0]->quickCreate( array(
+ 'dst' => "mwstore://multitesting0/$p", 'content' => 'cattitude' ) );
+ $be->backends[1]->quickCreate( array(
+ 'dst' => "mwstore://multitesting1/$p", 'content' => 'princess of power' ) );
+
+ $this->assertEquals(
+ 'cattitude',
+ $be->getFileContents( array( 'src' => "mwstore://localtesting/$p" ) ),
+ "Non-latest read came from backend 0"
+ );
+ $this->assertEquals(
+ 'princess of power',
+ $be->getFileContents( array( 'src' => "mwstore://localtesting/$p", 'latest' => 1 ) ),
+ "Latest read came from backend1"
+ );
+ }
+
// helper function
private function listToArray( $iter ) {
return is_array( $iter ) ? $iter : iterator_to_array( $iter );
diff --git a/tests/phpunit/includes/filebackend/SwiftFileBackendTest.php b/tests/phpunit/includes/filebackend/SwiftFileBackendTest.php
new file mode 100644
index 00000000..a618889c
--- /dev/null
+++ b/tests/phpunit/includes/filebackend/SwiftFileBackendTest.php
@@ -0,0 +1,148 @@
+<?php
+
+/**
+ * @group FileRepo
+ * @group FileBackend
+ * @group medium
+ */
+class SwiftFileBackendTest extends MediaWikiTestCase {
+ /** @var TestingAccessWrapper Proxy to SwiftFileBackend */
+ private $backend;
+
+ protected function setUp() {
+ parent::setUp();
+
+ $this->backend = TestingAccessWrapper::newFromObject(
+ new SwiftFileBackend( array(
+ 'name' => 'local-swift-testing',
+ 'class' => 'SwiftFileBackend',
+ 'wikiId' => 'unit-testing',
+ 'lockManager' => LockManagerGroup::singleton()->get( 'fsLockManager' ),
+ 'swiftAuthUrl' => 'http://127.0.0.1:8080/auth', // unused
+ 'swiftUser' => 'test:tester',
+ 'swiftKey' => 'testing',
+ 'swiftTempUrlKey' => 'b3968d0207b54ece87cccc06515a89d4' // unused
+ ) )
+ );
+ }
+
+ /**
+ * @dataProvider provider_testSanitzeHdrs
+ * @covers SwiftFileBackend::sanitzeHdrs
+ * @covers SwiftFileBackend::getCustomHeaders
+ */
+ public function testSanitzeHdrs( $raw, $sanitized ) {
+ $hdrs = $this->backend->sanitizeHdrs( array( 'headers' => $raw ) );
+
+ $this->assertEquals( $hdrs, $sanitized, 'sanitizeHdrs() has expected result' );
+ }
+
+ public static function provider_testSanitzeHdrs() {
+ return array(
+ array(
+ array(
+ 'content-length' => 345,
+ 'content-type' => 'image+bitmap/jpeg',
+ 'content-disposition' => 'inline',
+ 'content-duration' => 35.6363,
+ 'content-Custom' => 'hello',
+ 'x-content-custom' => 'hello'
+ ),
+ array(
+ 'content-disposition' => 'inline',
+ 'content-duration' => 35.6363,
+ 'content-custom' => 'hello',
+ 'x-content-custom' => 'hello'
+ )
+ ),
+ array(
+ array(
+ 'content-length' => 345,
+ 'content-type' => 'image+bitmap/jpeg',
+ 'content-Disposition' => 'inline; filename=xxx; ' . str_repeat( 'o', 1024 ),
+ 'content-duration' => 35.6363,
+ 'content-custom' => 'hello',
+ 'x-content-custom' => 'hello'
+ ),
+ array(
+ 'content-disposition' => 'inline;filename=xxx',
+ 'content-duration' => 35.6363,
+ 'content-custom' => 'hello',
+ 'x-content-custom' => 'hello'
+ )
+ ),
+ array(
+ array(
+ 'content-length' => 345,
+ 'content-type' => 'image+bitmap/jpeg',
+ 'content-disposition' => 'filename='. str_repeat( 'o', 1024 ) . ';inline',
+ 'content-duration' => 35.6363,
+ 'content-custom' => 'hello',
+ 'x-content-custom' => 'hello'
+ ),
+ array(
+ 'content-disposition' => '',
+ 'content-duration' => 35.6363,
+ 'content-custom' => 'hello',
+ 'x-content-custom' => 'hello'
+ )
+ )
+ );
+ }
+
+ /**
+ * @dataProvider provider_testGetMetadataHeaders
+ * @covers SwiftFileBackend::getMetadataHeaders
+ */
+ public function testGetMetadataHeaders( $raw, $sanitized ) {
+ $hdrs = $this->backend->getMetadataHeaders( $raw );
+
+ $this->assertEquals( $hdrs, $sanitized, 'getMetadataHeaders() has expected result' );
+ }
+
+ public static function provider_testGetMetadataHeaders() {
+ return array(
+ array(
+ array(
+ 'content-length' => 345,
+ 'content-custom' => 'hello',
+ 'x-content-custom' => 'hello',
+ 'x-object-meta-custom' => 5,
+ 'x-object-meta-sha1Base36' => 'a3deadfg...',
+ ),
+ array(
+ 'x-object-meta-custom' => 5,
+ 'x-object-meta-sha1base36' => 'a3deadfg...',
+ )
+ )
+ );
+ }
+
+ /**
+ * @dataProvider provider_testGetMetadata
+ * @covers SwiftFileBackend::getMetadata
+ */
+ public function testGetMetadata( $raw, $sanitized ) {
+ $hdrs = $this->backend->getMetadata( $raw );
+
+ $this->assertEquals( $hdrs, $sanitized, 'getMetadata() has expected result' );
+ }
+
+ public static function provider_testGetMetadata() {
+ return array(
+ array(
+ array(
+ 'content-length' => 345,
+ 'content-custom' => 'hello',
+ 'x-content-custom' => 'hello',
+ 'x-object-meta-custom' => 5,
+ 'x-object-meta-sha1Base36' => 'a3deadfg...',
+ ),
+ array(
+ 'custom' => 5,
+ 'sha1base36' => 'a3deadfg...',
+ )
+ )
+ );
+ }
+} \ No newline at end of file