diff --git a/lib/private/files/node/file.php b/lib/private/files/node/file.php
index 81e251c20b88ef1ebc64f9decd79d250d81d7c90..1c47294cdaecb31b25a5fc0ba1eb299453b7de6d 100644
--- a/lib/private/files/node/file.php
+++ b/lib/private/files/node/file.php
@@ -34,19 +34,13 @@ class File extends Node implements \OCP\Files\File {
 		if ($this->checkPermissions(\OCP\Constants::PERMISSION_UPDATE)) {
 			$this->sendHooks(array('preWrite'));
 			$this->view->file_put_contents($this->path, $data);
+			$this->fileInfo = null;
 			$this->sendHooks(array('postWrite'));
 		} else {
 			throw new NotPermittedException();
 		}
 	}
 
-	/**
-	 * @return string
-	 */
-	public function getMimeType() {
-		return $this->view->getMimeType($this->path);
-	}
-
 	/**
 	 * @param string $mode
 	 * @return resource
@@ -94,6 +88,7 @@ class File extends Node implements \OCP\Files\File {
 			$nonExisting = new NonExistingFile($this->root, $this->view, $this->path);
 			$this->root->emit('\OC\Files', 'postDelete', array($nonExisting));
 			$this->exists = false;
+			$this->fileInfo = null;
 		} else {
 			throw new NotPermittedException();
 		}
@@ -138,6 +133,7 @@ class File extends Node implements \OCP\Files\File {
 			$this->root->emit('\OC\Files', 'postRename', array($this, $targetNode));
 			$this->root->emit('\OC\Files', 'postWrite', array($targetNode));
 			$this->path = $targetPath;
+			$this->fileInfo = null;
 			return $targetNode;
 		} else {
 			throw new NotPermittedException();
diff --git a/lib/private/files/node/folder.php b/lib/private/files/node/folder.php
index 83e20871528ed866ed4f5c49033a258ae77a2051..54a699be532d9371bfcb95a0573316a53657d911 100644
--- a/lib/private/files/node/folder.php
+++ b/lib/private/files/node/folder.php
@@ -321,13 +321,6 @@ class Folder extends Node implements \OCP\Files\Folder {
 		return $this->view->free_space($this->path);
 	}
 
-	/**
-	 * @return bool
-	 */
-	public function isCreatable() {
-		return $this->checkPermissions(\OCP\Constants::PERMISSION_CREATE);
-	}
-
 	public function delete() {
 		if ($this->checkPermissions(\OCP\Constants::PERMISSION_DELETE)) {
 			$this->sendHooks(array('preDelete'));
diff --git a/lib/private/files/node/node.php b/lib/private/files/node/node.php
index c52f5bbd54fd783014664277f4f036eee928b30e..b80db28e8ec7cf6431c59cdca0daa8342faf50e3 100644
--- a/lib/private/files/node/node.php
+++ b/lib/private/files/node/node.php
@@ -8,10 +8,10 @@
 
 namespace OC\Files\Node;
 
-use OCP\Files\NotFoundException;
+use OCP\Files\FileInfo;
 use OCP\Files\NotPermittedException;
 
-class Node implements \OCP\Files\Node {
+class Node implements \OCP\Files\Node, FileInfo {
 	/**
 	 * @var \OC\Files\View $view
 	 */
@@ -27,6 +27,11 @@ class Node implements \OCP\Files\Node {
 	 */
 	protected $path;
 
+	/**
+	 * @var \OCP\Files\FileInfo
+	 */
+	protected $fileInfo;
+
 	/**
 	 * @param \OC\Files\View $view
 	 * @param \OC\Files\Node\Root $root
@@ -38,6 +43,13 @@ class Node implements \OCP\Files\Node {
 		$this->path = $path;
 	}
 
+	private function getFileInfo() {
+		if (!$this->fileInfo) {
+			$this->fileInfo = $this->view->getFileInfo($this->path);
+		}
+		return $this->fileInfo;
+	}
+
 	/**
 	 * @param string[] $hooks
 	 */
@@ -85,6 +97,12 @@ class Node implements \OCP\Files\Node {
 			$this->sendHooks(array('preTouch'));
 			$this->view->touch($this->path, $mtime);
 			$this->sendHooks(array('postTouch'));
+			if ($this->fileInfo) {
+				if (is_null($mtime)) {
+					$mtime = time();
+				}
+				$this->fileInfo['mtime'] = $mtime;
+			}
 		} else {
 			throw new NotPermittedException();
 		}
@@ -118,8 +136,7 @@ class Node implements \OCP\Files\Node {
 	 * @return int
 	 */
 	public function getId() {
-		$info = $this->view->getFileInfo($this->path);
-		return $info['fileid'];
+		return $this->getFileInfo()->getId();
 	}
 
 	/**
@@ -133,58 +150,60 @@ class Node implements \OCP\Files\Node {
 	 * @return int
 	 */
 	public function getMTime() {
-		return $this->view->filemtime($this->path);
+		return $this->getFileInfo()->getMTime();
 	}
 
 	/**
 	 * @return int
 	 */
 	public function getSize() {
-		return $this->view->filesize($this->path);
+		return $this->getFileInfo()->getSize();
 	}
 
 	/**
 	 * @return string
 	 */
 	public function getEtag() {
-		$info = $this->view->getFileInfo($this->path);
-		return $info['etag'];
+		return $this->getFileInfo()->getEtag();
 	}
 
 	/**
 	 * @return int
 	 */
 	public function getPermissions() {
-		$info = $this->view->getFileInfo($this->path);
-		return $info['permissions'];
+		return $this->getFileInfo()->getPermissions();
 	}
 
 	/**
 	 * @return bool
 	 */
 	public function isReadable() {
-		return $this->checkPermissions(\OCP\Constants::PERMISSION_READ);
+		return $this->getFileInfo()->isReadable();
 	}
 
 	/**
 	 * @return bool
 	 */
 	public function isUpdateable() {
-		return $this->checkPermissions(\OCP\Constants::PERMISSION_UPDATE);
+		return $this->getFileInfo()->isUpdateable();
 	}
 
 	/**
 	 * @return bool
 	 */
 	public function isDeletable() {
-		return $this->checkPermissions(\OCP\Constants::PERMISSION_DELETE);
+		return $this->getFileInfo()->isDeletable();
 	}
 
 	/**
 	 * @return bool
 	 */
 	public function isShareable() {
-		return $this->checkPermissions(\OCP\Constants::PERMISSION_SHARE);
+		return $this->getFileInfo()->isShareable();
+	}
+
+	public function isCreatable() {
+		return $this->getFileInfo()->isCreatable();
 	}
 
 	/**
@@ -240,4 +259,28 @@ class Node implements \OCP\Files\Node {
 		}
 		return true;
 	}
+
+	public function isMounted() {
+		return $this->getFileInfo()->isMounted();
+	}
+
+	public function isShared() {
+		return $this->getFileInfo()->isShared();
+	}
+
+	public function getMimeType() {
+		return $this->getFileInfo()->getMimetype();
+	}
+
+	public function getMimePart() {
+		return $this->getFileInfo()->getMimePart();
+	}
+
+	public function getType() {
+		return $this->getFileInfo()->getType();
+	}
+
+	public function isEncrypted() {
+		return $this->getFileInfo()->isEncrypted();
+	}
 }
diff --git a/tests/lib/files/node/file.php b/tests/lib/files/node/file.php
index 1ae312ab5a85301937a761c562986b339775329b..a1d2266edf7856be2b3b6d88c571e9765c46c453 100644
--- a/tests/lib/files/node/file.php
+++ b/tests/lib/files/node/file.php
@@ -8,6 +8,7 @@
 
 namespace Test\Files\Node;
 
+use OC\Files\FileInfo;
 use OCP\Files\NotFoundException;
 use OCP\Files\NotPermittedException;
 use OC\Files\View;
@@ -20,6 +21,10 @@ class File extends \Test\TestCase {
 		$this->user = new \OC\User\User('', new \OC_User_Dummy);
 	}
 
+	protected function getFileInfo($data) {
+		return new FileInfo('', null, '', $data);
+	}
+
 	public function testDelete() {
 		$manager = $this->getMock('\OC\Files\Mount\Manager');
 
@@ -39,7 +44,7 @@ class File extends \Test\TestCase {
 		$view->expects($this->once())
 			->method('getFileInfo')
 			->with('/bar/foo')
-			->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_ALL)));
+			->will($this->returnValue($this->getFileInfo(array('permissions' => \OCP\Constants::PERMISSION_ALL))));
 
 		$view->expects($this->once())
 			->method('unlink')
@@ -89,7 +94,7 @@ class File extends \Test\TestCase {
 		$view->expects($this->any())
 			->method('getFileInfo')
 			->with('/bar/foo')
-			->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_ALL, 'fileid' => 1)));
+			->will($this->returnValue($this->getFileInfo(array('permissions' => \OCP\Constants::PERMISSION_ALL, 'fileid' => 1))));
 
 		$view->expects($this->once())
 			->method('unlink')
@@ -124,7 +129,7 @@ class File extends \Test\TestCase {
 		$view->expects($this->once())
 			->method('getFileInfo')
 			->with('/bar/foo')
-			->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_READ)));
+			->will($this->returnValue($this->getFileInfo(array('permissions' => \OCP\Constants::PERMISSION_READ))));
 
 		$node = new \OC\Files\Node\File($root, $view, '/bar/foo');
 		$node->delete();
@@ -156,7 +161,7 @@ class File extends \Test\TestCase {
 		$view->expects($this->once())
 			->method('getFileInfo')
 			->with('/bar/foo')
-			->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_READ)));
+			->will($this->returnValue($this->getFileInfo(array('permissions' => \OCP\Constants::PERMISSION_READ))));
 
 		$node = new \OC\Files\Node\File($root, $view, '/bar/foo');
 		$this->assertEquals('bar', $node->getContent());
@@ -180,7 +185,7 @@ class File extends \Test\TestCase {
 		$view->expects($this->once())
 			->method('getFileInfo')
 			->with('/bar/foo')
-			->will($this->returnValue(array('permissions' => 0)));
+			->will($this->returnValue($this->getFileInfo(array('permissions' => 0))));
 
 		$node = new \OC\Files\Node\File($root, $view, '/bar/foo');
 		$node->getContent();
@@ -201,7 +206,7 @@ class File extends \Test\TestCase {
 		$view->expects($this->once())
 			->method('getFileInfo')
 			->with('/bar/foo')
-			->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_ALL)));
+			->will($this->returnValue($this->getFileInfo(array('permissions' => \OCP\Constants::PERMISSION_ALL))));
 
 		$view->expects($this->once())
 			->method('file_put_contents')
@@ -226,7 +231,7 @@ class File extends \Test\TestCase {
 		$view->expects($this->once())
 			->method('getFileInfo')
 			->with('/bar/foo')
-			->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_READ)));
+			->will($this->returnValue($this->getFileInfo(array('permissions' => \OCP\Constants::PERMISSION_READ))));
 
 		$node = new \OC\Files\Node\File($root, $view, '/bar/foo');
 		$node->putContent('bar');
@@ -241,9 +246,9 @@ class File extends \Test\TestCase {
 		$root = $this->getMock('\OC\Files\Node\Root', array(), array($manager, $view, $this->user));
 
 		$view->expects($this->once())
-			->method('getMimeType')
+			->method('getFileInfo')
 			->with('/bar/foo')
-			->will($this->returnValue('text/plain'));
+			->will($this->returnValue($this->getFileInfo(array('mimetype' => 'text/plain'))));
 
 		$node = new \OC\Files\Node\File($root, $view, '/bar/foo');
 		$this->assertEquals('text/plain', $node->getMimeType());
@@ -279,7 +284,7 @@ class File extends \Test\TestCase {
 		$view->expects($this->once())
 			->method('getFileInfo')
 			->with('/bar/foo')
-			->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_ALL)));
+			->will($this->returnValue($this->getFileInfo(array('permissions' => \OCP\Constants::PERMISSION_ALL))));
 
 		$node = new \OC\Files\Node\File($root, $view, '/bar/foo');
 		$fh = $node->fopen('r');
@@ -316,7 +321,7 @@ class File extends \Test\TestCase {
 		$view->expects($this->once())
 			->method('getFileInfo')
 			->with('/bar/foo')
-			->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_ALL)));
+			->will($this->returnValue($this->getFileInfo(array('permissions' => \OCP\Constants::PERMISSION_ALL))));
 
 		$node = new \OC\Files\Node\File($root, $view, '/bar/foo');
 		$fh = $node->fopen('w');
@@ -348,7 +353,7 @@ class File extends \Test\TestCase {
 		$view->expects($this->once())
 			->method('getFileInfo')
 			->with('/bar/foo')
-			->will($this->returnValue(array('permissions' => 0)));
+			->will($this->returnValue($this->getFileInfo(array('permissions' => 0))));
 
 		$node = new \OC\Files\Node\File($root, $view, '/bar/foo');
 		$node->fopen('r');
@@ -375,7 +380,7 @@ class File extends \Test\TestCase {
 		$view->expects($this->once())
 			->method('getFileInfo')
 			->with('/bar/foo')
-			->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_UPDATE)));
+			->will($this->returnValue($this->getFileInfo(array('permissions' => \OCP\Constants::PERMISSION_UPDATE))));
 
 		$node = new \OC\Files\Node\File($root, $view, '/bar/foo');
 		$node->fopen('w');
@@ -402,7 +407,7 @@ class File extends \Test\TestCase {
 		$view->expects($this->once())
 			->method('getFileInfo')
 			->with('/bar/foo')
-			->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_READ)));
+			->will($this->returnValue($this->getFileInfo(array('permissions' => \OCP\Constants::PERMISSION_READ))));
 
 		$node = new \OC\Files\Node\File($root, $view, '/bar/foo');
 		$node->fopen('w');
@@ -425,7 +430,7 @@ class File extends \Test\TestCase {
 
 		$view->expects($this->any())
 			->method('getFileInfo')
-			->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_ALL, 'fileid' => 3)));
+			->will($this->returnValue($this->getFileInfo(array('permissions' => \OCP\Constants::PERMISSION_ALL, 'fileid' => 3))));
 
 		$node = new \OC\Files\Node\File($root, $view, '/bar/foo');
 		$parentNode = new \OC\Files\Node\Folder($root, $view, '/bar');
@@ -469,7 +474,7 @@ class File extends \Test\TestCase {
 
 		$view->expects($this->any())
 			->method('getFileInfo')
-			->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_READ, 'fileid' => 3)));
+			->will($this->returnValue($this->getFileInfo(array('permissions' => \OCP\Constants::PERMISSION_READ, 'fileid' => 3))));
 
 		$node = new \OC\Files\Node\File($root, $view, '/bar/foo');
 		$parentNode = new \OC\Files\Node\Folder($root, $view, '/bar');
@@ -556,7 +561,7 @@ class File extends \Test\TestCase {
 
 		$view->expects($this->any())
 			->method('getFileInfo')
-			->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_ALL, 'fileid' => 1)));
+			->will($this->returnValue($this->getFileInfo(array('permissions' => \OCP\Constants::PERMISSION_ALL, 'fileid' => 1))));
 
 		$node = new \OC\Files\Node\File($root, $view, '/bar/foo');
 		$parentNode = new \OC\Files\Node\Folder($root, $view, '/bar');
@@ -587,7 +592,7 @@ class File extends \Test\TestCase {
 
 		$view->expects($this->any())
 			->method('getFileInfo')
-			->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_READ)));
+			->will($this->returnValue($this->getFileInfo(array('permissions' => \OCP\Constants::PERMISSION_READ))));
 
 		$view->expects($this->never())
 			->method('rename');
diff --git a/tests/lib/files/node/folder.php b/tests/lib/files/node/folder.php
index 91aa3b82db29583b476dfed440ee7cdf0b5ffb69..4aa57aa937393195e9b7b2f1b3704110fe487bd7 100644
--- a/tests/lib/files/node/folder.php
+++ b/tests/lib/files/node/folder.php
@@ -9,6 +9,7 @@
 namespace Test\Files\Node;
 
 use OC\Files\Cache\Cache;
+use OC\Files\FileInfo;
 use OC\Files\Mount\Mount;
 use OC\Files\Node\Node;
 use OCP\Files\NotFoundException;
@@ -23,6 +24,10 @@ class Folder extends \Test\TestCase {
 		$this->user = new \OC\User\User('', new \OC_User_Dummy);
 	}
 
+	protected function getFileInfo($data) {
+		return new FileInfo('', null, '', $data);
+	}
+
 	public function testDelete() {
 		$manager = $this->getMock('\OC\Files\Mount\Manager');
 		/**
@@ -39,7 +44,7 @@ class Folder extends \Test\TestCase {
 
 		$view->expects($this->any())
 			->method('getFileInfo')
-			->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_ALL)));
+			->will($this->returnValue($this->getFileInfo(array('permissions' => \OCP\Constants::PERMISSION_ALL))));
 
 		$view->expects($this->once())
 			->method('rmdir')
@@ -87,7 +92,7 @@ class Folder extends \Test\TestCase {
 
 		$view->expects($this->any())
 			->method('getFileInfo')
-			->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_ALL, 'fileid' => 1)));
+			->will($this->returnValue($this->getFileInfo(array('permissions' => \OCP\Constants::PERMISSION_ALL, 'fileid' => 1))));
 
 		$view->expects($this->once())
 			->method('rmdir')
@@ -121,7 +126,7 @@ class Folder extends \Test\TestCase {
 		$view->expects($this->once())
 			->method('getFileInfo')
 			->with('/bar/foo')
-			->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_READ)));
+			->will($this->returnValue($this->getFileInfo(array('permissions' => \OCP\Constants::PERMISSION_READ))));
 
 		$node = new \OC\Files\Node\Folder($root, $view, '/bar/foo');
 		$node->delete();
@@ -255,7 +260,7 @@ class Folder extends \Test\TestCase {
 		$view->expects($this->once())
 			->method('getFileInfo')
 			->with('/bar/foo')
-			->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_ALL)));
+			->will($this->returnValue($this->getFileInfo(array('permissions' => \OCP\Constants::PERMISSION_ALL))));
 
 		$view->expects($this->once())
 			->method('mkdir')
@@ -285,7 +290,7 @@ class Folder extends \Test\TestCase {
 		$view->expects($this->once())
 			->method('getFileInfo')
 			->with('/bar/foo')
-			->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_READ)));
+			->will($this->returnValue($this->getFileInfo(array('permissions' => \OCP\Constants::PERMISSION_READ))));
 
 		$node = new \OC\Files\Node\Folder($root, $view, '/bar/foo');
 		$node->newFolder('asd');
@@ -305,7 +310,7 @@ class Folder extends \Test\TestCase {
 		$view->expects($this->once())
 			->method('getFileInfo')
 			->with('/bar/foo')
-			->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_ALL)));
+			->will($this->returnValue($this->getFileInfo(array('permissions' => \OCP\Constants::PERMISSION_ALL))));
 
 		$view->expects($this->once())
 			->method('touch')
@@ -335,7 +340,7 @@ class Folder extends \Test\TestCase {
 		$view->expects($this->once())
 			->method('getFileInfo')
 			->with('/bar/foo')
-			->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_READ)));
+			->will($this->returnValue($this->getFileInfo(array('permissions' => \OCP\Constants::PERMISSION_READ))));
 
 		$node = new \OC\Files\Node\Folder($root, $view, '/bar/foo');
 		$node->newFile('asd');
diff --git a/tests/lib/files/node/node.php b/tests/lib/files/node/node.php
index 8820be5b0b2095f7559b1aa339aad8acc5d6c02f..4697479ba95af0801a40221da1dfd9ed41a96b32 100644
--- a/tests/lib/files/node/node.php
+++ b/tests/lib/files/node/node.php
@@ -8,6 +8,8 @@
 
 namespace Test\Files\Node;
 
+use OC\Files\FileInfo;
+
 class Node extends \Test\TestCase {
 	private $user;
 
@@ -16,6 +18,10 @@ class Node extends \Test\TestCase {
 		$this->user = new \OC\User\User('', new \OC_User_Dummy);
 	}
 
+	protected function getFileInfo($data) {
+		return new FileInfo('', null, '', $data);
+	}
+
 	public function testStat() {
 		$manager = $this->getMock('\OC\Files\Mount\Manager');
 		/**
@@ -55,12 +61,12 @@ class Node extends \Test\TestCase {
 			->method('getUser')
 			->will($this->returnValue($this->user));
 
-		$stat = array(
+		$stat = $this->getFileInfo(array(
 			'fileid' => 1,
 			'size' => 100,
 			'etag' => 'qwerty',
 			'mtime' => 50
-		);
+		));
 
 		$view->expects($this->once())
 			->method('getFileInfo')
@@ -82,10 +88,18 @@ class Node extends \Test\TestCase {
 			->method('getUser')
 			->will($this->returnValue($this->user));
 
+
+		$stat = $this->getFileInfo(array(
+			'fileid' => 1,
+			'size' => 100,
+			'etag' => 'qwerty',
+			'mtime' => 50
+		));
+
 		$view->expects($this->once())
-			->method('filesize')
+			->method('getFileInfo')
 			->with('/bar/foo')
-			->will($this->returnValue(100));
+			->will($this->returnValue($stat));
 
 		$node = new \OC\Files\Node\File($root, $view, '/bar/foo');
 		$this->assertEquals(100, $node->getSize());
@@ -102,12 +116,12 @@ class Node extends \Test\TestCase {
 			->method('getUser')
 			->will($this->returnValue($this->user));
 
-		$stat = array(
+		$stat = $this->getFileInfo(array(
 			'fileid' => 1,
 			'size' => 100,
 			'etag' => 'qwerty',
 			'mtime' => 50
-		);
+		));
 
 		$view->expects($this->once())
 			->method('getFileInfo')
@@ -128,15 +142,18 @@ class Node extends \Test\TestCase {
 		$root->expects($this->any())
 			->method('getUser')
 			->will($this->returnValue($this->user));
-		/**
-		 * @var \OC\Files\Storage\Storage | \PHPUnit_Framework_MockObject_MockObject $storage
-		 */
-		$storage = $this->getMock('\OC\Files\Storage\Storage');
+
+		$stat = $this->getFileInfo(array(
+			'fileid' => 1,
+			'size' => 100,
+			'etag' => 'qwerty',
+			'mtime' => 50
+		));
 
 		$view->expects($this->once())
-			->method('filemtime')
+			->method('getFileInfo')
 			->with('/bar/foo')
-			->will($this->returnValue(50));
+			->will($this->returnValue($stat));
 
 		$node = new \OC\Files\Node\File($root, $view, '/bar/foo');
 		$this->assertEquals(50, $node->getMTime());
@@ -238,15 +255,10 @@ class Node extends \Test\TestCase {
 			->with('/bar/foo', 100)
 			->will($this->returnValue(true));
 
-		$view->expects($this->once())
-			->method('filemtime')
-			->with('/bar/foo')
-			->will($this->returnValue(100));
-
 		$view->expects($this->once())
 			->method('getFileInfo')
 			->with('/bar/foo')
-			->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_ALL)));
+			->will($this->returnValue($this->getFileInfo(array('permissions' => \OCP\Constants::PERMISSION_ALL))));
 
 		$node = new \OC\Files\Node\Node($root, $view, '/bar/foo');
 		$node->touch(100);
@@ -299,7 +311,7 @@ class Node extends \Test\TestCase {
 		$view->expects($this->any())
 			->method('getFileInfo')
 			->with('/bar/foo')
-			->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_ALL)));
+			->will($this->returnValue($this->getFileInfo(array('permissions' => \OCP\Constants::PERMISSION_ALL))));
 
 		$node = new \OC\Files\Node\Node($root, $view, '/bar/foo');
 		$node->touch(100);
@@ -323,7 +335,7 @@ class Node extends \Test\TestCase {
 		$view->expects($this->any())
 			->method('getFileInfo')
 			->with('/bar/foo')
-			->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_READ)));
+			->will($this->returnValue($this->getFileInfo(array('permissions' => \OCP\Constants::PERMISSION_READ))));
 
 		$node = new \OC\Files\Node\Node($root, $view, '/bar/foo');
 		$node->touch(100);
diff --git a/tests/lib/files/node/root.php b/tests/lib/files/node/root.php
index fcce7070f5dbe341da6cdef85d4b37359bddcb4e..35bd462157ebc26e2df6617c94a64aaf2f89e65d 100644
--- a/tests/lib/files/node/root.php
+++ b/tests/lib/files/node/root.php
@@ -8,6 +8,7 @@
 
 namespace Test\Files\Node;
 
+use OC\Files\FileInfo;
 use OCP\Files\NotPermittedException;
 use OC\Files\Mount\Manager;
 
@@ -19,6 +20,10 @@ class Root extends \Test\TestCase {
 		$this->user = new \OC\User\User('', new \OC_User_Dummy);
 	}
 
+	protected function getFileInfo($data) {
+		return new FileInfo('', null, '', $data);
+	}
+
 	public function testGet() {
 		$manager = new Manager();
 		/**
@@ -34,7 +39,7 @@ class Root extends \Test\TestCase {
 		$view->expects($this->once())
 			->method('getFileInfo')
 			->with('/bar/foo')
-			->will($this->returnValue(array('fileid' => 10, 'path' => 'bar/foo', 'name', 'mimetype' => 'text/plain')));
+			->will($this->returnValue($this->getFileInfo(array('fileid' => 10, 'path' => 'bar/foo', 'name', 'mimetype' => 'text/plain'))));
 
 		$view->expects($this->once())
 			->method('is_dir')