add test for activity limit filter

This commit is contained in:
Salipa-Gurung
2024-08-21 16:22:59 +05:45
parent a9895a9073
commit 385086b491
4 changed files with 110 additions and 200 deletions

View File

@@ -2326,7 +2326,7 @@ class GraphHelper {
* @param string $user
* @param string $password
* @param string $resourceId
* @param string $depth
* @param array $filterParams
*
* @return ResponseInterface
*/
@@ -2336,14 +2336,15 @@ class GraphHelper {
string $user,
string $password,
string $resourceId,
?string $depth = null
?array $filterParams = []
): ResponseInterface {
// 'kql=itemId' filter is required for the current implementation but it might change in future
// See: https://github.com/owncloud/ocis/issues/9194
if ($depth !== null) {
$fullUrl = self::getBetaFullUrl($baseUrl, "extensions/org.libregraph/activities?kql=itemid%3A$resourceId+AND+depth%3A$depth");
} else {
$fullUrl = self::getBetaFullUrl($baseUrl, "extensions/org.libregraph/activities?kql=itemid%3A$resourceId");
$fullUrl = self::getBetaFullUrl($baseUrl, "extensions/org.libregraph/activities?kql=itemid%3A$resourceId");
if (!empty($filterParams)) {
foreach ($filterParams as $filter => $value) {
$fullUrl .= "+AND+$filter%3A$value";
}
}
return HttpRequestHelper::get(
$fullUrl,

View File

@@ -1327,7 +1327,7 @@ Feature: check activities
}
"""
@issue-9712
@issue-9850
Scenario: check activity with depth filter
Given user "Alice" has created folder "/New Folder"
And user "Alice" has created folder "/New Folder/Sub Folder"
@@ -1421,3 +1421,98 @@ Feature: check activities
}
}
"""
@issue-9880
Scenario: check activity with limit filter
Given user "Alice" has created folder "/New Folder"
And user "Alice" has created folder "/New Folder/Sub Folder"
And user "Alice" has uploaded file with content "ownCloud test text file 0" to "/New Folder/Sub Folder/textfile0.txt"
When user "Alice" lists the activities for folder "New Folder" of space "Personal" with limit "2" 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}"
},
"variables": {
"type": "object",
"required": ["resource", "space", "user"],
"properties": {
"resource": {
"type": "object",
"required": ["id", "name"],
"properties": {
"name": {
"const": "New Folder"
}
}
}
}
}
}
},
"times": {
"type": "object",
"required": ["recordedTime"]
}
}
},
{
"type": "object",
"required": ["id", "template", "times"],
"properties": {
"template": {
"type": "object",
"required": ["message", "variables"],
"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": "Sub Folder"
}
}
}
}
}
}
},
"times": {
"type": "object",
"required": ["recordedTime"]
}
}
}
]
}
}
}
}
"""

View File

@@ -1,187 +0,0 @@
@issue-9712
Feature: activity filter
As a user
I want to filter activities
So that I can track modifications of specific resource
Background:
Given user "Alice" has been created with default attributes and without skeleton files
Scenario: check activity with depth filter
Given user "Alice" has created folder "/New Folder"
And user "Alice" has created folder "/New Folder/Sub Folder"
And user "Alice" has uploaded file with content "ownCloud test text file 0" to "/New Folder/Sub Folder/textfile0.txt"
When user "Alice" lists the activities for folder "New Folder" of space "Personal" with depth "0" 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": 1,
"maxItems": 1,
"items": {
"type": "object",
"required": ["id", "template", "times"],
"properties": {
"template": {
"type": "object",
"required": ["message", "variables"],
"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": "New Folder"
}
}
}
}
}
}
},
"times": {
"type": "object",
"required": ["recordedTime"]
}
}
}
}
}
}
"""
When user "Alice" lists the activities for folder "New Folder" of space "Personal" with depth "2" 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": 3,
"maxItems": 3,
"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}"
},
"variables": {
"type": "object",
"required": ["resource", "space", "user"],
"properties": {
"resource": {
"type": "object",
"required": ["id", "name"],
"properties": {
"name": {
"const": "New Folder"
}
}
}
}
}
}
},
"times": {
"type": "object",
"required": ["recordedTime"]
}
}
},
{
"type": "object",
"required": ["id", "template", "times"],
"properties": {
"template": {
"type": "object",
"required": ["message", "variables"],
"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": "Sub Folder"
}
}
}
}
}
}
},
"times": {
"type": "object",
"required": ["recordedTime"]
}
}
},
{
"type": "object",
"required": ["id", "template", "times"],
"properties": {
"template": {
"type": "object",
"required": ["message", "variables"],
"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"]
}
}
}
]
}
}
}
}
"""

View File

@@ -2840,16 +2840,17 @@ class GraphContext implements Context {
}
/**
* @When /^user "([^"]*)" lists the activities for (?:folder|file) "([^"]*)" of space "([^"]*)" with depth "([^"]*)" using the Graph API/
* @When /^user "([^"]*)" lists the activities for (?:folder|file) "([^"]*)" of space "([^"]*)" with (depth|limit) "([^"]*)" using the Graph API/
*
* @param string $user
* @param string $resource
* @param string $spaceName
* @param string $folderDepth
* @param string $filterType
* @param string $filterValue
*
* @return void
*/
public function userListsTheActivitiesForFolderOfSpaceWithDepthUsingTheGraphApi(string $user, string $resource, string $spaceName, string $folderDepth): void {
public function userListsTheActivitiesForFolderOfSpaceWithDepthOrLimitUsingTheGraphApi(string $user, string $resource, string $spaceName, string $filterType, string $filterValue): void {
$resourceId = $this->featureContext->spacesContext->getResourceId($user, $spaceName, $resource);
$response = GraphHelper::getActivities(
$this->featureContext->getBaseUrl(),
@@ -2857,7 +2858,7 @@ class GraphContext implements Context {
$user,
$this->featureContext->getPasswordForUser($user),
$resourceId,
$folderDepth
[$filterType => $filterValue]
);
$this->featureContext->setResponse($response);
}
@@ -2872,7 +2873,7 @@ class GraphContext implements Context {
*/
public function theUserGetsFederatedUsersUsingTheGraphApi(?string $user = null): void {
$credentials = $this->getAdminOrUserCredentials($user);
$response = GraphHelper::getFederatedUsers(
$this->featureContext->getBaseUrl(),
$this->featureContext->getStepLineRef(),
@@ -2893,7 +2894,7 @@ class GraphContext implements Context {
*/
public function theUserGetsAllUsersUsingTheGraphApi(?string $user = null): void {
$credentials = $this->getAdminOrUserCredentials($user);
$response = GraphHelper::getAllUsers(
$this->featureContext->getBaseUrl(),
$this->featureContext->getStepLineRef(),