summaryrefslogtreecommitdiff
path: root/tests/units/Core/FileStorageTest.php
diff options
context:
space:
mode:
authorFrederic Guillot <fred@kanboard.net>2015-10-03 15:55:20 -0400
committerFrederic Guillot <fred@kanboard.net>2015-10-03 15:55:20 -0400
commitd7c0fabcb79fd72993cd00fe00d49bc5656bc204 (patch)
tree5ca0fe4a53a8552a41e33b8141e1eb8ea4d97b31 /tests/units/Core/FileStorageTest.php
parentaeab662d65cdadc044b89c332591b1f1d5b90823 (diff)
Add unit test for FileStorage
Diffstat (limited to 'tests/units/Core/FileStorageTest.php')
-rw-r--r--tests/units/Core/FileStorageTest.php310
1 files changed, 310 insertions, 0 deletions
diff --git a/tests/units/Core/FileStorageTest.php b/tests/units/Core/FileStorageTest.php
new file mode 100644
index 00000000..2475b547
--- /dev/null
+++ b/tests/units/Core/FileStorageTest.php
@@ -0,0 +1,310 @@
+<?php
+
+namespace Core\ObjectStorage;
+
+require_once __DIR__.'/../Base.php';
+
+function file_put_contents($filename, $data)
+{
+ return FileStorageTest::$functions->file_put_contents($filename, $data);
+}
+
+function file_get_contents($filename)
+{
+ return FileStorageTest::$functions->file_get_contents($filename);
+}
+
+function mkdir($filename, $mode, $recursif)
+{
+ return FileStorageTest::$functions->mkdir($filename, $mode, $recursif);
+}
+
+function is_dir($filename)
+{
+ return FileStorageTest::$functions->is_dir($filename);
+}
+
+function file_exists($filename)
+{
+ return FileStorageTest::$functions->file_exists($filename);
+}
+
+function unlink($filename)
+{
+ return FileStorageTest::$functions->unlink($filename);
+}
+
+function readfile($filename)
+{
+ echo FileStorageTest::$functions->readfile($filename);
+}
+
+function rename($src, $dst)
+{
+ return FileStorageTest::$functions->rename($src, $dst);
+}
+
+function move_uploaded_file($src, $dst)
+{
+ return FileStorageTest::$functions->move_uploaded_file($src, $dst);
+}
+
+class FileStorageTest extends \Base
+{
+ public static $functions;
+
+ public function setUp()
+ {
+ parent::setup();
+
+ self::$functions = $this
+ ->getMockBuilder('stdClass')
+ ->setMethods(array(
+ 'file_put_contents',
+ 'file_get_contents',
+ 'file_exists',
+ 'mkdir',
+ 'is_dir',
+ 'unlink',
+ 'rename',
+ 'move_uploaded_file',
+ 'readfile',
+ ))
+ ->getMock();
+ }
+
+ public function tearDown()
+ {
+ parent::tearDown();
+ self::$functions = null;
+ }
+
+ public function testPut()
+ {
+ $data = 'data';
+ $storage = new FileStorage('somewhere');
+
+ self::$functions
+ ->expects($this->at(0))
+ ->method('is_dir')
+ ->with(
+ $this->equalTo('somewhere')
+ )
+ ->will($this->returnValue(false));
+
+ self::$functions
+ ->expects($this->at(1))
+ ->method('mkdir')
+ ->with(
+ $this->equalTo('somewhere')
+ )
+ ->will($this->returnValue(true));
+
+ self::$functions
+ ->expects($this->at(2))
+ ->method('file_put_contents')
+ ->with(
+ $this->equalTo('somewhere'.DIRECTORY_SEPARATOR.'mykey'),
+ $this->equalTo('data')
+ )
+ ->will($this->returnValue(true));
+
+ $storage->put('mykey', $data);
+ }
+
+ public function testPutWithSubfolder()
+ {
+ $data = 'data';
+ $storage = new FileStorage('somewhere');
+
+ self::$functions
+ ->expects($this->at(0))
+ ->method('is_dir')
+ ->with(
+ $this->equalTo('somewhere'.DIRECTORY_SEPARATOR.'my')
+ )
+ ->will($this->returnValue(false));
+
+ self::$functions
+ ->expects($this->at(1))
+ ->method('mkdir')
+ ->with(
+ $this->equalTo('somewhere'.DIRECTORY_SEPARATOR.'my')
+ )
+ ->will($this->returnValue(true));
+
+ self::$functions
+ ->expects($this->at(2))
+ ->method('file_put_contents')
+ ->with(
+ $this->equalTo('somewhere'.DIRECTORY_SEPARATOR.'my'.DIRECTORY_SEPARATOR.'key'),
+ $this->equalTo('data')
+ )
+ ->will($this->returnValue(true));
+
+ $storage->put('my'.DIRECTORY_SEPARATOR.'key', $data);
+ }
+
+ /**
+ * @expectedException \Core\ObjectStorage\ObjectStorageException
+ */
+ public function testPutWhenNotAbleToCreateFolder()
+ {
+ $data = 'data';
+ $storage = new FileStorage('somewhere');
+
+ self::$functions
+ ->expects($this->at(0))
+ ->method('is_dir')
+ ->with(
+ $this->equalTo('somewhere')
+ )
+ ->will($this->returnValue(false));
+
+ self::$functions
+ ->expects($this->at(1))
+ ->method('mkdir')
+ ->with(
+ $this->equalTo('somewhere')
+ )
+ ->will($this->returnValue(false));
+
+ $storage->put('mykey', $data);
+ }
+
+ public function testGet()
+ {
+ $storage = new FileStorage('somewhere');
+
+ self::$functions
+ ->expects($this->at(0))
+ ->method('file_exists')
+ ->with(
+ $this->equalTo('somewhere'.DIRECTORY_SEPARATOR.'mykey')
+ )
+ ->will($this->returnValue(true));
+
+ self::$functions
+ ->expects($this->at(1))
+ ->method('file_get_contents')
+ ->with(
+ $this->equalTo('somewhere'.DIRECTORY_SEPARATOR.'mykey')
+ )
+ ->will($this->returnValue('data'));
+
+ $this->assertEquals('data', $storage->get('mykey'));
+ }
+
+ /**
+ * @expectedException \Core\ObjectStorage\ObjectStorageException
+ */
+ public function testGetWithFileNotFound()
+ {
+ $storage = new FileStorage('somewhere');
+
+ self::$functions
+ ->expects($this->at(0))
+ ->method('file_exists')
+ ->with(
+ $this->equalTo('somewhere'.DIRECTORY_SEPARATOR.'mykey')
+ )
+ ->will($this->returnValue(false));
+
+ $this->assertEquals('data', $storage->get('mykey'));
+ }
+
+ public function testOutput()
+ {
+ $storage = new FileStorage('somewhere');
+
+ self::$functions
+ ->expects($this->at(0))
+ ->method('file_exists')
+ ->with(
+ $this->equalTo('somewhere'.DIRECTORY_SEPARATOR.'mykey')
+ )
+ ->will($this->returnValue(true));
+
+ self::$functions
+ ->expects($this->at(1))
+ ->method('readfile')
+ ->with(
+ $this->equalTo('somewhere'.DIRECTORY_SEPARATOR.'mykey')
+ )
+ ->will($this->returnValue('data'));
+
+ $this->expectOutputString('data');
+ $storage->output('mykey');
+ }
+
+ public function testRemove()
+ {
+ $storage = new FileStorage('somewhere');
+
+ self::$functions
+ ->expects($this->at(0))
+ ->method('file_exists')
+ ->with(
+ $this->equalTo('somewhere'.DIRECTORY_SEPARATOR.'mykey')
+ )
+ ->will($this->returnValue(true));
+
+ self::$functions
+ ->expects($this->at(1))
+ ->method('unlink')
+ ->with(
+ $this->equalTo('somewhere'.DIRECTORY_SEPARATOR.'mykey')
+ )
+ ->will($this->returnValue(true));
+
+ $this->assertTrue($storage->remove('mykey'));
+ }
+
+ public function testMoveFile()
+ {
+ $storage = new FileStorage('somewhere');
+
+ self::$functions
+ ->expects($this->at(0))
+ ->method('is_dir')
+ ->with(
+ $this->equalTo('somewhere')
+ )
+ ->will($this->returnValue(true));
+
+ self::$functions
+ ->expects($this->at(1))
+ ->method('rename')
+ ->with(
+ $this->equalTo('src_file'),
+ $this->equalTo('somewhere'.DIRECTORY_SEPARATOR.'mykey')
+ )
+ ->will($this->returnValue(true));
+
+ $this->assertTrue($storage->moveFile('src_file', 'mykey'));
+ }
+
+ public function testMoveUploadedFile()
+ {
+ $storage = new FileStorage('somewhere');
+
+ self::$functions
+ ->expects($this->at(0))
+ ->method('is_dir')
+ ->with(
+ $this->equalTo('somewhere')
+ )
+ ->will($this->returnValue(true));
+
+ self::$functions
+ ->expects($this->at(1))
+ ->method('move_uploaded_file')
+ ->with(
+ $this->equalTo('src_file'),
+ $this->equalTo('somewhere'.DIRECTORY_SEPARATOR.'mykey')
+ )
+ ->will($this->returnValue(true));
+
+ $this->assertTrue($storage->moveUploadedFile('src_file', 'mykey'));
+ }
+}