From 8d327c94a844804d0e7af057866e552bd5aafd17 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thomas=20M=C3=BCller?= <thomas.mueller@tmit.eu>
Date: Thu, 26 Mar 2015 10:49:26 +0100
Subject: [PATCH] adding unit tests

---
 lib/private/connector/sabre/filesplugin.php |  7 ++---
 tests/lib/connector/sabre/filesplugin.php   | 31 +++++++++++++++++++++
 2 files changed, 33 insertions(+), 5 deletions(-)

diff --git a/lib/private/connector/sabre/filesplugin.php b/lib/private/connector/sabre/filesplugin.php
index e03cac9c537..1b4b0674a57 100644
--- a/lib/private/connector/sabre/filesplugin.php
+++ b/lib/private/connector/sabre/filesplugin.php
@@ -184,11 +184,8 @@ class FilesPlugin extends \Sabre\DAV\ServerPlugin {
 	/**
 	 * @param \OC\Connector\Sabre\Node $node
 	 */
-	private function getETag($node) {
-		if (isset($_SERVER['HTTP_OC_CHUNKED'])) {
-			if (isset($_SERVER['X-CHUNKING_COMPLETE'])) {
-				return $node->getETag();
-			}
+	public function getETag($node) {
+		if (isset($_SERVER['HTTP_OC_CHUNKED']) && !isset($_SERVER['X-CHUNKING_COMPLETE'])) {
 			return null;
 		}
 		return $node->getETag();
diff --git a/tests/lib/connector/sabre/filesplugin.php b/tests/lib/connector/sabre/filesplugin.php
index 54d43d66dda..e10d67a3255 100644
--- a/tests/lib/connector/sabre/filesplugin.php
+++ b/tests/lib/connector/sabre/filesplugin.php
@@ -171,4 +171,35 @@ class FilesPlugin extends \Test\TestCase {
 		$this->assertEquals(200, $result[self::GETETAG_PROPERTYNAME]);
 	}
 
+	/**
+	 * @dataProvider providesETagTestData
+	 * @param $expectedETag
+	 * @param $isChunked
+	 * @param $isChunkComplete
+	 */
+	public function testETag($expectedETag, $isChunked, $isChunkComplete) {
+		if (!is_null($isChunked)) {
+			$_SERVER['HTTP_OC_CHUNKED'] = $isChunked;
+		}
+		if (!is_null($isChunkComplete)) {
+			$_SERVER['X-CHUNKING_COMPLETE'] = $isChunkComplete;
+		}
+		$node = $this->createTestNode('\OC\Connector\Sabre\File');
+
+		$etag = $this->plugin->getETag($node);
+
+		$this->assertEquals($expectedETag, $etag);
+	}
+
+	public function providesETagTestData() {
+		return [
+			// non-chunked tests
+			['"abc"', null, null],
+			['"abc"', null, false],
+
+			// chunked tests
+			[null, true, null],
+			['"abc"', true, true],
+		];
+	}
 }
-- 
GitLab