diff --git a/tests/acceptance/features/apiGraph/activities.feature b/tests/acceptance/features/apiGraph/activities.feature index 7abf36c41..9d299f894 100644 --- a/tests/acceptance/features/apiGraph/activities.feature +++ b/tests/acceptance/features/apiGraph/activities.feature @@ -9,7 +9,7 @@ Feature: check activities @issue-9712 Scenario: check activities after uploading a file Given user "Alice" has uploaded file with content "ownCloud test text file 0" to "/textfile0.txt" - When user "Alice" checks the activities for file "textfile0.txt" in space "Personal" using the Graph API + When user "Alice" lists the activities for file "textfile0.txt" of space "Personal" using the Graph API Then the HTTP status code should be "200" And the JSON data of the response should match """ @@ -103,8 +103,8 @@ Feature: check activities @issue-9712 Scenario: check activities after deleting a file Given user "Alice" has uploaded file with content "ownCloud test text file 0" to "/textfile0.txt" - When user "Alice" deletes file "/textfile0.txt" using the WebDAV API - And user "Alice" lists the activities of space "Personal" using the Graph API + And user "Alice" has deleted file "textfile0.txt" + When user "Alice" lists the activities of space "Personal" using the Graph API Then the HTTP status code should be "200" And the JSON data of the response should match """ @@ -129,27 +129,8 @@ Feature: check activities "properties": { "message": { "const": "{user} added {resource} to {space}" - }, - "variables": { - "type": "object", - "required": ["resource","space","user"], - "properties": { - "resource": { - "type": "object", - "required": ["id", "name"], - "properties": { - "name": { - "const": "textfile0.txt" - } - } - } - } } } - }, - "times": { - "type": "object", - "required": ["recordedTime"] } } }, @@ -237,8 +218,8 @@ Feature: check activities @issue-9712 Scenario: check activities after deleting a folder Given user "Alice" has created folder "/FOLDER" - When user "Alice" deletes folder "/FOLDER" using the WebDAV API - And user "Alice" lists the activities of space "Personal" using the Graph API + And user "Alice" has deleted folder "FOLDER" + When user "Alice" lists the activities of space "Personal" using the Graph API Then the HTTP status code should be "200" And the JSON data of the response should match """ @@ -263,27 +244,8 @@ Feature: check activities "properties": { "message": { "const": "{user} added {resource} to {space}" - }, - "variables": { - "type": "object", - "required": ["resource","space","user"], - "properties": { - "resource": { - "type": "object", - "required": ["id", "name"], - "properties": { - "name": { - "const": "FOLDER" - } - } - } - } } } - }, - "times": { - "type": "object", - "required": ["recordedTime"] } } }, @@ -367,3 +329,119 @@ Feature: check activities } } """ + + @issue-9712 + Scenario: check move activity for a file + Given user "Alice" has uploaded file with content "ownCloud test text file 0" to "/textfile0.txt" + And user "Alice" has created folder "/New Folder" + And user "Alice" has moved file "textfile0.txt" to "New Folder/textfile0.txt" + When user "Alice" lists the activities for file "New Folder/textfile0.txt" of space "Personal" using the Graph API + Then the HTTP status code should be "200" + And the JSON data of the response should match + """ + { + "type": "object", + "required": ["value"], + "properties": { + "value": { + "type": "array", + "minItems": 2, + "maxItems": 2, + "uniqueItems": true, + "items": { + "oneOf": [ + { + "type": "object", + "required": ["id","template","times"], + "properties": { + "template": { + "type": "object", + "required": ["message","variables"], + "properties": { + "message": { + "const": "{user} added {resource} to {space}" + } + } + } + } + }, + { + "type": "object", + "required": ["id","template","times"], + "properties": { + "id": { + "type": "string", + "pattern": "^%user_id_pattern%$" + }, + "template": { + "type": "object", + "required": ["message","variables"], + "properties": { + "message": { + "const": "{user} moved {resource} to {space}" + }, + "variables": { + "type": "object", + "required": ["resource","space","user"], + "properties": { + "resource": { + "type": "object", + "required": ["id","name"], + "properties": { + "id": { + "type": "string", + "pattern": "^%file_id_pattern%$" + }, + "name": { + "const": "textfile0.txt" + } + } + }, + "space": { + "type": "object", + "required": ["id","name"], + "properties": { + "id": { + "type": "string", + "pattern": "^%user_id_pattern%!%user_id_pattern%$" + }, + "name": { + "const": "Alice Hansen" + } + } + }, + "user": { + "type": "object", + "required": ["id","displayName"], + "properties": { + "id": { + "type": "string", + "pattern": "%user_id_pattern%" + }, + "displayName": { + "const": "Alice" + } + } + } + } + } + } + }, + "times": { + "type": "object", + "required": ["recordedTime"], + "properties": { + "recordedTime": { + "type": "string", + "format": "date-time" + } + } + } + } + } + ] + } + } + } + } + """ diff --git a/tests/acceptance/features/bootstrap/GraphContext.php b/tests/acceptance/features/bootstrap/GraphContext.php index d01ba2b4e..4da2dd3b7 100644 --- a/tests/acceptance/features/bootstrap/GraphContext.php +++ b/tests/acceptance/features/bootstrap/GraphContext.php @@ -2777,7 +2777,7 @@ class GraphContext implements Context { } /** - * @When /^user "([^"]*)" checks the activities for (?:folder|file) "([^"]*)" in space "([^"]*)" using the Graph API/ + * @When /^user "([^"]*)" lists the activities for (?:folder|file) "([^"]*)" of space "([^"]*)" using the Graph API/ * * @param string $user * @param string $resource @@ -2786,7 +2786,7 @@ class GraphContext implements Context { * @return void * @throws Exception */ - public function userChecksTheActivitiesForResourceInSpaceUsingTheGraphAPI(string $user, string $resource, string $spaceName): void { + public function userListsTheActivitiesForResourceOfSpaceUsingTheGraphAPI(string $user, string $resource, string $spaceName): void { $resourceId = $this->featureContext->spacesContext->getResourceId($user, $spaceName, $resource); $response = GraphHelper::getActivities( $this->featureContext->getBaseUrl(), @@ -2806,7 +2806,7 @@ class GraphContext implements Context { * * @return void */ - public function userListsTheActivitiesInSpaceUsingTheGraphApi(string $user, string $spaceName): void { + public function userListsTheActivitiesOfSpaceUsingTheGraphApi(string $user, string $spaceName): void { $spaceId = ($this->featureContext->spacesContext->getSpaceByName($user, $spaceName))["id"]; $response = GraphHelper::getActivities( $this->featureContext->getBaseUrl(),