From 4f5271acf9d2baa08b048ba20f3e730674037625 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20Calvi=C3=B1o=20S=C3=A1nchez?= <danxuliu@gmail.com>
Date: Thu, 12 Nov 2020 11:51:37 +0100
Subject: [PATCH] Reset app configs by deleting the values instead of setting
 the defaults
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This avoids the need to keep the default values in the integration tests
in sync with the code, and also makes possible to reset values with
"dynamic" defaults (defaults that depend on other values).

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
---
 .../features/bootstrap/AppConfiguration.php   | 13 +++++++++++
 .../bootstrap/CapabilitiesContext.php         | 22 +++++++++----------
 .../features/bootstrap/FederationContext.php  |  4 ++--
 .../features/bootstrap/ShareesContext.php     |  6 ++---
 .../features/bootstrap/SharingContext.php     |  4 ++--
 5 files changed, 31 insertions(+), 18 deletions(-)

diff --git a/build/integration/features/bootstrap/AppConfiguration.php b/build/integration/features/bootstrap/AppConfiguration.php
index b893637ba6c..fe8308fd59b 100644
--- a/build/integration/features/bootstrap/AppConfiguration.php
+++ b/build/integration/features/bootstrap/AppConfiguration.php
@@ -72,6 +72,19 @@ trait AppConfiguration {
 		}
 	}
 
+	/**
+	 * @param string $app
+	 * @param string $parameter
+	 * @param string $value
+	 */
+	protected function deleteServerConfig($app, $parameter) {
+		$this->sendingTo('DELETE', "/apps/testing/api/v1/app/{$app}/{$parameter}");
+		$this->theHTTPStatusCodeShouldBe('200');
+		if ($this->apiVersion === 1) {
+			$this->theOCSStatusCodeShouldBe('100');
+		}
+	}
+
 	protected function setStatusTestingApp($enabled) {
 		$this->sendingTo(($enabled ? 'post' : 'delete'), '/cloud/apps/testing');
 		$this->theHTTPStatusCodeShouldBe('200');
diff --git a/build/integration/features/bootstrap/CapabilitiesContext.php b/build/integration/features/bootstrap/CapabilitiesContext.php
index bba85e3c65e..9b3d042d862 100644
--- a/build/integration/features/bootstrap/CapabilitiesContext.php
+++ b/build/integration/features/bootstrap/CapabilitiesContext.php
@@ -61,16 +61,16 @@ class CapabilitiesContext implements Context, SnippetAcceptingContext {
 	}
 
 	protected function resetAppConfigs() {
-		$this->modifyServerConfig('core', 'shareapi_enabled', 'yes');
-		$this->modifyServerConfig('core', 'shareapi_allow_links', 'yes');
-		$this->modifyServerConfig('core', 'shareapi_allow_public_upload', 'yes');
-		$this->modifyServerConfig('core', 'shareapi_allow_resharing', 'yes');
-		$this->modifyServerConfig('files_sharing', 'outgoing_server2server_share_enabled', 'yes');
-		$this->modifyServerConfig('files_sharing', 'incoming_server2server_share_enabled', 'yes');
-		$this->modifyServerConfig('core', 'shareapi_enforce_links_password', 'no');
-		$this->modifyServerConfig('core', 'shareapi_allow_public_notification', 'no');
-		$this->modifyServerConfig('core', 'shareapi_default_expire_date', 'no');
-		$this->modifyServerConfig('core', 'shareapi_enforce_expire_date', 'no');
-		$this->modifyServerConfig('core', 'shareapi_allow_group_sharing', 'yes');
+		$this->deleteServerConfig('core', 'shareapi_enabled');
+		$this->deleteServerConfig('core', 'shareapi_allow_links');
+		$this->deleteServerConfig('core', 'shareapi_allow_public_upload');
+		$this->deleteServerConfig('core', 'shareapi_allow_resharing');
+		$this->deleteServerConfig('files_sharing', 'outgoing_server2server_share_enabled');
+		$this->deleteServerConfig('files_sharing', 'incoming_server2server_share_enabled');
+		$this->deleteServerConfig('core', 'shareapi_enforce_links_password');
+		$this->deleteServerConfig('core', 'shareapi_allow_public_notification');
+		$this->deleteServerConfig('core', 'shareapi_default_expire_date');
+		$this->deleteServerConfig('core', 'shareapi_enforce_expire_date');
+		$this->deleteServerConfig('core', 'shareapi_allow_group_sharing');
 	}
 }
diff --git a/build/integration/features/bootstrap/FederationContext.php b/build/integration/features/bootstrap/FederationContext.php
index 13e0de46187..e119f950a46 100644
--- a/build/integration/features/bootstrap/FederationContext.php
+++ b/build/integration/features/bootstrap/FederationContext.php
@@ -97,7 +97,7 @@ class FederationContext implements Context, SnippetAcceptingContext {
 	}
 
 	protected function resetAppConfigs() {
-		$this->modifyServerConfig('files_sharing', 'incoming_server2server_group_share_enabled', 'no');
-		$this->modifyServerConfig('files_sharing', 'outgoing_server2server_group_share_enabled', 'no');
+		$this->deleteServerConfig('files_sharing', 'incoming_server2server_group_share_enabled');
+		$this->deleteServerConfig('files_sharing', 'outgoing_server2server_group_share_enabled');
 	}
 }
diff --git a/build/integration/features/bootstrap/ShareesContext.php b/build/integration/features/bootstrap/ShareesContext.php
index 64896a82009..adfc63c0634 100644
--- a/build/integration/features/bootstrap/ShareesContext.php
+++ b/build/integration/features/bootstrap/ShareesContext.php
@@ -36,8 +36,8 @@ class ShareesContext implements Context, SnippetAcceptingContext {
 	use AppConfiguration;
 
 	protected function resetAppConfigs() {
-		$this->modifyServerConfig('core', 'shareapi_only_share_with_group_members', 'no');
-		$this->modifyServerConfig('core', 'shareapi_allow_share_dialog_user_enumeration', 'yes');
-		$this->modifyServerConfig('core', 'shareapi_allow_group_sharing', 'yes');
+		$this->deleteServerConfig('core', 'shareapi_only_share_with_group_members');
+		$this->deleteServerConfig('core', 'shareapi_allow_share_dialog_user_enumeration');
+		$this->deleteServerConfig('core', 'shareapi_allow_group_sharing');
 	}
 }
diff --git a/build/integration/features/bootstrap/SharingContext.php b/build/integration/features/bootstrap/SharingContext.php
index 447b8f1c024..2fcca2ee2c7 100644
--- a/build/integration/features/bootstrap/SharingContext.php
+++ b/build/integration/features/bootstrap/SharingContext.php
@@ -37,7 +37,7 @@ class SharingContext implements Context, SnippetAcceptingContext {
 	use CommandLine;
 
 	protected function resetAppConfigs() {
-		$this->modifyServerConfig('core', 'shareapi_default_permissions', '31');
-		$this->modifyServerConfig('sharebymail', 'enforcePasswordProtection', 'no');
+		$this->deleteServerConfig('core', 'shareapi_default_permissions');
+		$this->deleteServerConfig('sharebymail', 'enforcePasswordProtection');
 	}
 }
-- 
GitLab