From fc5b4b23243eada708f1c2b49dae2547d40607ae Mon Sep 17 00:00:00 2001
From: Niraj Acharya <nirajacharyacode@gmail.com>
Date: Wed, 17 Apr 2024 12:12:51 +0545
Subject: [PATCH] adding test for trying to enable sync with invalid remote
 item id

---
 .../enableDisableShareSync.feature            | 46 +++++++++++++++++++
 .../features/bootstrap/SharingNgContext.php   | 20 ++++++++
 2 files changed, 66 insertions(+)

diff --git a/tests/acceptance/features/apiSharingNg/enableDisableShareSync.feature b/tests/acceptance/features/apiSharingNg/enableDisableShareSync.feature
index 1e9f7a3596d..08b0a4fb580 100644
--- a/tests/acceptance/features/apiSharingNg/enableDisableShareSync.feature
+++ b/tests/acceptance/features/apiSharingNg/enableDisableShareSync.feature
@@ -297,3 +297,49 @@ Feature:  enable or disable sync of incoming shares
       | resource      |
       | textfile0.txt |
       | FolderToShare |
+
+  @issue-8724
+  Scenario: trying to enable share sync using non-existing remote item-id
+    Given user "Alice" has uploaded file with content "hello world" to "textfile0.txt"
+    And user "Alice" has sent the following share invitation:
+      | resource        | textfile0.txt |
+      | space           | Personal      |
+      | sharee          | Brian         |
+      | shareType       | user          |
+      | permissionsRole | Viewer        |
+    When user "Brian" tries to enable share sync of non-existing item using the Graph API
+    Then the HTTP status code should be "400"
+    And the JSON data of the response should match
+      """
+      {
+        "type": "object",
+        "required": [
+          "error"
+        ],
+        "properties": {
+          "error": {
+            "type": "object",
+            "required": [
+              "code",
+              "innererror",
+              "message"
+            ],
+            "properties": {
+              "code" : {
+                "const": "invalidRequest"
+              },
+              "innererror" : {
+                "type": "object",
+                "required": [
+                  "date",
+                  "request-id"
+                ]
+              },
+              "message" : {
+                "const": "mounting share failed"
+              }
+            }
+          }
+        }
+      }
+      """
\ No newline at end of file
diff --git a/tests/acceptance/features/bootstrap/SharingNgContext.php b/tests/acceptance/features/bootstrap/SharingNgContext.php
index ef510e191e5..4e942d10ffd 100644
--- a/tests/acceptance/features/bootstrap/SharingNgContext.php
+++ b/tests/acceptance/features/bootstrap/SharingNgContext.php
@@ -714,6 +714,26 @@ public function userEnablesSyncOfShareUsingTheGraphApi(string $user, string $sha
 		$this->featureContext->setResponse($response);
 	}
 
+	/**
+	 * @When user :user  tries to enable share sync of non-existing item using the Graph API
+	 *
+	 * @param string $user
+	 *
+	 * @return void
+	 */
+	public function userTriesToEnablsSyncOfShareOfferedByFromSpaceUsingTheGraphApi(string $user):void {
+		$shareSpaceId = FeatureContext::SHARES_SPACE_ID;
+		$response =  GraphHelper::enableShareSync(
+			$this->featureContext->getBaseUrl(),
+			$this->featureContext->getStepLineRef(),
+			$this->featureContext->getActualUsername($user),
+			$this->featureContext->getPasswordForUser($user),
+			"",
+			$shareSpaceId
+		);
+		$this->featureContext->setResponse($response);
+	}
+
 	/**
 	 * @Then /^user "([^"]*)" should have sync (enabled|disabled) for share "([^"]*)"$/
 	 *