diff --git a/lib/private/appframework/http/request.php b/lib/private/appframework/http/request.php
index b45ac2f009737123a3df644c6fe0737b4a50850e..f152956c8cf950f80cf37563009683e9cfe362bb 100644
--- a/lib/private/appframework/http/request.php
+++ b/lib/private/appframework/http/request.php
@@ -31,6 +31,7 @@ use OCP\IRequest;
 
 class Request implements \ArrayAccess, \Countable, IRequest {
 
+	protected $inputStream;
 	protected $content;
 	protected $items = array();
 	protected $allowedKeys = array(
@@ -66,12 +67,19 @@ class Request implements \ArrayAccess, \Countable, IRequest {
 				: array();
 		}
 
+		if (defined('PHPUNIT_RUN') && PHPUNIT_RUN
+			&& in_array('fakeinput', stream_get_wrappers())) {
+			$this->inputStream = 'fakeinput://data';
+		} else {
+			$this->inputStream = 'php://input';
+		}
+
 		// Only 'application/x-www-form-urlencoded' requests are automatically
 		// transformed by PHP, 'application/json' must be decoded manually.
 		if ($this->method === 'POST'
 			&& strpos($this->getHeader('Content-Type'), 'application/json') !== false
 		) {
-			$this->items['params'] = $this->items['post'] = json_decode(file_get_contents('php://input'), true);
+			$this->items['params'] = $this->items['post'] = json_decode(file_get_contents($this->inputStream), true);
 		}
 
 		$this->items['parameters'] = array_merge(
@@ -311,24 +319,17 @@ class Request implements \ArrayAccess, \Countable, IRequest {
 			);
 		}
 
-		if (defined('PHPUNIT_RUN') && PHPUNIT_RUN
-			&& in_array('fakeinput', stream_get_wrappers())) {
-			$stream = 'fakeinput://data';
-		} else {
-			$stream = 'php://input';
-		}
-
 		// If the content can't be parsed into an array then return a stream resource.
 		if ($this->method === 'PUT'
 			&& strpos($this->getHeader('Content-Type'), 'application/x-www-form-urlencoded') === false
 			&& strpos($this->getHeader('Content-Type'), 'application/json') === false
 		) {
 			$this->content = false;
-			return fopen($stream, 'rb');
+			return fopen($this->inputStream, 'rb');
 		}
 
 		if (is_null($this->content)) {
-			$this->content = file_get_contents($stream);
+			$this->content = file_get_contents($this->inputStream);
 
 			/*
 			* Normal jquery ajax requests are sent as application/x-www-form-urlencoded
diff --git a/tests/lib/appframework/http/RequestTest.php b/tests/lib/appframework/http/RequestTest.php
index acd61e70919eda43ad3bcc19995c89d44f47a790..00473a8c44f9167827592591d6df7e6847cd8216 100644
--- a/tests/lib/appframework/http/RequestTest.php
+++ b/tests/lib/appframework/http/RequestTest.php
@@ -115,8 +115,9 @@ class RequestTest extends \PHPUnit_Framework_TestCase {
 	}
 
 	public function testJsonPost() {
+		global $data;
+		$data = '{"name": "John Q. Public", "nickname": "Joey"}';
 		$vars = array(
-			'post' => '{"name": "John Q. Public", "nickname": "Joey"}',
 			'method' => 'POST',
 			'server' => array('CONTENT_TYPE' => 'application/json; utf-8'),
 		);
@@ -135,7 +136,6 @@ class RequestTest extends \PHPUnit_Framework_TestCase {
 		$data = http_build_query(array('name' => 'John Q. Public', 'nickname' => 'Joey'), '', '&');
 
 		$vars = array(
-			'patch' => $data,
 			'method' => 'PATCH',
 			'server' => array('CONTENT_TYPE' => 'application/x-www-form-urlencoded'),
 		);