X-Git-Url: https://scripts.mit.edu/gitweb/autoinstallsdev/mediawiki.git/blobdiff_plain/d57edfddd6c01f0ed6b1a84019649cdf6cddd5f8..83d871ca0d985c6d586b323bf96161afb510ebf6:/tests/phpunit/includes/utils/FileContentsHasherTest.php diff --git a/tests/phpunit/includes/utils/FileContentsHasherTest.php b/tests/phpunit/includes/utils/FileContentsHasherTest.php new file mode 100644 index 00000000..0ee4c134 --- /dev/null +++ b/tests/phpunit/includes/utils/FileContentsHasherTest.php @@ -0,0 +1,55 @@ +provideSingleFile() ] + ]; + } + + /** + * @covers FileContentsHasher::getFileContentsHash + * @covers FileContentsHasher::getFileContentsHashInternal + * @dataProvider provideSingleFile + */ + public function testSingleFileHash( $fileName, $contents ) { + foreach ( [ 'md4', 'md5' ] as $algo ) { + $expectedHash = hash( $algo, $contents ); + $actualHash = FileContentsHasher::getFileContentsHash( $fileName, $algo ); + $this->assertEquals( $expectedHash, $actualHash ); + $actualHashRepeat = FileContentsHasher::getFileContentsHash( $fileName, $algo ); + $this->assertEquals( $expectedHash, $actualHashRepeat ); + } + } + + /** + * @covers FileContentsHasher::getFileContentsHash + * @covers FileContentsHasher::getFileContentsHashInternal + * @dataProvider provideMultipleFiles + */ + public function testMultipleFileHash( $files ) { + $fileNames = []; + $hashes = []; + foreach ( $files as $fileInfo ) { + list( $fileName, $contents ) = $fileInfo; + $fileNames[] = $fileName; + $hashes[] = md5( $contents ); + } + + $expectedHash = md5( implode( '', $hashes ) ); + $actualHash = FileContentsHasher::getFileContentsHash( $fileNames, 'md5' ); + $this->assertEquals( $expectedHash, $actualHash ); + $actualHashRepeat = FileContentsHasher::getFileContentsHash( $fileNames, 'md5' ); + $this->assertEquals( $expectedHash, $actualHashRepeat ); + } +}