From b256732c2da080b3910ca6be2e72d8254948fab6 Mon Sep 17 00:00:00 2001 From: Milos Stojanovic Date: Fri, 31 Dec 2021 11:35:55 +0100 Subject: [PATCH] missing tests, changelog #293 --- CHANGELOG.md | 1 + tests/backend/Unit/FilesystemTest.php | 55 +++++++++++++++++++++++++++ 2 files changed, 56 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2fcf2f0..e69e4b4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ # Changelog ## Upcoming... +* Fix file deletion error when overwrite on upload #293 (Thanks iwiniwin) ## 7.7.0 - 2021-09-27 diff --git a/tests/backend/Unit/FilesystemTest.php b/tests/backend/Unit/FilesystemTest.php index 0b057d7..97a1568 100644 --- a/tests/backend/Unit/FilesystemTest.php +++ b/tests/backend/Unit/FilesystemTest.php @@ -292,6 +292,61 @@ class FilesystemTest extends TestCase $this->assertEquals('croissant', stream_get_contents($ret['stream'])); } + public function testStoringFileWithTheSameNameUpcountsSecondFilenameUsingPathPrefix() + { + $this->storage->setPathPrefix('/john/'); + + // create dummy file + file_put_contents(TEST_FILE, 'lorem ipsum'); + + $resource = fopen(TEST_FILE, 'r'); + $this->storage->store('/', 'singletone.txt', $resource); + fclose($resource); + + // create another dummy file witht the same name but different content + file_put_contents(TEST_FILE, 'croissant'); + + $resource = fopen(TEST_FILE, 'r'); + $this->storage->store('/', 'singletone.txt', $resource); + fclose($resource); + + // first file is not overwritten + $ret = $this->storage->readStream('singletone.txt'); + $this->assertEquals('lorem ipsum', stream_get_contents($ret['stream'])); + + // second file is also here but with upcounted name + $ret = $this->storage->readStream('singletone (1).txt'); + $this->assertEquals('croissant', stream_get_contents($ret['stream'])); + } + + public function testStoringFileWithTheSameNameOverwritesOriginalFileUsingPathPrefix() + { + $this->storage->setPathPrefix('/john/'); + + // create dummy file + $string = 'lorem ipsum'; + $resource = fopen('data://text/plain;base64,'.base64_encode($string), 'r'); + + // and store it + $this->storage->store('/', 'singletone.txt', $resource); + fclose($resource); + + // first file contains lorem ipsum + $ret = $this->storage->readStream('singletone.txt'); + $this->assertEquals('lorem ipsum', stream_get_contents($ret['stream'])); + + // create another dummy file + $string = 'croissant'; + $resource = fopen('data://text/plain;base64,'.base64_encode($string), 'r'); + + // and store it with the same name + $this->storage->store('/', 'singletone.txt', $resource, true); + fclose($resource); + + // first file is overwritten + $ret = $this->storage->readStream('singletone.txt'); + $this->assertEquals('croissant', stream_get_contents($ret['stream'])); + } public function testCreatingFileWithTheSameNameUpcountsFilenameRecursively() { $this->storage->createFile('/', 'test.txt');