@api @files_sharing-app-required Feature: sharing Background: Given auto-accept shares has been disabled And user "Alice" has been created with default attributes and without skeleton files @smokeTest @skipOnEncryptionType:user-keys @issue-32322 Scenario Outline: Creating a share of a file with a user, the default permissions are read(1)+update(2)+can-share(16) Given using OCS API version "" And user "Brian" has been created with default attributes and without skeleton files And user "Alice" has uploaded file with content "ownCloud test text file 0" to "/textfile0.txt" When user "Alice" shares file "textfile0.txt" with user "Brian" using the sharing API Then the OCS status code should be "" And the HTTP status code should be "200" And the fields of the last response to user "Alice" sharing with user "Brian" should include | share_with | %username% | | share_with_displayname | %displayname% | | share_with_user_type | 0 | | file_target | /Shares/textfile0.txt | | path | /textfile0.txt | | permissions | share,read,update | | uid_owner | %username% | | displayname_owner | %displayname% | | item_type | file | | mimetype | text/plain | | storage_id | ANY_VALUE | | share_type | user | When user "Brian" accepts share "/textfile0.txt" offered by user "Alice" using the sharing API Then the OCS status code should be "" And the HTTP status code should be "200" And the content of file "/Shares/textfile0.txt" for user "Brian" should be "ownCloud test text file 0" Examples: | ocs_api_version | ocs_status_code | | 1 | 100 | | 2 | 200 | @smokeTest @skipOnEncryptionType:user-keys @issue-32322 @issue-ocis-2133 Scenario Outline: Creating a share of a file containing commas in the filename, with a user, the default permissions are read(1)+update(2)+can-share(16) Given using OCS API version "" And user "Brian" has been created with default attributes and without skeleton files And user "Alice" has uploaded file with content "file with comma in filename" to "/sample,1.txt" When user "Alice" shares file "sample,1.txt" with user "Brian" using the sharing API Then the OCS status code should be "" And the HTTP status code should be "200" And the fields of the last response to user "Alice" sharing with user "Brian" should include | share_with | %username% | | share_with_displayname | %displayname% | | file_target | /Shares/sample,1.txt | | path | /sample,1.txt | | permissions | share,read,update | | uid_owner | %username% | | displayname_owner | %displayname% | | item_type | file | | mimetype | text/plain | | storage_id | ANY_VALUE | | share_type | user | When user "Brian" accepts share "/sample,1.txt" offered by user "Alice" using the sharing API Then the OCS status code should be "" And the HTTP status code should be "200" And the content of file "/Shares/sample,1.txt" for user "Brian" should be "file with comma in filename" Examples: | ocs_api_version | ocs_status_code | | 1 | 100 | | 2 | 200 | @issue-ocis-2133 @issue-ocis-reva-301 @issue-ocis-reva-302 Scenario Outline: Creating a share of a file with a user and asking for various permission combinations Given using OCS API version "" And user "Brian" has been created with default attributes and without skeleton files And user "Alice" has uploaded file with content "ownCloud test text file 0" to "/textfile0.txt" When user "Alice" shares file "textfile0.txt" with user "Brian" with permissions using the sharing API Then the OCS status code should be "" And the HTTP status code should be "200" And the fields of the last response to user "Alice" sharing with user "Brian" should include | share_with | %username% | | share_with_displayname | %displayname% | | file_target | /Shares/textfile0.txt | | path | /textfile0.txt | | permissions | | | uid_owner | %username% | | displayname_owner | %displayname% | | item_type | file | | mimetype | text/plain | | storage_id | ANY_VALUE | | share_type | user | Examples: | ocs_api_version | requested_permissions | granted_permissions | ocs_status_code | # Ask for full permissions. You get share plus read plus update. create and delete do not apply to shares of a file | 1 | 31 | 19 | 100 | | 2 | 31 | 19 | 200 | # Ask for read, share (17), create and delete. You get share plus read | 1 | 29 | 17 | 100 | | 2 | 29 | 17 | 200 | # Ask for read, update, create, delete. You get read plus update. | 1 | 15 | 3 | 100 | | 2 | 15 | 3 | 200 | # Ask for just update. You get exactly update (you do not get read or anything else) | 1 | 2 | 2 | 100 | | 2 | 2 | 2 | 200 | Scenario Outline: Creating a share of a file with no permissions should fail Given using OCS API version "" And user "Brian" has been created with default attributes and without skeleton files And user "Alice" has uploaded file with content "Random data" to "randomfile.txt" When user "Alice" shares file "randomfile.txt" with user "Brian" with permissions "0" using the sharing API Then the OCS status code should be "400" And the HTTP status code should be "" And the sharing API should report that no shares are shared with user "Brian" And as "Brian" file "/Shares/randomfile.txt" should not exist And as "Brian" file "randomfile.txt" should not exist Examples: | ocs_api_version | http_status_code | | 1 | 200 | | 2 | 400 | Scenario Outline: Creating a share of a folder with no permissions should fail Given using OCS API version "" And user "Brian" has been created with default attributes and without skeleton files And user "Alice" has created folder "/afolder" When user "Alice" shares folder "afolder" with user "Brian" with permissions "0" using the sharing API Then the OCS status code should be "400" And the HTTP status code should be "" And the sharing API should report that no shares are shared with user "Brian" And as "Brian" folder "/Shares/afolder" should not exist And as "Brian" folder "afolder" should not exist Examples: | ocs_api_version | http_status_code | | 1 | 200 | | 2 | 400 | @issue-ocis-2133 Scenario Outline: Creating a share of a folder with a user, the default permissions are all permissions(31) Given using OCS API version "" And user "Brian" has been created with default attributes and without skeleton files And user "Alice" has created folder "/FOLDER" When user "Alice" shares folder "/FOLDER" with user "Brian" using the sharing API Then the OCS status code should be "" And the HTTP status code should be "200" And the fields of the last response to user "Alice" sharing with user "Brian" should include | share_with | %username% | | share_with_displayname | %displayname% | | file_target | /Shares/FOLDER | | path | /FOLDER | | permissions | all | | uid_owner | %username% | | displayname_owner | %displayname% | | item_type | folder | | mimetype | httpd/unix-directory | | storage_id | ANY_VALUE | | share_type | user | Examples: | ocs_api_version | ocs_status_code | | 1 | 100 | | 2 | 200 | @issue-ocis-reva-34 Scenario Outline: Creating a share of a file with a group, the default permissions are read(1)+update(2)+can-share(16) Given using OCS API version "" And group "grp1" has been created And user "Alice" has uploaded file with content "ownCloud test text file 0" to "/textfile0.txt" When user "Alice" shares file "/textfile0.txt" with group "grp1" using the sharing API Then the OCS status code should be "" And the HTTP status code should be "200" And the fields of the last response to user "Alice" sharing with group "grp1" should include | share_with | grp1 | | share_with_displayname | grp1 | | file_target | /Shares/textfile0.txt | | path | /textfile0.txt | | permissions | share,read,update | | uid_owner | %username% | | displayname_owner | %displayname% | | item_type | file | | mimetype | text/plain | | storage_id | ANY_VALUE | | share_type | group | Examples: | ocs_api_version | ocs_status_code | | 1 | 100 | | 2 | 200 | @issue-ocis-reva-34 Scenario Outline: Creating a share of a folder with a group, the default permissions are all permissions(31) Given using OCS API version "" And group "grp1" has been created And user "Alice" has created folder "/FOLDER" When user "Alice" shares folder "/FOLDER" with group "grp1" using the sharing API Then the OCS status code should be "" And the HTTP status code should be "200" And the fields of the last response to user "Alice" sharing with user "Brian" should include | share_with | grp1 | | share_with_displayname | grp1 | | file_target | /Shares/FOLDER | | path | /FOLDER | | permissions | all | | uid_owner | %username% | | displayname_owner | %displayname% | | item_type | folder | | mimetype | httpd/unix-directory | | storage_id | ANY_VALUE | | share_type | group | Examples: | ocs_api_version | ocs_status_code | | 1 | 100 | | 2 | 200 | @smokeTest Scenario Outline: Share of folder to a group Given using OCS API version "" And these users have been created with default attributes and without skeleton files: | username | | Brian | | Carol | And group "grp1" has been created And user "Brian" has been added to group "grp1" And user "Carol" has been added to group "grp1" And user "Alice" has created folder "/PARENT" And user "Alice" has uploaded file with content "file in parent folder" to "/PARENT/parent.txt" When user "Alice" shares folder "/PARENT" with group "grp1" using the sharing API And user "Brian" accepts share "/PARENT" offered by user "Alice" using the sharing API And user "Carol" accepts share "/PARENT" offered by user "Alice" using the sharing API Then the OCS status code of responses on all endpoints should be "" And the HTTP status code of responses on all endpoints should be "200" And user "Brian" should see the following elements | /Shares/PARENT/ | | /Shares/PARENT/parent.txt | And user "Carol" should see the following elements | /Shares/PARENT/ | | /Shares/PARENT/parent.txt | Examples: | ocs_api_version | ocs_status_code | | 1 | 100 | | 2 | 200 | @smokeTest @skipOnReva # reva doesn't have a pre-created admin user Scenario Outline: User included in multiple groups receives a share from the admin Given using OCS API version "" And group "grp1" has been created And group "grp2" has been created And user "Alice" has been added to group "grp1" And user "Alice" has been added to group "grp2" And admin has created folder "/PARENT" When user "admin" shares folder "/PARENT" with group "grp1" using the sharing API And user "Alice" accepts share "/PARENT" offered by user "admin" using the sharing API Then the OCS status code of responses on all endpoints should be "" And the HTTP status code of responses on all endpoints should be "200" Examples: | ocs_api_version | ocs_status_code | | 1 | 100 | | 2 | 200 | @smokeTest Scenario Outline: user included in multiple groups, shares a folder with a group Given using OCS API version "" And these users have been created with default attributes and without skeleton files: | username | | Brian | And group "grp1" has been created And group "grp2" has been created And user "Alice" has been added to group "grp1" And user "Alice" has been added to group "grp2" And user "Brian" has been added to group "grp1" And user "Brian" has been added to group "grp2" And user "Alice" has created folder "/PARENT" When user "Alice" shares folder "/PARENT" with group "grp1" using the sharing API And user "Brian" accepts share "/PARENT" offered by user "Alice" using the sharing API Then the OCS status code of responses on all endpoints should be "" And the HTTP status code of responses on all endpoints should be "200" Examples: | ocs_api_version | ocs_status_code | | 1 | 100 | | 2 | 200 | Scenario Outline: sharing again an own file while belonging to a group Given using OCS API version "" And user "Brian" has been created with default attributes and without skeleton files And group "grp1" has been created And user "Alice" has been added to group "grp1" And user "Brian" has been added to group "grp1" And user "Brian" has uploaded file with content "ownCloud test text file 0" to "/randomfile.txt" And user "Brian" has shared file "randomfile.txt" with group "grp1" And user "Brian" has deleted the last share When user "Brian" shares file "/randomfile.txt" with group "grp1" using the sharing API And user "Alice" accepts share "/randomfile.txt" offered by user "Brian" using the sharing API Then the OCS status code of responses on all endpoints should be "" And the HTTP status code of responses on all endpoints should be "200" And as "Alice" file "/Shares/randomfile.txt" should exist Examples: | ocs_api_version | ocs_status_code | | 1 | 100 | | 2 | 200 | @issue-ocis-2201 Scenario Outline: sharing subfolder of already shared folder, GET result is correct Given using OCS API version "" And these users have been created with default attributes and without skeleton files: | username | | Brian | | Carol | | David | | Emily | And user "Alice" has created folder "/folder1" And user "Alice" has shared folder "/folder1" with user "Brian" And user "Alice" has shared folder "/folder1" with user "Carol" And user "Alice" has created folder "/folder1/folder2" And user "Alice" has shared folder "/folder1/folder2" with user "David" And user "Alice" has shared folder "/folder1/folder2" with user "Emily" When user "Alice" sends HTTP method "GET" to OCS API endpoint "/apps/files_sharing/api/v1/shares" Then the OCS status code should be "" And the HTTP status code should be "200" And the response should contain 4 entries And folder "/folder1" should be included as path in the response And folder "/folder1/folder2" should be included as path in the response When user "Alice" sends HTTP method "GET" to OCS API endpoint "/apps/files_sharing/api/v1/shares?path=/folder1/folder2" Then the OCS status code should be "" And the HTTP status code should be "200" And the response should contain 2 entries And folder "/folder1" should not be included as path in the response And folder "/folder1/folder2" should be included as path in the response Examples: | ocs_api_version | ocs_status_code | | 1 | 100 | | 2 | 200 | Scenario Outline: user shares a file with file name longer than 64 chars to another user Given using OCS API version "" And user "Brian" has been created with default attributes and without skeleton files And user "Alice" has uploaded file with content "ownCloud test text file 0" to "/textfile0.txt" And user "Alice" has moved file "textfile0.txt" to "aquickbrownfoxjumpsoveraverylazydogaquickbrownfoxjumpsoveralazydog.txt" When user "Alice" shares file "aquickbrownfoxjumpsoveraverylazydogaquickbrownfoxjumpsoveralazydog.txt" with user "Brian" using the sharing API And user "Brian" accepts share "/aquickbrownfoxjumpsoveraverylazydogaquickbrownfoxjumpsoveralazydog.txt" offered by user "Alice" using the sharing API Then the OCS status code of responses on all endpoints should be "" And the HTTP status code of responses on all endpoints should be "200" And as "Brian" file "/Shares/aquickbrownfoxjumpsoveraverylazydogaquickbrownfoxjumpsoveralazydog.txt" should exist Examples: | ocs_api_version | ocs_status_code | | 1 | 100 | | 2 | 200 | Scenario Outline: user shares a file with file name longer than 64 chars to a group Given using OCS API version "" And group "grp1" has been created And user "Brian" has been created with default attributes and without skeleton files And user "Brian" has been added to group "grp1" And user "Alice" has uploaded file with content "ownCloud test text file 0" to "/textfile0.txt" And user "Alice" has moved file "textfile0.txt" to "aquickbrownfoxjumpsoveraverylazydogaquickbrownfoxjumpsoveralazydog.txt" When user "Alice" shares file "aquickbrownfoxjumpsoveraverylazydogaquickbrownfoxjumpsoveralazydog.txt" with group "grp1" using the sharing API And user "Brian" accepts share "/aquickbrownfoxjumpsoveraverylazydogaquickbrownfoxjumpsoveralazydog.txt" offered by user "Alice" using the sharing API Then the OCS status code of responses on all endpoints should be "" And the HTTP status code of responses on all endpoints should be "200" And as "Brian" file "/Shares/aquickbrownfoxjumpsoveraverylazydogaquickbrownfoxjumpsoveralazydog.txt" should exist Examples: | ocs_api_version | ocs_status_code | | 1 | 100 | | 2 | 200 | Scenario Outline: user shares a folder with folder name longer than 64 chars to another user Given using OCS API version "" And user "Brian" has been created with default attributes and without skeleton files And user "Alice" has uploaded file with content "ownCloud test" to "/textfile0.txt" And user "Alice" has created folder "/aquickbrownfoxjumpsoveraverylazydogaquickbrownfoxjumpsoveralazydog" And user "Alice" has moved file "textfile0.txt" to "aquickbrownfoxjumpsoveraverylazydogaquickbrownfoxjumpsoveralazydog/textfile0.txt" When user "Alice" shares folder "/aquickbrownfoxjumpsoveraverylazydogaquickbrownfoxjumpsoveralazydog" with user "Brian" using the sharing API And user "Brian" accepts share "/aquickbrownfoxjumpsoveraverylazydogaquickbrownfoxjumpsoveralazydog" offered by user "Alice" using the sharing API Then the OCS status code of responses on all endpoints should be "" And the HTTP status code of responses on all endpoints should be "200" And the content of file "/Shares/aquickbrownfoxjumpsoveraverylazydogaquickbrownfoxjumpsoveralazydog/textfile0.txt" for user "Brian" should be "ownCloud test" Examples: | ocs_api_version | ocs_status_code | | 1 | 100 | | 2 | 200 | Scenario Outline: user shares a folder with folder name longer than 64 chars to a group Given using OCS API version "" And group "grp1" has been created And user "Brian" has been created with default attributes and without skeleton files And user "Brian" has been added to group "grp1" And user "Alice" has uploaded file with content "ownCloud test" to "/textfile0.txt" And user "Alice" has created folder "/aquickbrownfoxjumpsoveraverylazydogaquickbrownfoxjumpsoveralazydog" And user "Alice" has moved file "textfile0.txt" to "aquickbrownfoxjumpsoveraverylazydogaquickbrownfoxjumpsoveralazydog/textfile0.txt" When user "Alice" shares folder "/aquickbrownfoxjumpsoveraverylazydogaquickbrownfoxjumpsoveralazydog" with group "grp1" using the sharing API And user "Brian" accepts share "/aquickbrownfoxjumpsoveraverylazydogaquickbrownfoxjumpsoveralazydog" offered by user "Alice" using the sharing API Then the OCS status code of responses on all endpoints should be "" And the HTTP status code of responses on all endpoints should be "200" And the content of file "/Shares/aquickbrownfoxjumpsoveraverylazydogaquickbrownfoxjumpsoveralazydog/textfile0.txt" for user "Brian" should be "ownCloud test" Examples: | ocs_api_version | ocs_status_code | | 1 | 100 | | 2 | 200 | @issue-ocis-reva-11 Scenario: share with user when username contains capital letters Given these users have been created without skeleton files: | username | | brian | And user "Alice" has uploaded file with content "Random data" to "/randomfile.txt" When user "Alice" shares file "/randomfile.txt" with user "BRIAN" using the sharing API Then the OCS status code should be "100" And the HTTP status code should be "200" And the fields of the last response to user "Alice" sharing with user "BRIAN" should include | share_with | brian | | file_target | /Shares/randomfile.txt | | path | /randomfile.txt | | permissions | share,read,update | | uid_owner | %username% | When user "brian" accepts share "/randomfile.txt" offered by user "Alice" using the sharing API Then the OCS status code should be "100" And the HTTP status code should be "200" And user "brian" should see the following elements | /Shares/randomfile.txt | And the content of file "Shares/randomfile.txt" for user "brian" should be "Random data" @skipOnLDAP Scenario: creating a new share with user of a group when username contains capital letters Given these users have been created without skeleton files: | username | | Brian | And group "grp1" has been created And user "Brian" has been added to group "grp1" And user "Alice" has uploaded file with content "Random data" to "/randomfile.txt" And user "Alice" has shared file "randomfile.txt" with group "grp1" When user "Brian" accepts share "/randomfile.txt" offered by user "Alice" using the sharing API Then the OCS status code should be "100" And the HTTP status code should be "200" And user "Brian" should see the following elements | /Shares/randomfile.txt | And the content of file "/Shares/randomfile.txt" for user "Brian" should be "Random data" @issue-ocis-reva-34 Scenario Outline: Share of folder to a group with emoji in the name Given using OCS API version "" And these users have been created with default attributes and without skeleton files: | username | | Brian | | Carol | And group "😀 😁" has been created And user "Brian" has been added to group "😀 😁" And user "Carol" has been added to group "😀 😁" And user "Alice" has created folder "/PARENT" And user "Alice" has uploaded file with content "file in parent folder" to "/PARENT/parent.txt" When user "Alice" shares folder "/PARENT" with group "😀 😁" using the sharing API Then the OCS status code should be "" And the HTTP status code should be "200" And user "Brian" accepts share "/PARENT" offered by user "Alice" using the sharing API And the OCS status code should be "" And the HTTP status code should be "200" And user "Carol" accepts share "/PARENT" offered by user "Alice" using the sharing API And the OCS status code should be "" And the HTTP status code should be "200" And user "Brian" should see the following elements | /Shares/PARENT/ | | /Shares/PARENT/parent.txt | And user "Carol" should see the following elements | /Shares/PARENT/ | | /Shares/PARENT/parent.txt | Examples: | ocs_api_version | ocs_status_code | | 1 | 100 | | 2 | 200 | @skipOnEncryptionType:user-keys @encryption-issue-132 @skipOnLDAP @skipOnGraph Scenario Outline: share with a group and then add a user to that group Given using OCS API version "" And these users have been created with default attributes and without skeleton files: | username | | Brian | | Carol | And these groups have been created: | groupname | | grp1 | And user "Brian" has been added to group "grp1" And user "Alice" has uploaded file with content "some content" to "lorem.txt" When user "Alice" shares file "lorem.txt" with group "grp1" using the sharing API And user "Brian" accepts share "/lorem.txt" offered by user "Alice" using the sharing API And the administrator adds user "Carol" to group "grp1" using the provisioning API And user "Carol" accepts share "/lorem.txt" offered by user "Alice" using the sharing API Then the OCS status code of responses on all endpoints should be "" And the HTTP status code of responses on all endpoints should be "200" And the content of file "/Shares/lorem.txt" for user "Brian" should be "some content" And the content of file "/Shares/lorem.txt" for user "Carol" should be "some content" Examples: | ocs_api_version | ocs_status_code | | 1 | 100 | | 2 | 200 | @skipOnLDAP # deleting an LDAP group is not relevant or possible using the provisioning API Scenario Outline: shares shared to deleted group should not be available Given using OCS API version "" And these users have been created with default attributes and without skeleton files: | username | | Brian | | Carol | And group "grp1" has been created And user "Brian" has been added to group "grp1" And user "Carol" has been added to group "grp1" And user "Alice" has uploaded file with content "ownCloud test text file 0" to "/textfile0.txt" And user "Alice" has shared file "/textfile0.txt" with group "grp1" When user "Alice" sends HTTP method "GET" to OCS API endpoint "/apps/files_sharing/api/v1/shares" Then the OCS status code should be "" And the HTTP status code should be "200" And the fields of the last response to user "Alice" sharing with group "grp1" should include | share_with | grp1 | | file_target | | | path | /textfile0.txt | | uid_owner | %username% | When user "Brian" accepts share "/textfile0.txt" offered by user "Alice" using the sharing API And user "Carol" accepts share "/textfile0.txt" offered by user "Alice" using the sharing API Then as "Brian" file "/Shares/textfile0.txt" should exist And as "Carol" file "/Shares/textfile0.txt" should exist When the administrator deletes group "grp1" using the provisioning API And user "Alice" sends HTTP method "GET" to OCS API endpoint "/apps/files_sharing/api/v1/shares" Then the OCS status code should be "" And the HTTP status code should be "200" And file "/textfile0.txt" should not be included as path in the response And as "Brian" file "/Shares/textfile0.txt" should not exist And as "Carol" file "/Shares/textfile0.txt" should not exist @skipOnOcV10 @issue-ocis-2441 Examples: | ocs_api_version | ocs_status_code | path | | 1 | 100 | /textfile0.txt | | 2 | 200 | /textfile0.txt | @skipOnFilesClassifier @issue-files-classifier-291 @issue-ocis-2146 Scenario: Share a file by multiple channels and download from sub-folder and direct file share Given these users have been created with default attributes and without skeleton files: | username | | Brian | | Carol | And group "grp1" has been created And user "Brian" has been added to group "grp1" And user "Carol" has been added to group "grp1" And user "Alice" has created folder "/common" And user "Alice" has created folder "/common/sub" And user "Alice" has shared folder "common" with group "grp1" And user "Brian" has accepted share "/common" offered by user "Alice" And user "Carol" has accepted share "/common" offered by user "Alice" And user "Brian" has uploaded file with content "ownCloud" to "/textfile0.txt" And user "Brian" has shared file "textfile0.txt" with user "Carol" And user "Carol" has accepted share "/textfile0.txt" offered by user "Brian" And user "Brian" has moved file "/textfile0.txt" to "/Shares/common/textfile0.txt" And user "Brian" has moved file "/Shares/common/textfile0.txt" to "/Shares/common/sub/textfile0.txt" When user "Carol" uploads file "filesForUpload/file_to_overwrite.txt" to "/Shares/textfile0.txt" using the WebDAV API Then the HTTP status code should be "204" And the content of file "/Shares/common/sub/textfile0.txt" for user "Carol" should be "BLABLABLA" plus end-of-line And the content of file "/Shares/textfile0.txt" for user "Carol" should be "BLABLABLA" plus end-of-line And user "Carol" should see the following elements | /Shares/common/sub/textfile0.txt | | /Shares/textfile0.txt | And the content of file "/Shares/common/sub/textfile0.txt" for user "Brian" should be "BLABLABLA" plus end-of-line And the content of file "/common/sub/textfile0.txt" for user "Alice" should be "BLABLABLA" plus end-of-line @issue-enterprise-3896 @issue-ocis-2201 Scenario Outline: sharing back to resharer is allowed Given these users have been created with default attributes and without skeleton files: | username | | Brian | | Carol | And user "Alice" has created folder "userZeroFolder" And user "Alice" has shared folder "userZeroFolder" with user "Brian" And user "Brian" has accepted share "/userZeroFolder" offered by user "Alice" And user "Brian" has created folder "/Shares/userZeroFolder/userOneFolder" And user "Brian" has shared folder "/Shares/userZeroFolder/userOneFolder" with user "Carol" with permissions "read, share" And user "Carol" has accepted share "" offered by user "Brian" When user "Carol" shares folder "/Shares/userOneFolder" with user "Brian" using the sharing API Then the HTTP status code should be "200" # Then the HTTP status code should be "405" And the sharing API should report to user "Brian" that no shares are in the pending state And as "Brian" folder "/Shares/userOneFolder" should not exist Examples: | pending_share_path | | /userOneFolder | @issue-enterprise-3896 @issue-ocis-2201 Scenario Outline: sharing back to original sharer is allowed Given these users have been created with default attributes and without skeleton files: | username | | Brian | | Carol | And user "Alice" has created folder "userZeroFolder" And user "Alice" has shared folder "userZeroFolder" with user "Brian" And user "Brian" has accepted share "/userZeroFolder" offered by user "Alice" And user "Brian" has created folder "/Shares/userZeroFolder/userOneFolder" And user "Brian" has shared folder "/Shares/userZeroFolder/userOneFolder" with user "Carol" with permissions "read, share" And user "Carol" has accepted share "" offered by user "Brian" When user "Carol" shares folder "/Shares/userOneFolder" with user "Alice" using the sharing API Then the HTTP status code should be "200" # Then the HTTP status code should be "405" And the sharing API should report to user "Alice" that no shares are in the pending state And as "Alice" folder "/Shares/userOneFolder" should not exist Examples: | pending_share_path | | /userOneFolder | @issue-enterprise-3896 @issue-ocis-2201 Scenario Outline: sharing a subfolder to a user that already received parent folder share Given these users have been created with default attributes and without skeleton files: | username | | Brian | | Carol | | David | And user "Alice" has created folder "userZeroFolder" And user "Alice" has shared folder "userZeroFolder" with user "Brian" And user "Alice" has shared folder "userZeroFolder" with user "Carol" And user "Brian" has accepted share "/userZeroFolder" offered by user "Alice" And user "Carol" has accepted share "/userZeroFolder" offered by user "Alice" And user "Brian" has created folder "/Shares/userZeroFolder/userOneFolder" And user "Brian" has shared folder "/Shares/userZeroFolder/userOneFolder" with user "David" with permissions "read, share" And user "David" has accepted share "" offered by user "Brian" When user "David" shares folder "/Shares/userOneFolder" with user "Carol" using the sharing API Then the HTTP status code should be "200" # Then the HTTP status code should be "405" And the sharing API should report to user "Carol" that no shares are in the pending state And as "Carol" folder "/Shares/userOneFolder" should not exist Examples: | pending_share_path | | /userOneFolder | @smokeTest Scenario Outline: Creating a share of a renamed file Given using OCS API version "" And user "Brian" has been created with default attributes and without skeleton files And user "Alice" has uploaded file with content "ownCloud test text file 0" to "/textfile0.txt" And user "Alice" has moved file "/textfile0.txt" to "/renamed.txt" When user "Alice" shares file "renamed.txt" with user "Brian" using the sharing API Then the OCS status code should be "" And the HTTP status code should be "200" And the fields of the last response to user "Alice" sharing with user "Brian" should include | share_with | %username% | | share_with_displayname | %displayname% | | file_target | /Shares/renamed.txt | | path | /renamed.txt | | permissions | share,read,update | | uid_owner | %username% | | displayname_owner | %displayname% | | item_type | file | | mimetype | text/plain | | storage_id | ANY_VALUE | | share_type | user | When user "Brian" accepts share "/renamed.txt" offered by user "Alice" using the sharing API Then the OCS status code should be "" And the HTTP status code should be "200" And the content of file "/Shares/renamed.txt" for user "Brian" should be "ownCloud test text file 0" Examples: | ocs_api_version | ocs_status_code | | 1 | 100 | | 2 | 200 | @issue-ocis-903 Scenario Outline: shares to a deleted user should not be listed as shares for the sharer Given using OCS API version "" And these users have been created with default attributes and without skeleton files: | username | | Brian | | Carol | And user "Alice" has uploaded file with content "ownCloud test text file 0" to "/textfile0.txt" And user "Alice" has shared file "textfile0.txt" with user "Brian" And user "Alice" has shared file "textfile0.txt" with user "Carol" And user "Brian" has accepted share "/textfile0.txt" offered by user "Alice" And user "Carol" has accepted share "/textfile0.txt" offered by user "Alice" And the administrator has deleted user "Brian" using the provisioning API When user "Alice" gets all the shares from the file "textfile0.txt" using the sharing API Then the OCS status code should be "" And the HTTP status code should be "200" And user "Carol" should be included in the response But user "Brian" should not be included in the response Examples: | ocs_api_version | ocs_status_code | | 1 | 100 | | 2 | 200 | @issue-ocis-719 Scenario Outline: Creating a share of a renamed file when another share exists Given using OCS API version "" And user "Brian" has been created with default attributes and without skeleton files And user "Alice" has created folder "/Folder1" And user "Alice" has created folder "/Folder2" And user "Alice" has shared folder "/Folder1" with user "Brian" And user "Brian" has accepted share "/Folder1" offered by user "Alice" And user "Alice" has moved file "/Folder2" to "/renamedFolder2" When user "Alice" shares folder "/renamedFolder2" with user "Brian" using the sharing API Then the OCS status code should be "" And the HTTP status code should be "200" And the fields of the last response to user "Alice" sharing with user "Brian" should include | share_with | %username% | | share_with_displayname | %displayname% | | file_target | /Shares/renamedFolder2 | | path | /renamedFolder2 | | permissions | all | | uid_owner | %username% | | displayname_owner | %displayname% | | item_type | folder | | mimetype | httpd/unix-directory | | storage_id | ANY_VALUE | | share_type | user | When user "Brian" accepts share "/renamedFolder2" offered by user "Alice" using the sharing API Then the OCS status code should be "" And the HTTP status code should be "200" And as "Brian" folder "/Shares/renamedFolder2" should exist Examples: | ocs_api_version | ocs_status_code | | 1 | 100 | | 2 | 200 | @issue-ocis-1710 Scenario Outline: Sharing a same file twice to the same group is not possible Given using OCS API version "" And group "grp1" has been created And user "Alice" has uploaded file with content "ownCloud test text file 0" to "/textfile0.txt" And user "Alice" has shared file "textfile0.txt" with group "grp1" When user "Alice" shares file "textfile0.txt" with group "grp1" using the sharing API Then the HTTP status code should be "" And the OCS status code should be "403" And the OCS status message should be "Path already shared with this group" Examples: | ocs-api-version | http-status | | 1 | 200 | | 2 | 403 | @issue-ocis-2215 Scenario Outline: Sharing the shares folder to users is not possible Given using OCS API version "" And user "Brian" has been created with default attributes and without skeleton files And user "Carol" has been created with default attributes and without skeleton files And user "Alice" has uploaded file with content "ownCloud test text file 0" to "/textfile0.txt" And user "Alice" has shared file "textfile0.txt" with user "Brian" And user "Brian" has accepted share "/textfile0.txt" offered by user "Alice" When user "Brian" shares folder "Shares" with user "Carol" using the sharing API Then the HTTP status code should be "" And the OCS status code should be "403" And the OCS status message should be "Path contains files shared with you" Examples: | ocs-api-version | http-status | | 1 | 200 | | 2 | 403 | @issue-ocis-2215 Scenario Outline: Sharing the shares folder to groups is not possible Given using OCS API version "" And user "Brian" has been created with default attributes and without skeleton files And user "Carol" has been created with default attributes and without skeleton files And group "share_group" has been created And user "Carol" has been added to group "share_group" And user "Alice" has uploaded file with content "ownCloud test text file 0" to "/textfile0.txt" And user "Alice" has shared file "textfile0.txt" with user "Brian" And user "Brian" has accepted share "/textfile0.txt" offered by user "Alice" When user "Brian" shares folder "Shares" with group "share_group" using the sharing API Then the HTTP status code should be "" And the OCS status code should be "403" And the OCS status message should be "Path contains files shared with you" Examples: | ocs-api-version | http-status | | 1 | 200 | | 2 | 403 | @issue-ocis-2215 Scenario Outline: Sharing the shares folder as public link is not possible Given using OCS API version "" And user "Brian" has been created with default attributes and without skeleton files And user "Alice" has uploaded file with content "ownCloud test text file 0" to "/textfile0.txt" And user "Alice" has shared file "textfile0.txt" with user "Brian" And user "Brian" has accepted share "/textfile0.txt" offered by user "Alice" When user "Brian" creates a public link share of folder "Shares" using the sharing API Then the HTTP status code should be "" And the OCS status code should be "403" And the OCS status message should be "Path contains files shared with you" Examples: | ocs-api-version | http-status | | 1 | 200 | | 2 | 403 |