From 6cef0373c7a30546c1d2ccb1546e006a8dcce247 Mon Sep 17 00:00:00 2001 From: Aaron Schulz Date: Wed, 29 Jul 2015 18:57:23 -0700 Subject: [PATCH] Added sanitizeHdrs() tests for Swift Change-Id: I2e3c3225c729e5220ca16f6ef4518da49e7f721c --- includes/filebackend/SwiftFileBackend.php | 1 + .../filebackend/SwiftFileBackendTest.php | 91 +++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 tests/phpunit/includes/filebackend/SwiftFileBackendTest.php diff --git a/includes/filebackend/SwiftFileBackend.php b/includes/filebackend/SwiftFileBackend.php index 3db235b192..dca1b4c18a 100644 --- a/includes/filebackend/SwiftFileBackend.php +++ b/includes/filebackend/SwiftFileBackend.php @@ -197,6 +197,7 @@ class SwiftFileBackend extends FileBackendStore { // By default, Swift has annoyingly low maximum header value limits if ( isset( $headers['content-disposition'] ) ) { $disposition = ''; + // @note: assume FileBackend::makeContentDisposition() already used foreach ( explode( ';', $headers['content-disposition'] ) as $part ) { $part = trim( $part ); $new = ( $disposition === '' ) ? $part : "{$disposition};{$part}"; diff --git a/tests/phpunit/includes/filebackend/SwiftFileBackendTest.php b/tests/phpunit/includes/filebackend/SwiftFileBackendTest.php new file mode 100644 index 0000000000..38000f6c84 --- /dev/null +++ b/tests/phpunit/includes/filebackend/SwiftFileBackendTest.php @@ -0,0 +1,91 @@ +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 + */ + 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' + ) + ) + ); + } +} \ No newline at end of file -- 2.20.1