]> source.dussan.org Git - nextcloud-server.git/commitdiff
make objectstore tests check fileid on rename
authorJörn Friedrich Dreyer <jfd@butonic.de>
Mon, 8 Sep 2014 10:53:42 +0000 (12:53 +0200)
committerJörn Friedrich Dreyer <jfd@butonic.de>
Mon, 8 Sep 2014 10:53:52 +0000 (12:53 +0200)
tests/lib/files/objectstore/swift.php

index 900367553d7d22db02e3b2afe627d205add6687c..37d6cc74de666cf7d7963a1ecbefbfd41ee391a5 100644 (file)
@@ -111,4 +111,87 @@ class Swift extends \Test\Files\Storage\Storage {
                }
        }
 
+       /**
+        * @dataProvider copyAndMoveProvider
+        */
+       public function testMove($source, $target) {
+               $this->initSourceAndTarget($source);
+               $sourceId = $this->instance->getCache()->getId(ltrim('/',$source));
+               $this->assertNotEquals(-1, $sourceId);
+
+               $this->instance->rename($source, $target);
+
+               $this->assertTrue($this->instance->file_exists($target), $target.' was not created');
+               $this->assertFalse($this->instance->file_exists($source), $source.' still exists');
+               $this->assertSameAsLorem($target);
+
+               $targetId = $this->instance->getCache()->getId(ltrim('/',$target));
+               $this->assertSame($sourceId, $targetId, 'fileid must be stable on move or shares will break');
+       }
+
+       public function testRenameDirectory() {
+               $this->instance->mkdir('source');
+               $this->instance->file_put_contents('source/test1.txt', 'foo');
+               $this->instance->file_put_contents('source/test2.txt', 'qwerty');
+               $this->instance->mkdir('source/subfolder');
+               $this->instance->file_put_contents('source/subfolder/test.txt', 'bar');
+               $sourceId = $this->instance->getCache()->getId('source');
+               $this->assertNotEquals(-1, $sourceId);
+               $this->instance->rename('source', 'target');
+
+               $this->assertFalse($this->instance->file_exists('source'));
+               $this->assertFalse($this->instance->file_exists('source/test1.txt'));
+               $this->assertFalse($this->instance->file_exists('source/test2.txt'));
+               $this->assertFalse($this->instance->file_exists('source/subfolder'));
+               $this->assertFalse($this->instance->file_exists('source/subfolder/test.txt'));
+
+               $this->assertTrue($this->instance->file_exists('target'));
+               $this->assertTrue($this->instance->file_exists('target/test1.txt'));
+               $this->assertTrue($this->instance->file_exists('target/test2.txt'));
+               $this->assertTrue($this->instance->file_exists('target/subfolder'));
+               $this->assertTrue($this->instance->file_exists('target/subfolder/test.txt'));
+
+               $this->assertEquals('foo', $this->instance->file_get_contents('target/test1.txt'));
+               $this->assertEquals('qwerty', $this->instance->file_get_contents('target/test2.txt'));
+               $this->assertEquals('bar', $this->instance->file_get_contents('target/subfolder/test.txt'));
+               $targetId = $this->instance->getCache()->getId('target');
+               $this->assertSame($sourceId, $targetId, 'fileid must be stable on move or shares will break');
+       }
+
+       public function testRenameOverWriteDirectory() {
+               $this->instance->mkdir('source');
+               $this->instance->file_put_contents('source/test1.txt', 'foo');
+               $sourceId = $this->instance->getCache()->getId('source');
+               $this->assertNotEquals(-1, $sourceId);
+
+               $this->instance->mkdir('target');
+               $this->instance->file_put_contents('target/test1.txt', 'bar');
+               $this->instance->file_put_contents('target/test2.txt', 'bar');
+
+               $this->instance->rename('source', 'target');
+
+               $this->assertFalse($this->instance->file_exists('source'));
+               $this->assertFalse($this->instance->file_exists('source/test1.txt'));
+               $this->assertFalse($this->instance->file_exists('target/test2.txt'));
+               $this->assertEquals('foo', $this->instance->file_get_contents('target/test1.txt'));
+               $targetId = $this->instance->getCache()->getId('target');
+               $this->assertSame($sourceId, $targetId, 'fileid must be stable on move or shares will break');
+       }
+
+       public function testRenameOverWriteDirectoryOverFile() {
+               $this->instance->mkdir('source');
+               $this->instance->file_put_contents('source/test1.txt', 'foo');
+               $sourceId = $this->instance->getCache()->getId('source');
+               $this->assertNotEquals(-1, $sourceId);
+
+               $this->instance->file_put_contents('target', 'bar');
+
+               $this->instance->rename('source', 'target');
+
+               $this->assertFalse($this->instance->file_exists('source'));
+               $this->assertFalse($this->instance->file_exists('source/test1.txt'));
+               $this->assertEquals('foo', $this->instance->file_get_contents('target/test1.txt'));
+               $targetId = $this->instance->getCache()->getId('target');
+               $this->assertSame($sourceId, $targetId, 'fileid must be stable on move or shares will break');
+       }
 }