1
0
mirror of https://github.com/owncloud/ocis.git synced 2026-10-23 23:29:02 +03:00
Files
ocis/tests/acceptance/features/apiNotification/notification.feature
Pradip Subedi af7d39d1b6 [tests-only][full-ci] test: Add acceptance test for empty CallToAction notification translation fix (#12616)
* test: add tests email after changing default language

* test: fix other feature files cleanup

* test: restore unrelated files

* test: add missing unshare strings to test translation fixture

* test: add missing space in email body

* test: assert full translated unshare email and sync userlog fixture

* test: remove unused negative email content step
2026-08-14 09:15:56 +05:45

444 lines
19 KiB
Gherkin

@notification
Feature: Notification
As a user
I want to be notified of various events
So that I can stay updated about the information
Background:
Given these users have been created with default attributes:
| username |
| Alice |
| Brian |
| Carol |
And user "Alice" has uploaded file with content "other data" to "/textfile1.txt"
And user "Alice" has created folder "my_data"
@issue-10937 @email
Scenario Outline: user gets in-app and mail notifications of resource sharing
Given the administrator has assigned the role "<user-role>" to user "Brian" using the Graph API
And user "Alice" has sent the following resource share invitation:
| resource | <resource> |
| space | Personal |
| sharee | Brian |
| shareType | user |
| permissionsRole | Viewer |
When user "Brian" lists all notifications
Then the HTTP status code should be "200"
And the JSON response should contain a notification message with the subject "Resource shared" and the message-details should match
"""
{
"type": "object",
"required": [
"app",
"datetime",
"message",
"messageRich",
"messageRichParameters",
"notification_id",
"object_id",
"object_type",
"subject",
"subjectRich",
"user"
],
"properties": {
"app": {"const": "userlog"},
"message": {"const": "Alice Hansen shared <resource> with you"},
"messageRich": {"const": "{user} shared {resource} with you"},
"messageRichParameters": {
"type": "object",
"required": ["resource","user"],
"properties": {
"resource": {
"type": "object",
"required": ["id","name"],
"properties": {
"id": {"pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}\\$[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}![a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"},
"name": {"const": "<resource>"}
}
},
"user": {
"type": "object",
"required": ["displayname","id","name"],
"properties": {
"displayname": {"const": "Alice Hansen"},
"id": {"pattern": "^%user_id_pattern%$"},
"name": {"const": "Alice"}
}
}
}
},
"notification_id": {"type": "string"},
"object_id": {"type": "string"},
"object_type": {"const": "share"},
"subject": {"const": "Resource shared"},
"subjectRich": {"const": "Resource shared"},
"user": {"const": "Alice"}
}
}
"""
And user "Brian" should have received the following email from user "Alice"
"""
Hello Brian Murphy
%displayname% has shared "<resource>" with you.
Click here to view it: %base_url%/files/shares/with-me
"""
Examples:
| user-role | resource |
| User | textfile1.txt |
| User | my_data |
| User Light | textfile1.txt |
| User Light | my_data |
@issue-10937 @email
Scenario Outline: user gets a notification about a file share in various languages
Given the administrator has assigned the role "<user-role>" to user "Brian" using the Graph API
And user "Brian" has switched the system language to "<language>" using the <api> API
And user "Alice" has sent the following resource share invitation:
| resource | textfile1.txt |
| space | Personal |
| sharee | Brian |
| shareType | user |
| permissionsRole | Viewer |
When user "Brian" lists all notifications
Then the HTTP status code should be "200"
And the JSON response should contain a notification message with the subject "<subject>" and the message-details should match
"""
{
"type": "object",
"required": [
"message"
],
"properties": {
"message": {
"type": "string",
"enum": [
"<message>"
]
}
}
}
"""
Examples:
| user-role | language | subject | message | api |
| User | de | Neue Freigabe | Alice Hansen hat textfile1.txt mit Ihnen geteilt | Graph |
| User | de | Neue Freigabe | Alice Hansen hat textfile1.txt mit Ihnen geteilt | settings |
| User | es | Recurso compartido | Alice Hansen compartió textfile1.txt contigo | Graph |
| User | es | Recurso compartido | Alice Hansen compartió textfile1.txt contigo | settings |
| User Light | de | Neue Freigabe | Alice Hansen hat textfile1.txt mit Ihnen geteilt | Graph |
| User Light | de | Neue Freigabe | Alice Hansen hat textfile1.txt mit Ihnen geteilt | settings |
| User Light | es | Recurso compartido | Alice Hansen compartió textfile1.txt contigo | Graph |
| User Light | es | Recurso compartido | Alice Hansen compartió textfile1.txt contigo | settings |
@env-config
Scenario: get a notification about a file share in default languages
Given the config "OCIS_DEFAULT_LANGUAGE" has been set to "de" for "settings" service
And user "Alice" has sent the following resource share invitation:
| resource | textfile1.txt |
| space | Personal |
| sharee | Brian |
| shareType | user |
| permissionsRole | Viewer |
When user "Brian" lists all notifications
Then the HTTP status code should be "200"
And the JSON response should contain a notification message with the subject "Neue Freigabe" and the message-details should match
"""
{
"type": "object",
"required": [
"message"
],
"properties": {
"message": {
"type": "string",
"enum": [
"Alice Hansen hat textfile1.txt mit Ihnen geteilt"
]
}
}
}
"""
Scenario Outline: in-app notifications related to a resource get deleted when the resource is deleted
Given user "Alice" has sent the following resource share invitation:
| resource | <resource> |
| space | Personal |
| sharee | Brian |
| shareType | user |
| permissionsRole | Viewer |
And user "Alice" has removed the access of user "Brian" from resource "<resource>" of space "Personal"
And user "Alice" has deleted entity "/<resource>"
When user "Brian" lists all notifications
Then the HTTP status code should be "200"
And the notifications should be empty
Examples:
| resource |
| textfile1.txt |
| my_data |
@issue-10937 @issue-10966 @email
Scenario Outline: check share expired in-app and mail notifications for Personal space file
Given using SharingNG
And the administrator has assigned the role "<user-role>" to user "Brian" using the Graph API
And user "Alice" has uploaded file with content "hello world" to "testfile.txt"
And user "Alice" has sent the following resource share invitation:
| resource | testfile.txt |
| space | Personal |
| sharee | Brian |
| shareType | user |
| permissionsRole | Viewer |
When user "Alice" expires the last share of resource "testfile.txt" inside of the space "Personal"
Then the HTTP status code should be "200"
And as "Brian" file "Shares/testfile.txt" should not exist
And user "Brian" should get a notification with subject "Share expired" and message:
| message |
| Access to testfile.txt expired |
And user "Brian" should have received the following email from user "Alice"
"""
Hello Brian Murphy,
Your share to testfile.txt has expired at %expiry_date_in_mail%
Even though this share has been revoked you still might have access through other shares and/or space memberships.
"""
Examples:
| user-role |
| User |
| User Light |
@issue-10937 @issue-10966 @email
Scenario Outline: check share expired in-app and mail notifications for Personal space folder
Given using SharingNG
And the administrator has assigned the role "<user-role>" to user "Brian" using the Graph API
And user "Alice" has created folder "folderToShare"
And user "Alice" has sent the following resource share invitation:
| resource | folderToShare |
| space | Personal |
| sharee | Brian |
| shareType | user |
| permissionsRole | Viewer |
When user "Alice" expires the last share of resource "folderToShare" inside of the space "Personal"
Then the HTTP status code should be "200"
And as "Brian" file "Shares/folderToShare" should not exist
And user "Brian" should get a notification with subject "Share expired" and message:
| message |
| Access to folderToShare expired |
And user "Brian" should have received the following email from user "Alice"
"""
Hello Brian Murphy,
Your share to folderToShare has expired at %expiry_date_in_mail%
Even though this share has been revoked you still might have access through other shares and/or space memberships.
"""
Examples:
| user-role |
| User |
| User Light |
@issue-10904 @issue-10937 @email
Scenario Outline: user gets an in-app and mail notifications of unsharing resource
Given the administrator has assigned the role "<user-role>" to user "Brian" using the Graph API
And user "Alice" has sent the following resource share invitation:
| resource | <resource> |
| space | Personal |
| sharee | Brian |
| shareType | user |
| permissionsRole | Viewer |
When user "Alice" removes the access of user "Brian" from resource "<resource>" of space "Personal" using the Graph API
Then the HTTP status code should be "204"
And user "Brian" should get a notification with subject "Resource unshared" and message:
| message |
| Alice Hansen unshared <resource> with you |
And user "Brian" should have received the following email from user "Alice" about the share of project space "<resource>"
"""
Hello Brian Murphy,
%displayname% has unshared '<resource>' with you.
Even though this share has been revoked you still might have access through other shares and/or space memberships.
"""
Examples:
| user-role | resource |
| User | textfile1.txt |
| User | my_data |
| User Light | textfile1.txt |
| User Light | my_data |
@issue-10904 @issue-10937 @email
Scenario Outline: user gets in-app and mail notifications when a resource is unshared (Project Space)
Given using spaces DAV path
And the administrator has assigned the role "Space Admin" to user "Alice" using the Graph API
And user "Alice" has created a space "shared-space" with the default quota using the Graph API
And user "Alice" has created a folder "SHARED-FOLDER" in space "shared-space"
And user "Alice" has uploaded a file inside space "shared-space" with content "Sample data" to "file-to-share.txt"
And the administrator has assigned the role "<user-role>" to user "Brian" using the Graph API
And user "Alice" has sent the following resource share invitation:
| resource | <resource> |
| space | shared-space |
| sharee | Brian |
| shareType | user |
| permissionsRole | Viewer |
When user "Alice" removes the access of user "Brian" from resource "<resource>" of space "shared-space" using the Graph API
Then the HTTP status code should be "204"
And user "Brian" should get a notification with subject "Resource unshared" and message:
| message |
| Alice Hansen unshared <resource> with you |
And user "Brian" should have received the following email from user "Alice" about the share of project space "<resource>"
"""
Hello Brian Murphy,
%displayname% has unshared '<resource>' with you.
Even though this share has been revoked you still might have access through other shares and/or space memberships.
"""
Examples:
| user-role | resource |
| User | file-to-share.txt |
| User | SHARED-FOLDER |
| User Light | file-to-share.txt |
| User Light | SHARED-FOLDER |
@issue-9530 @email
Scenario: user gets an in-app and mail notifications when someone with comma in display name shares a file
Given the administrator has assigned the role "Admin" to user "Brian" using the Graph API
And the user "Brian" has created a new user with the following attributes:
| userName | David |
| displayName | David, Lopez |
| email | david@example.com |
| password | 1234 |
And user "David" has uploaded file with content "sample text" to "lorem.txt"
When user "David" sends the following resource share invitation using the Graph API:
| resource | lorem.txt |
| space | Personal |
| sharee | Brian |
| shareType | user |
| permissionsRole | Viewer |
Then the HTTP status code should be "200"
And user "Brian" should get a notification with subject "Resource shared" and message:
| message |
| David, Lopez shared lorem.txt with you |
And user "Brian" should have received the following email from user "David"
"""
Hello Brian Murphy
David, Lopez has shared "lorem.txt" with you.
Click here to view it: %base_url%/files/shares/with-me
"""
@email
Scenario Outline: group members gets an in-app and mail notifications in their respective languages when someone shares resources with the group
Given group "group1" has been created
And user "Brian" has been added to group "group1"
And user "Carol" has been added to group "group1"
And user "Brian" has switched the system language to "es" using the Graph API
And user "Carol" has switched the system language to "de" using the Graph API
And user "Alice" has created folder "HelloWorld"
And user "Alice" has uploaded file with content "hello world" to "text.txt"
When user "Alice" sends the following resource share invitation using the Graph API:
| resource | <resource> |
| space | Personal |
| sharee | group1 |
| shareType | group |
| permissionsRole | Viewer |
Then the HTTP status code should be "200"
And user "Brian" should get a notification with subject "Recurso compartido" and message:
| message |
| Alice Hansen compartió <resource> contigo |
And user "Carol" should get a notification with subject "Neue Freigabe" and message:
| message |
| Alice Hansen hat <resource> mit Ihnen geteilt |
And user "Brian" should have received the following email from user "Alice"
"""
Hola Brian Murphy
%displayname% ha compartido "<resource>" contigo.
Click aquí para verlo: %base_url%/files/shares/with-me
"""
And user "Carol" should have received the following email from user "Alice"
"""
Hallo Carol King
%displayname% hat "<resource>" mit Ihnen geteilt.
Zum Ansehen hier klicken: %base_url%/files/shares/with-me
"""
Examples:
| resource |
| HelloWorld |
| text.txt |
@env-config @email
Scenario Outline: group members gets an in-app and mail notifications in default language when someone shares a file with the group
Given the config "OCIS_DEFAULT_LANGUAGE" has been set to "de" for "settings" service
And group "group1" has been created
And user "Brian" has been added to group "group1"
And user "Carol" has been added to group "group1"
And user "Alice" has created folder "HelloWorld"
And user "Alice" has uploaded file with content "hello world" to "text.txt"
When user "Alice" sends the following resource share invitation using the Graph API:
| resource | <resource> |
| space | Personal |
| sharee | group1 |
| shareType | group |
| permissionsRole | Viewer |
Then the HTTP status code should be "200"
And user "Brian" should get a notification with subject "Neue Freigabe" and message:
| message |
| Alice Hansen hat <resource> mit Ihnen geteilt |
And user "Carol" should get a notification with subject "Neue Freigabe" and message:
| message |
| Alice Hansen hat <resource> mit Ihnen geteilt |
And user "Brian" should have received the following email from user "Alice"
"""
Hallo Brian Murphy
%displayname% hat "<resource>" mit Ihnen geteilt.
Zum Ansehen hier klicken: %base_url%/files/shares/with-me
"""
And user "Carol" should have received the following email from user "Alice"
"""
Hallo Carol King
%displayname% hat "<resource>" mit Ihnen geteilt.
Zum Ansehen hier klicken: %base_url%/files/shares/with-me
"""
Examples:
| resource |
| HelloWorld |
| text.txt |
@issue-11908 @email
Scenario: recipient should not get PO file headers on removing access from resource for translated locale
Given user "Brian" has switched the system language to "es" using the Graph API
And user "Alice" has sent the following resource share invitation:
| resource | textfile1.txt |
| space | Personal |
| sharee | Brian |
| shareType | user |
| permissionsRole | Viewer |
When user "Alice" removes the access of user "Brian" from resource "textfile1.txt" of space "Personal" using the Graph API
Then the HTTP status code should be "204"
And user "Brian" should get a notification with subject "Recurso no compartido" and message:
| message |
| Alice Hansen dejó de compartir textfile1.txt contigo |
And user "Brian" should have received the following email from user "Alice"
"""
Hola Brian Murphy,
Alice Hansen ha eliminado la compartición 'textfile1.txt' con usted.
incluso habiendo eliminado esta compartición, usted podría tener acceso a través de otras comparticiones y/o membresías en spaces.
---
ownCloud - Store. Share. Work.
"""