From 184742e6ff1fe27ebc663dd1adff9ae87408d87d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20Calvi=C3=B1o=20S=C3=A1nchez?= <danxuliu@gmail.com>
Date: Thu, 3 Dec 2020 13:11:19 +0100
Subject: [PATCH] Make possible to set body in requesttoken requests in
 integration tests
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

"sendingAToWithRequesttoken" needs to be used to test some non OCS
endpoints which require the request token to be sent in the request. Now
it is possible to specify the body (or, rather, additional contents
beside the cookies and the request token) for those requests, as it will
be needed for example to upload an avatar.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
---
 .../features/bootstrap/BasicStructure.php     | 24 +++++++++++++------
 1 file changed, 17 insertions(+), 7 deletions(-)

diff --git a/build/integration/features/bootstrap/BasicStructure.php b/build/integration/features/bootstrap/BasicStructure.php
index 2c08d6ff033..4775a23b902 100644
--- a/build/integration/features/bootstrap/BasicStructure.php
+++ b/build/integration/features/bootstrap/BasicStructure.php
@@ -307,21 +307,31 @@ trait BasicStructure {
 	 * @When Sending a :method to :url with requesttoken
 	 * @param string $method
 	 * @param string $url
+	 * @param TableNode|array|null $body
 	 */
-	public function sendingAToWithRequesttoken($method, $url) {
+	public function sendingAToWithRequesttoken($method, $url, $body = null) {
 		$baseUrl = substr($this->baseUrl, 0, -5);
 
+		$options = [
+			'cookies' => $this->cookieJar,
+			'headers' => [
+				'requesttoken' => $this->requestToken
+			],
+		];
+
+		if ($body instanceof TableNode) {
+			$fd = $body->getRowsHash();
+			$options['form_params'] = $fd;
+		} elseif ($body) {
+			$options = array_merge($options, $body);
+		}
+
 		$client = new Client();
 		try {
 			$this->response = $client->request(
 				$method,
 				$baseUrl . $url,
-				[
-					'cookies' => $this->cookieJar,
-					'headers' => [
-						'requesttoken' => $this->requestToken
-					]
-				]
+				$options
 			);
 		} catch (ClientException $e) {
 			$this->response = $e->getResponse();
-- 
GitLab