mirror of
https://github.com/owncloud/ocis.git
synced 2025-04-18 23:44:07 +03:00
Merge pull request #10895 from owncloud/test-notification-space-disabled
[tests-only][full-ci] adding test for disabling in-app notifications for space disabled event
This commit is contained in:
commit
51369fde10
@ -380,6 +380,40 @@ class NotificationContext implements Context {
|
||||
return $filteredNotifications;
|
||||
}
|
||||
|
||||
/**
|
||||
* filter notification according to subject and space
|
||||
*
|
||||
* @param string $subject
|
||||
* @param string $space
|
||||
* @param ResponseInterface|null $response
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function filterNotificationsBySubjectAndSpace(
|
||||
string $subject,
|
||||
string $space,
|
||||
?ResponseInterface $response = null
|
||||
): array {
|
||||
$filteredNotifications = [];
|
||||
$response = $response ?? $this->featureContext->getResponse();
|
||||
$responseObject = $this->featureContext->getJsonDecodedResponseBodyContent($response);
|
||||
if (!isset($responseObject->ocs->data)) {
|
||||
Assert::fail("Response doesn't contain notification: " . print_r($responseObject, true));
|
||||
}
|
||||
|
||||
$notifications = $responseObject->ocs->data;
|
||||
foreach ($notifications as $notification) {
|
||||
if (isset($notification->subject) && $notification->subject === $subject
|
||||
&& isset($notification->messageRichParameters->space->name)
|
||||
&& $notification->messageRichParameters->space->name === $space
|
||||
) {
|
||||
$this->notificationIds[] = $notification->notification_id;
|
||||
$filteredNotifications[] = $notification;
|
||||
}
|
||||
}
|
||||
return $filteredNotifications;
|
||||
}
|
||||
|
||||
/**
|
||||
* @Then /^user "([^"]*)" should (?:get|have) a notification with subject "([^"]*)" and message:$/
|
||||
*
|
||||
@ -466,21 +500,27 @@ class NotificationContext implements Context {
|
||||
}
|
||||
|
||||
/**
|
||||
* @Then user :user should not have a notification related to resource :resource with subject :subject
|
||||
* @Then /^user "([^"]*)" should not have a notification related to (resource|space) "([^"]*)" with subject "([^"]*)"$/
|
||||
*
|
||||
* @param string $user
|
||||
* @param string $resourceOrSpace
|
||||
* @param string $resource
|
||||
* @param string $subject
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function userShouldNotHaveANotificationRelatedToResourceWithSubject(
|
||||
public function userShouldNotHaveANotificationRelatedToResourceOrSpaceWithSubject(
|
||||
string $user,
|
||||
string $resourceOrSpace,
|
||||
string $resource,
|
||||
string $subject
|
||||
): void {
|
||||
$response = $this->listAllNotifications($user);
|
||||
$filteredResponse = $this->filterNotificationsBySubjectAndResource($subject, $resource, $response);
|
||||
if ($resourceOrSpace === "space") {
|
||||
$filteredResponse = $this->filterNotificationsBySubjectAndSpace($subject, $resource, $response);
|
||||
} else {
|
||||
$filteredResponse = $this->filterNotificationsBySubjectAndResource($subject, $resource, $response);
|
||||
}
|
||||
Assert::assertCount(
|
||||
0,
|
||||
$filteredResponse,
|
||||
|
@ -590,7 +590,7 @@ class SettingsContext implements Context {
|
||||
)->getBody()->getContents()
|
||||
));
|
||||
foreach ($settingsValues->bundles[0]->settings as $settingsValue) {
|
||||
if ($settingsValue->displayName === $event) {
|
||||
if ($settingsValue->displayName === $event) {
|
||||
return [
|
||||
"value" => [
|
||||
"account_uuid" => "me",
|
||||
|
@ -13,7 +13,6 @@ Feature: Notification Settings
|
||||
|
||||
|
||||
Scenario: disable email notification
|
||||
Given user "Alice" has uploaded file with content "some data" to "lorem.txt"
|
||||
When user "Brian" disables email notification using the settings API
|
||||
Then the HTTP status code should be "201"
|
||||
And the JSON data of the response should match
|
||||
@ -510,3 +509,101 @@ Feature: Notification Settings
|
||||
| message |
|
||||
| Alice Hansen added you to Space newSpace |
|
||||
But user "Brian" should not have a notification related to resource "virusFile.txt" with subject "Virus found"
|
||||
|
||||
|
||||
Scenario: disable in-app notification for Space disabled event
|
||||
Given the administrator has assigned the role "Space Admin" to user "Alice" using the Graph API
|
||||
And user "Alice" has created a space "new-space" with the default quota using the Graph API
|
||||
And user "Alice" has sent the following space share invitation:
|
||||
| space | new-space |
|
||||
| sharee | Brian |
|
||||
| shareType | user |
|
||||
| permissionsRole | Space Viewer |
|
||||
When user "Brian" disables notification for the following events using the settings API:
|
||||
| Space disabled | in-app |
|
||||
Then the HTTP status code should be "201"
|
||||
And the JSON data of the response should match
|
||||
"""
|
||||
{
|
||||
"type": "object",
|
||||
"required": ["value"],
|
||||
"properties": {
|
||||
"value": {
|
||||
"type": "object",
|
||||
"required": ["identifier","value"],
|
||||
"properties": {
|
||||
"identifier":{
|
||||
"type": "object",
|
||||
"required": ["extension","bundle","setting"],
|
||||
"properties": {
|
||||
"extension":{ "const": "ocis-accounts" },
|
||||
"bundle":{ "const": "profile" },
|
||||
"setting":{
|
||||
"const": "event-space-disabled-options"
|
||||
}
|
||||
}
|
||||
},
|
||||
"value":{
|
||||
"type": "object",
|
||||
"required": [
|
||||
"id",
|
||||
"bundleId",
|
||||
"settingId",
|
||||
"accountUuid",
|
||||
"resource",
|
||||
"collectionValue"
|
||||
],
|
||||
"properties":{
|
||||
"id":{ "pattern":"%uuidv4_pattern%" },
|
||||
"bundleId":{ "pattern":"%uuidv4_pattern%" },
|
||||
"settingId":{ "pattern":"%uuidv4_pattern%" },
|
||||
"accountUuid":{ "pattern":"%uuidv4_pattern%" },
|
||||
"resource":{
|
||||
"type": "object",
|
||||
"required":["type"],
|
||||
"properties": {
|
||||
"type":{ "const": "TYPE_USER" }
|
||||
}
|
||||
},
|
||||
"collectionValue":{
|
||||
"type": "object",
|
||||
"required":["values"],
|
||||
"properties": {
|
||||
"values":{
|
||||
"type": "array",
|
||||
"maxItems": 1,
|
||||
"minItems": 1,
|
||||
"uniqueItems": true,
|
||||
"items": {
|
||||
"oneOf": [
|
||||
{
|
||||
"type": "object",
|
||||
"required": [
|
||||
"key",
|
||||
"boolValue"
|
||||
],
|
||||
"properties": {
|
||||
"key":{ "const": "in-app" },
|
||||
"boolValue":{ "const": false }
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
"""
|
||||
And user "Alice" has disabled a space "new-space"
|
||||
When user "Brian" lists all notifications
|
||||
Then the HTTP status code should be "200"
|
||||
And there should be "1" notifications
|
||||
And user "Brian" should get a notification with subject "Space shared" and message:
|
||||
| message |
|
||||
| Alice Hansen added you to Space new-space |
|
||||
But user "Brian" should not have a notification related to space "new-space" with subject "Space disabled"
|
||||
|
Loading…
x
Reference in New Issue
Block a user