aboutsummaryrefslogtreecommitdiffstats
path: root/build/integration/features
diff options
context:
space:
mode:
authorJoas Schilling <coding@schilljs.com>2023-10-26 16:22:11 +0200
committerJoas Schilling <coding@schilljs.com>2024-01-26 13:53:29 +0100
commit058b69eef02be9bfa77e9b6a1d12d15f29ac6b0c (patch)
tree5ce5a8ad506eaa49039852b02a4381fda8c2c4f5 /build/integration/features
parent08ec513f2956c1beb49cf12385e945ec5e46eaea (diff)
downloadnextcloud-server-058b69eef02be9bfa77e9b6a1d12d15f29ac6b0c.tar.gz
nextcloud-server-058b69eef02be9bfa77e9b6a1d12d15f29ac6b0c.zip
chore: Move integration tests from drone to github
* Improve grouping as setting up CI took 3* the time of the test in average Signed-off-by: Joas Schilling <coding@schilljs.com>
Diffstat (limited to 'build/integration/features')
-rw-r--r--build/integration/features/caldav.feature77
-rw-r--r--build/integration/features/carddav.feature79
-rw-r--r--build/integration/features/checksums.feature76
-rw-r--r--build/integration/features/comments-search.feature271
-rw-r--r--build/integration/features/comments.feature215
-rw-r--r--build/integration/features/dav-v2.feature107
-rw-r--r--build/integration/features/download.feature294
-rw-r--r--build/integration/features/external-storage.feature62
-rw-r--r--build/integration/features/favorites.feature149
-rw-r--r--build/integration/features/tags.feature462
-rw-r--r--build/integration/features/transfer-ownership.feature594
-rw-r--r--build/integration/features/trashbin.feature81
-rw-r--r--build/integration/features/webdav-related.feature728
13 files changed, 0 insertions, 3195 deletions
diff --git a/build/integration/features/caldav.feature b/build/integration/features/caldav.feature
deleted file mode 100644
index e2cb4f8dc92..00000000000
--- a/build/integration/features/caldav.feature
+++ /dev/null
@@ -1,77 +0,0 @@
-Feature: caldav
- Scenario: Accessing a not existing calendar of another user
- Given user "user0" exists
- When "admin" requests calendar "user0/MyCalendar" on the endpoint "/remote.php/dav/calendars/"
- Then The CalDAV HTTP status code should be "404"
- And The exception is "Sabre\DAV\Exception\NotFound"
- And The error message is "Node with name 'MyCalendar' could not be found"
-
- Scenario: Accessing a not shared calendar of another user
- Given user "user0" exists
- Given "admin" creates a calendar named "MyCalendar"
- Given The CalDAV HTTP status code should be "201"
- When "user0" requests calendar "admin/MyCalendar" on the endpoint "/remote.php/dav/calendars/"
- Then The CalDAV HTTP status code should be "404"
- And The exception is "Sabre\DAV\Exception\NotFound"
- And The error message is "Node with name 'MyCalendar' could not be found"
-
- Scenario: Accessing a not shared calendar of another user via the legacy endpoint
- Given user "user0" exists
- Given "admin" creates a calendar named "MyCalendar"
- Given The CalDAV HTTP status code should be "201"
- When "user0" requests calendar "admin/MyCalendar" on the endpoint "/remote.php/caldav/calendars/"
- Then The CalDAV HTTP status code should be "404"
- And The exception is "Sabre\DAV\Exception\NotFound"
- And The error message is "Node with name 'MyCalendar' could not be found"
-
- Scenario: Accessing a not existing calendar of another user
- Given user "user0" exists
- When "user0" requests calendar "admin/MyCalendar" on the endpoint "/remote.php/dav/calendars/"
- Then The CalDAV HTTP status code should be "404"
- And The exception is "Sabre\DAV\Exception\NotFound"
- And The error message is "Node with name 'MyCalendar' could not be found"
-
- Scenario: Accessing a not existing calendar of another user via the legacy endpoint
- Given user "user0" exists
- When "user0" requests calendar "admin/MyCalendar" on the endpoint "/remote.php/caldav/calendars/"
- Then The CalDAV HTTP status code should be "404"
- And The exception is "Sabre\DAV\Exception\NotFound"
- And The error message is "Node with name 'MyCalendar' could not be found"
-
- Scenario: Accessing a not existing calendar of myself
- Given user "user0" exists
- When "user0" requests calendar "admin/MyCalendar" on the endpoint "/remote.php/dav/calendars/"
- Then The CalDAV HTTP status code should be "404"
- And The exception is "Sabre\DAV\Exception\NotFound"
- And The error message is "Node with name 'MyCalendar' could not be found"
-
- Scenario: Creating a new calendar
- When "admin" creates a calendar named "MyCalendar"
- Then The CalDAV HTTP status code should be "201"
- And "admin" requests calendar "admin/MyCalendar" on the endpoint "/remote.php/dav/calendars/"
- Then The CalDAV HTTP status code should be "207"
-
- Scenario: Propfind on public calendar endpoint without calendars
- When "admin" creates a calendar named "MyCalendar"
- Then The CalDAV HTTP status code should be "201"
- And "admin" publicly shares the calendar named "MyCalendar"
- Then The CalDAV HTTP status code should be "202"
- When "admin" requests calendar "/" on the endpoint "/remote.php/dav/public-calendars"
- Then The CalDAV HTTP status code should be "207"
- Then There should be "0" calendars in the response body
-
- Scenario: Create calendar request for non-existing calendar of another user
- Given user "user0" exists
- When "user0" sends a create calendar request to "admin/MyCalendar2" on the endpoint "/remote.php/dav/calendars/"
- Then The CalDAV HTTP status code should be "404"
- And The exception is "Sabre\DAV\Exception\NotFound"
- And The error message is "Node with name 'admin' could not be found"
-
- Scenario: Create calendar request for existing calendar of another user
- Given user "user0" exists
- When "admin" creates a calendar named "MyCalendar2"
- Then The CalDAV HTTP status code should be "201"
- When "user0" sends a create calendar request to "admin/MyCalendar2" on the endpoint "/remote.php/dav/calendars/"
- Then The CalDAV HTTP status code should be "404"
- And The exception is "Sabre\DAV\Exception\NotFound"
- And The error message is "Node with name 'admin' could not be found"
diff --git a/build/integration/features/carddav.feature b/build/integration/features/carddav.feature
deleted file mode 100644
index 9c9df6ddd94..00000000000
--- a/build/integration/features/carddav.feature
+++ /dev/null
@@ -1,79 +0,0 @@
-Feature: carddav
- Scenario: Accessing a not existing addressbook of another user
- Given user "user0" exists
- When "admin" requests addressbook "user0/MyAddressbook" with statuscode "404" on the endpoint "/remote.php/dav/addressbooks/users/"
- And The CardDAV exception is "Sabre\DAV\Exception\NotFound"
- And The CardDAV error message is "Addressbook with name 'MyAddressbook' could not be found"
-
- Scenario: Accessing a not shared addressbook of another user
- Given user "user0" exists
- Given "admin" creates an addressbook named "MyAddressbook" with statuscode "201"
- When "user0" requests addressbook "admin/MyAddressbook" with statuscode "404" on the endpoint "/remote.php/dav/addressbooks/users/"
- And The CardDAV exception is "Sabre\DAV\Exception\NotFound"
- And The CardDAV error message is "Addressbook with name 'MyAddressbook' could not be found"
-
- Scenario: Accessing a not existing addressbook of another user via legacy endpoint
- Given user "user0" exists
- When "admin" requests addressbook "user0/MyAddressbook" with statuscode "404" on the endpoint "/remote.php/carddav/addressbooks/"
- And The CardDAV exception is "Sabre\DAV\Exception\NotFound"
- And The CardDAV error message is "Addressbook with name 'MyAddressbook' could not be found"
-
- Scenario: Accessing a not shared addressbook of another user via legacy endpoint
- Given user "user0" exists
- Given "admin" creates an addressbook named "MyAddressbook" with statuscode "201"
- When "user0" requests addressbook "admin/MyAddressbook" with statuscode "404" on the endpoint "/remote.php/carddav/addressbooks/"
- And The CardDAV exception is "Sabre\DAV\Exception\NotFound"
- And The CardDAV error message is "Addressbook with name 'MyAddressbook' could not be found"
-
- Scenario: Accessing a not existing addressbook of myself
- Given user "user0" exists
- When "user0" requests addressbook "admin/MyAddressbook" with statuscode "404" on the endpoint "/remote.php/dav/addressbooks/users/"
- And The CardDAV exception is "Sabre\DAV\Exception\NotFound"
- And The CardDAV error message is "Addressbook with name 'MyAddressbook' could not be found"
-
- Scenario: Creating a new addressbook
- When "admin" creates an addressbook named "MyAddressbook" with statuscode "201"
- Then "admin" requests addressbook "admin/MyAddressbook" with statuscode "207" on the endpoint "/remote.php/dav/addressbooks/users/"
-
- Scenario: Accessing ones own contact
- Given "admin" creates an addressbook named "MyAddressbook" with statuscode "201"
- Given "admin" uploads the contact "bjoern.vcf" to the addressbook "MyAddressbook"
- When Downloading the contact "bjoern.vcf" from addressbook "MyAddressbook" as user "admin"
- Then The following HTTP headers should be set
- |Content-Disposition|attachment; filename*=UTF-8''bjoern.vcf; filename="bjoern.vcf"|
- |Content-Type|text/vcard; charset=utf-8|
- |Content-Security-Policy|default-src 'none';|
- |X-Content-Type-Options |nosniff|
- |X-Frame-Options|SAMEORIGIN|
- |X-Permitted-Cross-Domain-Policies|none|
- |X-Robots-Tag|noindex, nofollow|
- |X-XSS-Protection|1; mode=block|
-
- Scenario: Exporting the picture of ones own contact
- Given "admin" creates an addressbook named "MyAddressbook" with statuscode "201"
- Given "admin" uploads the contact "bjoern.vcf" to the addressbook "MyAddressbook"
- When Exporting the picture of contact "bjoern.vcf" from addressbook "MyAddressbook" as user "admin"
- Then The following HTTP headers should be set
- |Content-Disposition|attachment; filename=bjoern.vcf.jpg|
- |Content-Type|image/jpeg|
- |Content-Security-Policy|default-src 'none';|
- |X-Content-Type-Options |nosniff|
- |X-Frame-Options|SAMEORIGIN|
- |X-Permitted-Cross-Domain-Policies|none|
- |X-Robots-Tag|noindex, nofollow|
- |X-XSS-Protection|1; mode=block|
-
- Scenario: Create addressbook request for non-existing addressbook of another user
- Given user "user0" exists
- When "user0" sends a create addressbook request to "admin/MyAddressbook2" on the endpoint "/remote.php/dav/addressbooks/"
- Then The CardDAV HTTP status code should be "404"
- And The CardDAV exception is "Sabre\DAV\Exception\NotFound"
- And The CardDAV error message is "File not found: admin in 'addressbooks'"
-
- Scenario: Create addressbook request for existing addressbook of another user
- Given user "user0" exists
- When "admin" creates an addressbook named "MyAddressbook2" with statuscode "201"
- When "user0" sends a create addressbook request to "admin/MyAddressbook2" on the endpoint "/remote.php/dav/addressbooks/"
- Then The CardDAV HTTP status code should be "404"
- And The CardDAV exception is "Sabre\DAV\Exception\NotFound"
- And The CardDAV error message is "File not found: admin in 'addressbooks'"
diff --git a/build/integration/features/checksums.feature b/build/integration/features/checksums.feature
deleted file mode 100644
index d391e93afe8..00000000000
--- a/build/integration/features/checksums.feature
+++ /dev/null
@@ -1,76 +0,0 @@
-Feature: checksums
-
- Scenario: Uploading a file with checksum should work
- Given user "user0" exists
- When user "user0" uploads file "data/textfile.txt" to "/myChecksumFile.txt" with checksum "MD5:d70b40f177b14b470d1756a3c12b963a"
- Then The webdav response should have a status code "201"
-
- Scenario: Uploading a file with checksum should return the checksum in the propfind
- Given user "user0" exists
- And user "user0" uploads file "data/textfile.txt" to "/myChecksumFile.txt" with checksum "MD5:d70b40f177b14b470d1756a3c12b963a"
- When user "user0" request the checksum of "/myChecksumFile.txt" via propfind
- Then The webdav checksum should match "MD5:d70b40f177b14b470d1756a3c12b963a"
-
- Scenario: Uploading a file with checksum should return the checksum in the download header
- Given user "user0" exists
- And user "user0" uploads file "data/textfile.txt" to "/myChecksumFile.txt" with checksum "MD5:d70b40f177b14b470d1756a3c12b963a"
- When user "user0" downloads the file "/myChecksumFile.txt"
- Then The header checksum should match "MD5:d70b40f177b14b470d1756a3c12b963a"
-
- Scenario: Moving a file with checksum should return the checksum in the propfind
- Given user "user0" exists
- And user "user0" uploads file "data/textfile.txt" to "/myChecksumFile.txt" with checksum "MD5:d70b40f177b14b470d1756a3c12b963a"
- When User "user0" moved file "/myChecksumFile.txt" to "/myMovedChecksumFile.txt"
- And user "user0" request the checksum of "/myMovedChecksumFile.txt" via propfind
- Then The webdav checksum should match "MD5:d70b40f177b14b470d1756a3c12b963a"
-
- Scenario: Moving file with checksum should return the checksum in the download header
- Given user "user0" exists
- And user "user0" uploads file "data/textfile.txt" to "/myChecksumFile.txt" with checksum "MD5:d70b40f177b14b470d1756a3c12b963a"
- When User "user0" moved file "/myChecksumFile.txt" to "/myMovedChecksumFile.txt"
- And user "user0" downloads the file "/myMovedChecksumFile.txt"
- Then The header checksum should match "MD5:d70b40f177b14b470d1756a3c12b963a"
-
- Scenario: Copying a file with checksum should return the checksum in the propfind
- Given user "user0" exists
- And user "user0" uploads file "data/textfile.txt" to "/myChecksumFile.txt" with checksum "MD5:d70b40f177b14b470d1756a3c12b963a"
- When User "user0" copied file "/myChecksumFile.txt" to "/myChecksumFileCopy.txt"
- And user "user0" request the checksum of "/myChecksumFileCopy.txt" via propfind
- Then The webdav checksum should match "MD5:d70b40f177b14b470d1756a3c12b963a"
-
- Scenario: Copying file with checksum should return the checksum in the download header
- Given user "user0" exists
- And user "user0" uploads file "data/textfile.txt" to "/myChecksumFile.txt" with checksum "MD5:d70b40f177b14b470d1756a3c12b963a"
- When User "user0" copied file "/myChecksumFile.txt" to "/myChecksumFileCopy.txt"
- And user "user0" downloads the file "/myChecksumFileCopy.txt"
- Then The header checksum should match "MD5:d70b40f177b14b470d1756a3c12b963a"
-
- Scenario: Overwriting a file with checksum should remove the checksum and not return it in the propfind
- Given user "user0" exists
- And user "user0" uploads file "data/textfile.txt" to "/myChecksumFile.txt" with checksum "MD5:d70b40f177b14b470d1756a3c12b963a"
- When user "user0" uploads file "data/textfile.txt" to "/myChecksumFile.txt"
- And user "user0" request the checksum of "/myChecksumFile.txt" via propfind
- Then The webdav checksum should be empty
-
- Scenario: Overwriting a file with checksum should remove the checksum and not return it in the download header
- Given user "user0" exists
- And user "user0" uploads file "data/textfile.txt" to "/myChecksumFile.txt" with checksum "MD5:d70b40f177b14b470d1756a3c12b963a"
- When user "user0" uploads file "data/textfile.txt" to "/myChecksumFile.txt"
- And user "user0" downloads the file "/myChecksumFile.txt"
- Then The OC-Checksum header should not be there
-
- Scenario: Uploading a chunked file with checksum should return the checksum in the propfind
- Given user "user0" exists
- And user "user0" uploads chunk file "1" of "3" with "AAAAA" to "/myChecksumFile.txt" with checksum "MD5:e892fdd61a74bc89cd05673cc2e22f88"
- And user "user0" uploads chunk file "2" of "3" with "BBBBB" to "/myChecksumFile.txt" with checksum "MD5:e892fdd61a74bc89cd05673cc2e22f88"
- And user "user0" uploads chunk file "3" of "3" with "CCCCC" to "/myChecksumFile.txt" with checksum "MD5:e892fdd61a74bc89cd05673cc2e22f88"
- When user "user0" request the checksum of "/myChecksumFile.txt" via propfind
- Then The webdav checksum should match "MD5:e892fdd61a74bc89cd05673cc2e22f88"
-
- Scenario: Uploading a chunked file with checksum should return the checksum in the download header
- Given user "user0" exists
- And user "user0" uploads chunk file "1" of "3" with "AAAAA" to "/myChecksumFile.txt" with checksum "MD5:e892fdd61a74bc89cd05673cc2e22f88"
- And user "user0" uploads chunk file "2" of "3" with "BBBBB" to "/myChecksumFile.txt" with checksum "MD5:e892fdd61a74bc89cd05673cc2e22f88"
- And user "user0" uploads chunk file "3" of "3" with "CCCCC" to "/myChecksumFile.txt" with checksum "MD5:e892fdd61a74bc89cd05673cc2e22f88"
- When user "user0" downloads the file "/myChecksumFile.txt"
- Then The header checksum should match "MD5:e892fdd61a74bc89cd05673cc2e22f88"
diff --git a/build/integration/features/comments-search.feature b/build/integration/features/comments-search.feature
deleted file mode 100644
index a1d116ee3f4..00000000000
--- a/build/integration/features/comments-search.feature
+++ /dev/null
@@ -1,271 +0,0 @@
-Feature: comments-search
-
- Scenario: Search my own comment on a file belonging to myself
- Given user "user0" exists
- And User "user0" uploads file "data/textfile.txt" to "/myFileToComment.txt"
- And "user0" posts a comment with content "My first comment" on the file named "/myFileToComment.txt" it should return "201"
- When Logging in using web as "user0"
- And searching for "first" in app "files"
- Then the list of search results has "1" results
- And search result "0" contains
- | type | comment |
- | comment | My first comment |
- | authorId | user0 |
- | authorName | user0 |
- | path | myFileToComment.txt |
- | fileName | myFileToComment.txt |
- | name | My first comment |
-
- Scenario: Search my own comment on a file shared by someone with me
- Given user "user0" exists
- And user "user1" exists
- And User "user1" uploads file "data/textfile.txt" to "/sharedFileToComment.txt"
- And as "user1" creating a share with
- | path | sharedFileToComment.txt |
- | shareWith | user0 |
- | shareType | 0 |
- And user "user0" accepts last share
- And "user0" posts a comment with content "My first comment" on the file named "/sharedFileToComment.txt" it should return "201"
- When Logging in using web as "user0"
- And searching for "first" in app "files"
- Then the list of search results has "1" results
- And search result "0" contains
- | type | comment |
- | comment | My first comment |
- | authorId | user0 |
- | authorName | user0 |
- | path | sharedFileToComment.txt |
- | fileName | sharedFileToComment.txt |
- | name | My first comment |
-
- Scenario: Search other user's comment on a file shared by me
- Given user "user0" exists
- And user "user1" exists
- And User "user0" uploads file "data/textfile.txt" to "/mySharedFileToComment.txt"
- And as "user0" creating a share with
- | path | mySharedFileToComment.txt |
- | shareWith | user1 |
- | shareType | 0 |
- And user "user1" accepts last share
- And "user1" posts a comment with content "Other's first comment" on the file named "/mySharedFileToComment.txt" it should return "201"
- When Logging in using web as "user0"
- And searching for "first" in app "files"
- Then the list of search results has "1" results
- And search result "0" contains
- | type | comment |
- | comment | Other's first comment |
- | authorId | user1 |
- | authorName | user1 |
- | path | mySharedFileToComment.txt |
- | fileName | mySharedFileToComment.txt |
- | name | Other's first comment |
-
- Scenario: Search other user's comment on a file shared by someone with me
- Given user "user0" exists
- And user "user1" exists
- And User "user1" uploads file "data/textfile.txt" to "/sharedFileToComment.txt"
- And as "user1" creating a share with
- | path | sharedFileToComment.txt |
- | shareWith | user0 |
- | shareType | 0 |
- And user "user0" accepts last share
- And "user1" posts a comment with content "Other's first comment" on the file named "/sharedFileToComment.txt" it should return "201"
- When Logging in using web as "user0"
- And searching for "first" in app "files"
- Then the list of search results has "1" results
- And search result "0" contains
- | type | comment |
- | comment | Other's first comment |
- | authorId | user1 |
- | authorName | user1 |
- | path | sharedFileToComment.txt |
- | fileName | sharedFileToComment.txt |
- | name | Other's first comment |
-
- Scenario: Search several comments on a file belonging to myself
- Given user "user0" exists
- And User "user0" uploads file "data/textfile.txt" to "/myFileToComment.txt"
- And "user0" posts a comment with content "My first comment to be found" on the file named "/myFileToComment.txt" it should return "201"
- And "user0" posts a comment with content "The second comment should not be found" on the file named "/myFileToComment.txt" it should return "201"
- And "user0" posts a comment with content "My third comment to be found" on the file named "/myFileToComment.txt" it should return "201"
- When Logging in using web as "user0"
- And searching for "comment to be found" in app "files"
- Then the list of search results has "2" results
- And search result "0" contains
- | type | comment |
- | comment | My third comment to be found |
- | authorId | user0 |
- | authorName | user0 |
- | path | myFileToComment.txt |
- | fileName | myFileToComment.txt |
- | name | My third comment to be found |
- And search result "1" contains
- | type | comment |
- | comment | My first comment to be found |
- | authorId | user0 |
- | authorName | user0 |
- | path | myFileToComment.txt |
- | fileName | myFileToComment.txt |
- | name | My first comment to be found |
-
- Scenario: Search comment with a large message ellipsized on the right
- Given user "user0" exists
- And User "user0" uploads file "data/textfile.txt" to "/myFileToComment.txt"
- And "user0" posts a comment with content "A very verbose message that is meant to be used to test the ellipsized message returned when searching for long comments" on the file named "/myFileToComment.txt" it should return "201"
- When Logging in using web as "user0"
- And searching for "verbose" in app "files"
- Then the list of search results has "1" results
- And search result "0" contains
- | type | comment |
- | comment | A very verbose message that is meant to… |
- | authorId | user0 |
- | authorName | user0 |
- | path | myFileToComment.txt |
- | fileName | myFileToComment.txt |
- | name | A very verbose message that is meant to be used to test the ellipsized message returned when searching for long comments |
-
- Scenario: Search comment with a large message ellipsized on the left
- Given user "user0" exists
- And User "user0" uploads file "data/textfile.txt" to "/myFileToComment.txt"
- And "user0" posts a comment with content "A very verbose message that is meant to be used to test the ellipsized message returned when searching for long comments" on the file named "/myFileToComment.txt" it should return "201"
- When Logging in using web as "user0"
- And searching for "searching" in app "files"
- Then the list of search results has "1" results
- And search result "0" contains
- | type | comment |
- | comment | …ed message returned when searching for long comments |
- | authorId | user0 |
- | authorName | user0 |
- | path | myFileToComment.txt |
- | fileName | myFileToComment.txt |
- | name | A very verbose message that is meant to be used to test the ellipsized message returned when searching for long comments |
-
- Scenario: Search comment with a large message ellipsized on both ends
- Given user "user0" exists
- And User "user0" uploads file "data/textfile.txt" to "/myFileToComment.txt"
- And "user0" posts a comment with content "A very verbose message that is meant to be used to test the ellipsized message returned when searching for long comments" on the file named "/myFileToComment.txt" it should return "201"
- When Logging in using web as "user0"
- And searching for "ellipsized" in app "files"
- Then the list of search results has "1" results
- And search result "0" contains
- | type | comment |
- | comment | …t to be used to test the ellipsized message returned when se… |
- | authorId | user0 |
- | authorName | user0 |
- | path | myFileToComment.txt |
- | fileName | myFileToComment.txt |
- | name | A very verbose message that is meant to be used to test the ellipsized message returned when searching for long comments |
-
- Scenario: Search comment on a file in a subfolder
- Given user "user0" exists
- And user "user0" created a folder "/subfolder"
- And User "user0" uploads file "data/textfile.txt" to "/subfolder/myFileToComment.txt"
- And "user0" posts a comment with content "My first comment" on the file named "/subfolder/myFileToComment.txt" it should return "201"
- When Logging in using web as "user0"
- And searching for "first" in app "files"
- Then the list of search results has "1" results
- And search result "0" contains
- | type | comment |
- | comment | My first comment |
- | authorId | user0 |
- | authorName | user0 |
- | path | subfolder/myFileToComment.txt |
- | fileName | myFileToComment.txt |
- | name | My first comment |
-
- Scenario: Search several comments
- Given user "user0" exists
- And user "user1" exists
- And User "user0" uploads file "data/textfile.txt" to "/myFileToComment.txt"
- And User "user0" uploads file "data/textfile.txt" to "/mySharedFileToComment.txt"
- And as "user0" creating a share with
- | path | mySharedFileToComment.txt |
- | shareWith | user1 |
- | shareType | 0 |
- And user "user1" accepts last share
- And User "user1" uploads file "data/textfile.txt" to "/sharedFileToComment.txt"
- And as "user1" creating a share with
- | path | sharedFileToComment.txt |
- | shareWith | user0 |
- | shareType | 0 |
- And user "user0" accepts last share
- And "user0" posts a comment with content "My first comment to be found" on the file named "/myFileToComment.txt" it should return "201"
- And "user0" posts a comment with content "The second comment should not be found" on the file named "/myFileToComment.txt" it should return "201"
- And "user0" posts a comment with content "My first comment to be found" on the file named "/mySharedFileToComment.txt" it should return "201"
- And "user1" posts a comment with content "Other's first comment that should not be found" on the file named "/mySharedFileToComment.txt" it should return "201"
- And "user1" posts a comment with content "Other's second comment to be found" on the file named "/mySharedFileToComment.txt" it should return "201"
- And "user0" posts a comment with content "My first comment that should not be found" on the file named "/sharedFileToComment.txt" it should return "201"
- And "user1" posts a comment with content "Other's first comment to be found" on the file named "/sharedFileToComment.txt" it should return "201"
- And "user0" posts a comment with content "My second comment to be found that happens to be more verbose than the others and thus should be ellipsized" on the file named "/sharedFileToComment.txt" it should return "201"
- And "user0" posts a comment with content "My third comment to be found" on the file named "/myFileToComment.txt" it should return "201"
- When Logging in using web as "user0"
- And searching for "comment to be found" in app "files"
- Then the list of search results has "6" results
- And search result "0" contains
- | type | comment |
- | comment | My third comment to be found |
- | authorId | user0 |
- | authorName | user0 |
- | path | myFileToComment.txt |
- | fileName | myFileToComment.txt |
- | name | My third comment to be found |
- And search result "1" contains
- | type | comment |
- | comment | My second comment to be found that happens to be more … |
- | authorId | user0 |
- | authorName | user0 |
- | path | sharedFileToComment.txt |
- | fileName | sharedFileToComment.txt |
- | name | My second comment to be found that happens to be more verbose than the others and thus should be ellipsized |
- And search result "2" contains
- | type | comment |
- | comment | Other's first comment to be found |
- | authorId | user1 |
- | authorName | user1 |
- | path | sharedFileToComment.txt |
- | fileName | sharedFileToComment.txt |
- | name | Other's first comment to be found |
- And search result "3" contains
- | type | comment |
- | comment | Other's second comment to be found |
- | authorId | user1 |
- | authorName | user1 |
- | path | mySharedFileToComment.txt |
- | fileName | mySharedFileToComment.txt |
- | name | Other's second comment to be found |
- And search result "4" contains
- | type | comment |
- | comment | My first comment to be found |
- | authorId | user0 |
- | authorName | user0 |
- | path | mySharedFileToComment.txt |
- | fileName | mySharedFileToComment.txt |
- | name | My first comment to be found |
- And search result "5" contains
- | type | comment |
- | comment | My first comment to be found |
- | authorId | user0 |
- | authorName | user0 |
- | path | myFileToComment.txt |
- | fileName | myFileToComment.txt |
- | name | My first comment to be found |
-
- Scenario: Search comment with a query that also matches a file name
- Given user "user0" exists
- And User "user0" uploads file "data/textfile.txt" to "/myFileToComment.txt"
- And "user0" posts a comment with content "A comment in myFileToComment.txt" on the file named "/myFileToComment.txt" it should return "201"
- When Logging in using web as "user0"
- And searching for "myFileToComment" in app "files"
- Then the list of search results has "2" results
- And search result "0" contains
- | type | file |
- | path | /myFileToComment.txt |
- | name | myFileToComment.txt |
- And search result "1" contains
- | type | comment |
- | comment | A comment in myFileToComment.txt |
- | authorId | user0 |
- | authorName | user0 |
- | path | myFileToComment.txt |
- | fileName | myFileToComment.txt |
- | name | A comment in myFileToComment.txt |
diff --git a/build/integration/features/comments.feature b/build/integration/features/comments.feature
deleted file mode 100644
index 0f3a4cc75cf..00000000000
--- a/build/integration/features/comments.feature
+++ /dev/null
@@ -1,215 +0,0 @@
-Feature: comments
- Scenario: Creating a comment on a file belonging to myself
- Given user "user0" exists
- Given As an "user0"
- Given User "user0" uploads file "data/textfile.txt" to "/myFileToComment.txt"
- When "user0" posts a comment with content "My first comment" on the file named "/myFileToComment.txt" it should return "201"
- Then As "user0" load all the comments of the file named "/myFileToComment.txt" it should return "207"
- And the response should contain a property "oc:parentId" with value "0"
- And the response should contain a property "oc:childrenCount" with value "0"
- And the response should contain a property "oc:verb" with value "comment"
- And the response should contain a property "oc:actorType" with value "users"
- And the response should contain a property "oc:objectType" with value "files"
- And the response should contain a property "oc:message" with value "My first comment"
- And the response should contain a property "oc:actorDisplayName" with value "user0"
- And the response should contain only "1" comments
-
- Scenario: Creating a comment on a shared file belonging to another user
- Given user "user0" exists
- Given user "12345" exists
- Given User "user0" uploads file "data/textfile.txt" to "/myFileToComment.txt"
- Given as "user0" creating a share with
- | path | myFileToComment.txt |
- | shareWith | 12345 |
- | shareType | 0 |
- Given user "12345" accepts last share
- When "12345" posts a comment with content "A comment from another user" on the file named "/myFileToComment.txt" it should return "201"
- Then As "12345" load all the comments of the file named "/myFileToComment.txt" it should return "207"
- And the response should contain a property "oc:parentId" with value "0"
- And the response should contain a property "oc:childrenCount" with value "0"
- And the response should contain a property "oc:verb" with value "comment"
- And the response should contain a property "oc:actorType" with value "users"
- And the response should contain a property "oc:objectType" with value "files"
- And the response should contain a property "oc:message" with value "A comment from another user"
- And the response should contain a property "oc:actorDisplayName" with value "12345"
- And the response should contain only "1" comments
-
- Scenario: Creating a comment on a non-shared file belonging to another user
- Given user "user0" exists
- Given user "user1" exists
- Given User "user0" uploads file "data/textfile.txt" to "/myFileToComment.txt"
- Then "user1" posts a comment with content "My first comment" on the file named "/myFileToComment.txt" it should return "404"
-
- Scenario: Reading comments on a non-shared file belonging to another user
- Given user "user0" exists
- Given user "user1" exists
- Given User "user0" uploads file "data/textfile.txt" to "/myFileToComment.txt"
- Then As "user1" load all the comments of the file named "/myFileToComment.txt" it should return "404"
-
- Scenario: Deleting my own comments on a file belonging to myself
- Given user "user0" exists
- Given As an "user0"
- Given User "user0" uploads file "data/textfile.txt" to "/myFileToComment.txt"
- Given "user0" posts a comment with content "My first comment" on the file named "/myFileToComment.txt" it should return "201"
- When As "user0" load all the comments of the file named "/myFileToComment.txt" it should return "207"
- Then the response should contain a property "oc:parentId" with value "0"
- Then the response should contain a property "oc:childrenCount" with value "0"
- And the response should contain a property "oc:verb" with value "comment"
- And the response should contain a property "oc:actorType" with value "users"
- And the response should contain a property "oc:objectType" with value "files"
- And the response should contain a property "oc:message" with value "My first comment"
- And the response should contain a property "oc:actorDisplayName" with value "user0"
- And the response should contain only "1" comments
- And As "user0" delete the created comment it should return "204"
- And As "user0" load all the comments of the file named "/myFileToComment.txt" it should return "207"
- And the response should contain only "0" comments
-
- Scenario: Deleting my own comments on a file shared by somebody else
- Given user "user0" exists
- Given user "user1" exists
- Given As an "user0"
- Given User "user0" uploads file "data/textfile.txt" to "/myFileToComment.txt"
- Given as "user0" creating a share with
- | path | myFileToComment.txt |
- | shareWith | user1 |
- | shareType | 0 |
- And user "user1" accepts last share
- Given "user1" posts a comment with content "My first comment" on the file named "/myFileToComment.txt" it should return "201"
- When As "user1" load all the comments of the file named "/myFileToComment.txt" it should return "207"
- Then the response should contain a property "oc:parentId" with value "0"
- And the response should contain a property "oc:childrenCount" with value "0"
- And the response should contain a property "oc:verb" with value "comment"
- And the response should contain a property "oc:actorType" with value "users"
- And the response should contain a property "oc:objectType" with value "files"
- And the response should contain a property "oc:message" with value "My first comment"
- And the response should contain a property "oc:actorDisplayName" with value "user1"
- And the response should contain only "1" comments
- And As "user1" delete the created comment it should return "204"
- And As "user1" load all the comments of the file named "/myFileToComment.txt" it should return "207"
- And the response should contain only "0" comments
-
- Scenario: Deleting my own comments on a file unshared by someone else
- Given user "user0" exists
- Given user "user1" exists
- Given User "user0" uploads file "data/textfile.txt" to "/myFileToComment.txt"
- Given as "user0" creating a share with
- | path | myFileToComment.txt |
- | shareWith | user1 |
- | shareType | 0 |
- And user "user1" accepts last share
- Given "user1" posts a comment with content "My first comment" on the file named "/myFileToComment.txt" it should return "201"
- When As "user1" load all the comments of the file named "/myFileToComment.txt" it should return "207"
- Then the response should contain a property "oc:parentId" with value "0"
- And the response should contain a property "oc:childrenCount" with value "0"
- And the response should contain a property "oc:verb" with value "comment"
- And the response should contain a property "oc:actorType" with value "users"
- And the response should contain a property "oc:objectType" with value "files"
- And the response should contain a property "oc:message" with value "My first comment"
- And the response should contain a property "oc:actorDisplayName" with value "user1"
- And the response should contain only "1" comments
- And As "user0" remove all shares from the file named "/myFileToComment.txt"
- And As "user1" delete the created comment it should return "404"
- And As "user1" load all the comments of the file named "/myFileToComment.txt" it should return "404"
-
- Scenario: Edit my own comments on a file belonging to myself
- Given user "user0" exists
- Given User "user0" uploads file "data/textfile.txt" to "/myFileToComment.txt"
- Given "user0" posts a comment with content "My first comment" on the file named "/myFileToComment.txt" it should return "201"
- When As "user0" load all the comments of the file named "/myFileToComment.txt" it should return "207"
- Then the response should contain a property "oc:parentId" with value "0"
- And the response should contain a property "oc:childrenCount" with value "0"
- And the response should contain a property "oc:verb" with value "comment"
- And the response should contain a property "oc:actorType" with value "users"
- And the response should contain a property "oc:objectType" with value "files"
- And the response should contain a property "oc:message" with value "My first comment"
- And the response should contain a property "oc:actorDisplayName" with value "user0"
- And the response should contain only "1" comments
- When As "user0" edit the last created comment and set text to "My edited comment" it should return "207"
- Then As "user0" load all the comments of the file named "/myFileToComment.txt" it should return "207"
- And the response should contain a property "oc:parentId" with value "0"
- And the response should contain a property "oc:childrenCount" with value "0"
- And the response should contain a property "oc:verb" with value "comment"
- And the response should contain a property "oc:actorType" with value "users"
- And the response should contain a property "oc:objectType" with value "files"
- And the response should contain a property "oc:message" with value "My edited comment"
- And the response should contain a property "oc:actorDisplayName" with value "user0"
-
- Scenario: Edit my own comments on a file shared by someone with me
- Given user "user0" exists
- Given user "user1" exists
- Given User "user0" uploads file "data/textfile.txt" to "/myFileToComment.txt"
- Given as "user0" creating a share with
- | path | myFileToComment.txt |
- | shareWith | user1 |
- | shareType | 0 |
- And user "user1" accepts last share
- Given "user1" posts a comment with content "My first comment" on the file named "/myFileToComment.txt" it should return "201"
- When As "user0" load all the comments of the file named "/myFileToComment.txt" it should return "207"
- Then the response should contain a property "oc:parentId" with value "0"
- And the response should contain a property "oc:childrenCount" with value "0"
- And the response should contain a property "oc:verb" with value "comment"
- And the response should contain a property "oc:actorType" with value "users"
- And the response should contain a property "oc:objectType" with value "files"
- And the response should contain a property "oc:message" with value "My first comment"
- And the response should contain a property "oc:actorDisplayName" with value "user1"
- And the response should contain only "1" comments
- Given As "user1" edit the last created comment and set text to "My edited comment" it should return "207"
- Then As "user1" load all the comments of the file named "/myFileToComment.txt" it should return "207"
- And the response should contain a property "oc:parentId" with value "0"
- And the response should contain a property "oc:childrenCount" with value "0"
- And the response should contain a property "oc:verb" with value "comment"
- And the response should contain a property "oc:actorType" with value "users"
- And the response should contain a property "oc:objectType" with value "files"
- And the response should contain a property "oc:message" with value "My edited comment"
- And the response should contain a property "oc:actorDisplayName" with value "user1"
-
- Scenario: Edit my own comments on a file unshared by someone with me
- Given user "user0" exists
- Given user "user1" exists
- Given User "user0" uploads file "data/textfile.txt" to "/myFileToComment.txt"
- Given as "user0" creating a share with
- | path | myFileToComment.txt |
- | shareWith | user1 |
- | shareType | 0 |
- And user "user1" accepts last share
- When "user1" posts a comment with content "My first comment" on the file named "/myFileToComment.txt" it should return "201"
- Then As "user0" load all the comments of the file named "/myFileToComment.txt" it should return "207"
- And the response should contain a property "oc:parentId" with value "0"
- And the response should contain a property "oc:childrenCount" with value "0"
- And the response should contain a property "oc:verb" with value "comment"
- And the response should contain a property "oc:actorType" with value "users"
- And the response should contain a property "oc:objectType" with value "files"
- And the response should contain a property "oc:message" with value "My first comment"
- And the response should contain a property "oc:actorDisplayName" with value "user1"
- And the response should contain only "1" comments
- And As "user0" remove all shares from the file named "/myFileToComment.txt"
- When As "user1" edit the last created comment and set text to "My edited comment" it should return "404"
- Then As "user0" load all the comments of the file named "/myFileToComment.txt" it should return "207"
- And the response should contain a property "oc:parentId" with value "0"
- And the response should contain a property "oc:childrenCount" with value "0"
- And the response should contain a property "oc:verb" with value "comment"
- And the response should contain a property "oc:actorType" with value "users"
- And the response should contain a property "oc:objectType" with value "files"
- And the response should contain a property "oc:message" with value "My first comment"
- And the response should contain a property "oc:actorDisplayName" with value "user1"
-
- Scenario: Edit comments of other users should not be possible
- Given user "user0" exists
- Given user "user1" exists
- Given User "user0" uploads file "data/textfile.txt" to "/myFileToComment.txt"
- Given as "user0" creating a share with
- | path | myFileToComment.txt |
- | shareWith | user1 |
- | shareType | 0 |
- And user "user1" accepts last share
- Given "user1" posts a comment with content "My first comment" on the file named "/myFileToComment.txt" it should return "201"
- When As "user0" load all the comments of the file named "/myFileToComment.txt" it should return "207"
- Then the response should contain a property "oc:parentId" with value "0"
- And the response should contain a property "oc:childrenCount" with value "0"
- And the response should contain a property "oc:verb" with value "comment"
- And the response should contain a property "oc:actorType" with value "users"
- And the response should contain a property "oc:objectType" with value "files"
- And the response should contain a property "oc:message" with value "My first comment"
- And the response should contain a property "oc:actorDisplayName" with value "user1"
- And the response should contain only "1" comments
- Then As "user0" edit the last created comment and set text to "My edited comment" it should return "403"
diff --git a/build/integration/features/dav-v2.feature b/build/integration/features/dav-v2.feature
deleted file mode 100644
index a3ac59578e9..00000000000
--- a/build/integration/features/dav-v2.feature
+++ /dev/null
@@ -1,107 +0,0 @@
-Feature: dav-v2
- Background:
- Given using api version "1"
-
- Scenario: moving a file new endpoint way
- Given using new dav path
- And As an "admin"
- And user "user0" exists
- When User "user0" moves file "/textfile0.txt" to "/FOLDER/textfile0.txt"
- Then the HTTP status code should be "201"
-
- Scenario: download a file with range using new endpoint
- Given using new dav path
- And As an "admin"
- And user "user0" exists
- And As an "user0"
- When Downloading file "/welcome.txt" with range "bytes=52-78"
- Then Downloaded content should be "example file for developers"
-
- Scenario: Downloading a file on the new endpoint should serve security headers
- Given using new dav path
- And As an "admin"
- When Downloading file "/welcome.txt"
- Then The following headers should be set
- |Content-Disposition|attachment; filename*=UTF-8''welcome.txt; filename="welcome.txt"|
- |Content-Security-Policy|default-src 'none';|
- |X-Content-Type-Options |nosniff|
- |X-Frame-Options|SAMEORIGIN|
- |X-Permitted-Cross-Domain-Policies|none|
- |X-Robots-Tag|noindex, nofollow|
- |X-XSS-Protection|1; mode=block|
- And Downloaded content should start with "Welcome to your Nextcloud account!"
-
- Scenario: Doing a GET with a web login should work without CSRF token on the new backend
- Given Logging in using web as "admin"
- When Sending a "GET" to "/remote.php/dav/files/admin/welcome.txt" without requesttoken
- Then Downloaded content should start with "Welcome to your Nextcloud account!"
- Then the HTTP status code should be "200"
-
- Scenario: Doing a GET with a web login should work with CSRF token on the new backend
- Given Logging in using web as "admin"
- When Sending a "GET" to "/remote.php/dav/files/admin/welcome.txt" with requesttoken
- Then Downloaded content should start with "Welcome to your Nextcloud account!"
- Then the HTTP status code should be "200"
-
- Scenario: Doing a PROPFIND with a web login should not work without CSRF token on the new backend
- Given Logging in using web as "admin"
- When Sending a "PROPFIND" to "/remote.php/dav/files/admin/welcome.txt" without requesttoken
- Then the HTTP status code should be "401"
-
- Scenario: Doing a PROPFIND with a web login should work with CSRF token on the new backend
- Given Logging in using web as "admin"
- When Sending a "PROPFIND" to "/remote.php/dav/files/admin/welcome.txt" with requesttoken
- Then the HTTP status code should be "207"
-
- Scenario: Uploading a file having 0B as quota
- Given using new dav path
- And As an "admin"
- And user "user0" exists
- And user "user0" has a quota of "0 B"
- And As an "user0"
- When User "user0" uploads file "data/textfile.txt" to "/asdf.txt"
- Then the HTTP status code should be "507"
-
- Scenario: Uploading a file as recipient using webdav new endpoint having quota
- Given using new dav path
- And As an "admin"
- And user "user0" exists
- And user "user1" exists
- And user "user0" has a quota of "10 MB"
- And user "user1" has a quota of "10 MB"
- And As an "user1"
- And user "user1" created a folder "/testquota"
- And as "user1" creating a share with
- | path | testquota |
- | shareType | 0 |
- | permissions | 31 |
- | shareWith | user0 |
- And user "user0" accepts last share
- And As an "user0"
- When User "user0" uploads file "data/textfile.txt" to "/testquota/asdf.txt"
- Then the HTTP status code should be "201"
-
- Scenario: Create a search query on image
- Given using new dav path
- And As an "admin"
- And user "user0" exists
- And As an "user0"
- When User "user0" uploads file "data/textfile.txt" to "/testquota/asdf.txt"
- Then Image search should work
- And the response should be empty
- When User "user0" uploads file "data/green-square-256.png" to "/image.png"
- Then Image search should work
- And the single response should contain a property "{DAV:}getcontenttype" with value "image/png"
-
- Scenario: Create a search query on favorite
- Given using new dav path
- And As an "admin"
- And user "user0" exists
- And As an "user0"
- When User "user0" uploads file "data/green-square-256.png" to "/fav_image.png"
- Then Favorite search should work
- And the response should be empty
- When user "user0" favorites element "/fav_image.png"
- Then Favorite search should work
- And the single response should contain a property "{http://owncloud.org/ns}favorite" with value "1"
-
diff --git a/build/integration/features/download.feature b/build/integration/features/download.feature
deleted file mode 100644
index 16d346b0150..00000000000
--- a/build/integration/features/download.feature
+++ /dev/null
@@ -1,294 +0,0 @@
-Feature: download
-
- Scenario: downloading 2 small files returns a zip32
- Given using new dav path
- And user "user0" exists
- And User "user0" copies file "/welcome.txt" to "/welcome2.txt"
- When user "user0" downloads zip file for entries '"welcome.txt","welcome2.txt"' in folder "/"
- Then the downloaded zip file is a zip32 file
- And the downloaded zip file contains a file named "welcome.txt" with the contents of "/welcome.txt" from "user0" data
- And the downloaded zip file contains a file named "welcome2.txt" with the contents of "/welcome2.txt" from "user0" data
-
- Scenario: downloading a small file and a directory returns a zip32
- Given using new dav path
- And user "user0" exists
- And user "user0" created a folder "/emptySubFolder"
- When user "user0" downloads zip file for entries '"welcome.txt","emptySubFolder"' in folder "/"
- Then the downloaded zip file is a zip32 file
- And the downloaded zip file contains a file named "welcome.txt" with the contents of "/welcome.txt" from "user0" data
- And the downloaded zip file contains a folder named "emptySubFolder/"
-
- Scenario: downloading a small file and 2 nested directories returns a zip32
- Given using new dav path
- And user "user0" exists
- And user "user0" created a folder "/subFolder"
- And user "user0" created a folder "/subFolder/emptySubSubFolder"
- When user "user0" downloads zip file for entries '"welcome.txt","subFolder"' in folder "/"
- Then the downloaded zip file is a zip32 file
- And the downloaded zip file contains a file named "welcome.txt" with the contents of "/welcome.txt" from "user0" data
- And the downloaded zip file contains a folder named "subFolder/"
- And the downloaded zip file contains a folder named "subFolder/emptySubSubFolder/"
-
- Scenario: downloading dir with 2 small files returns a zip32
- Given using new dav path
- And user "user0" exists
- And user "user0" created a folder "/sparseFolder"
- And User "user0" copies file "/welcome.txt" to "/sparseFolder/welcome.txt"
- And User "user0" copies file "/welcome.txt" to "/sparseFolder/welcome2.txt"
- When user "user0" downloads zip file for entries '"sparseFolder"' in folder "/"
- Then the downloaded zip file is a zip32 file
- And the downloaded zip file contains a folder named "sparseFolder/"
- And the downloaded zip file contains a file named "sparseFolder/welcome.txt" with the contents of "/sparseFolder/welcome.txt" from "user0" data
- And the downloaded zip file contains a file named "sparseFolder/welcome2.txt" with the contents of "/sparseFolder/welcome2.txt" from "user0" data
-
- Scenario: downloading dir with a small file and a directory returns a zip32
- Given using new dav path
- And user "user0" exists
- And user "user0" created a folder "/sparseFolder"
- And User "user0" copies file "/welcome.txt" to "/sparseFolder/welcome.txt"
- And user "user0" created a folder "/sparseFolder/emptySubFolder"
- When user "user0" downloads zip file for entries '"sparseFolder"' in folder "/"
- Then the downloaded zip file is a zip32 file
- And the downloaded zip file contains a folder named "sparseFolder/"
- And the downloaded zip file contains a file named "sparseFolder/welcome.txt" with the contents of "/sparseFolder/welcome.txt" from "user0" data
- And the downloaded zip file contains a folder named "sparseFolder/emptySubFolder/"
-
- Scenario: downloading dir with a small file and 2 nested directories returns a zip32
- Given using new dav path
- And user "user0" exists
- And user "user0" created a folder "/sparseFolder"
- And User "user0" copies file "/welcome.txt" to "/sparseFolder/welcome.txt"
- And user "user0" created a folder "/sparseFolder/subFolder"
- And user "user0" created a folder "/sparseFolder/subFolder/emptySubSubFolder"
- When user "user0" downloads zip file for entries '"sparseFolder"' in folder "/"
- Then the downloaded zip file is a zip32 file
- And the downloaded zip file contains a folder named "sparseFolder/"
- And the downloaded zip file contains a file named "sparseFolder/welcome.txt" with the contents of "/sparseFolder/welcome.txt" from "user0" data
- And the downloaded zip file contains a folder named "sparseFolder/subFolder/"
- And the downloaded zip file contains a folder named "sparseFolder/subFolder/emptySubSubFolder/"
-
- Scenario: downloading (from folder) 2 small files returns a zip32
- Given using new dav path
- And user "user0" exists
- And user "user0" created a folder "/baseFolder"
- And User "user0" copies file "/welcome.txt" to "/baseFolder/welcome.txt"
- And User "user0" copies file "/welcome.txt" to "/baseFolder/welcome2.txt"
- When user "user0" downloads zip file for entries '"welcome.txt","welcome2.txt"' in folder "/baseFolder/"
- Then the downloaded zip file is a zip32 file
- And the downloaded zip file contains a file named "welcome.txt" with the contents of "/baseFolder/welcome.txt" from "user0" data
- And the downloaded zip file contains a file named "welcome2.txt" with the contents of "/baseFolder/welcome2.txt" from "user0" data
-
- Scenario: downloading (from folder) a small file and a directory returns a zip32
- Given using new dav path
- And user "user0" exists
- And user "user0" created a folder "/baseFolder"
- And User "user0" copies file "/welcome.txt" to "/baseFolder/welcome.txt"
- And user "user0" created a folder "/baseFolder/emptySubFolder"
- When user "user0" downloads zip file for entries '"welcome.txt","emptySubFolder"' in folder "/baseFolder/"
- Then the downloaded zip file is a zip32 file
- And the downloaded zip file contains a file named "welcome.txt" with the contents of "/baseFolder/welcome.txt" from "user0" data
- And the downloaded zip file contains a folder named "emptySubFolder/"
-
- Scenario: downloading (from folder) a small file and 2 nested directories returns a zip32
- Given using new dav path
- And user "user0" exists
- And user "user0" created a folder "/baseFolder"
- And User "user0" copies file "/welcome.txt" to "/baseFolder/welcome.txt"
- And user "user0" created a folder "/baseFolder/subFolder"
- And user "user0" created a folder "/baseFolder/subFolder/emptySubSubFolder"
- When user "user0" downloads zip file for entries '"welcome.txt","subFolder"' in folder "/baseFolder/"
- Then the downloaded zip file is a zip32 file
- And the downloaded zip file contains a file named "welcome.txt" with the contents of "/baseFolder/welcome.txt" from "user0" data
- And the downloaded zip file contains a folder named "subFolder/"
- And the downloaded zip file contains a folder named "subFolder/emptySubSubFolder/"
-
- Scenario: downloading (from folder) dir with 2 small files returns a zip32
- Given using new dav path
- And user "user0" exists
- And user "user0" created a folder "/baseFolder"
- And user "user0" created a folder "/baseFolder/sparseFolder"
- And User "user0" copies file "/welcome.txt" to "/baseFolder/sparseFolder/welcome.txt"
- And User "user0" copies file "/welcome.txt" to "/baseFolder/sparseFolder/welcome2.txt"
- When user "user0" downloads zip file for entries '"sparseFolder"' in folder "/baseFolder/"
- Then the downloaded zip file is a zip32 file
- And the downloaded zip file contains a folder named "sparseFolder/"
- And the downloaded zip file contains a file named "sparseFolder/welcome.txt" with the contents of "/baseFolder/sparseFolder/welcome.txt" from "user0" data
- And the downloaded zip file contains a file named "sparseFolder/welcome2.txt" with the contents of "/baseFolder/sparseFolder/welcome2.txt" from "user0" data
-
- Scenario: downloading (from folder) dir with a small file and a directory returns a zip32
- Given using new dav path
- And user "user0" exists
- And user "user0" created a folder "/baseFolder"
- And user "user0" created a folder "/baseFolder/sparseFolder"
- And User "user0" copies file "/welcome.txt" to "/baseFolder/sparseFolder/welcome.txt"
- And user "user0" created a folder "/baseFolder/sparseFolder/emptySubFolder"
- When user "user0" downloads zip file for entries '"sparseFolder"' in folder "/baseFolder/"
- Then the downloaded zip file is a zip32 file
- And the downloaded zip file contains a folder named "sparseFolder/"
- And the downloaded zip file contains a file named "sparseFolder/welcome.txt" with the contents of "/baseFolder/sparseFolder/welcome.txt" from "user0" data
- And the downloaded zip file contains a folder named "sparseFolder/emptySubFolder/"
-
- Scenario: downloading (from folder) dir with a small file and 2 nested directories returns a zip32
- Given using new dav path
- And user "user0" exists
- And user "user0" created a folder "/baseFolder"
- And user "user0" created a folder "/baseFolder/sparseFolder"
- And User "user0" copies file "/welcome.txt" to "/baseFolder/sparseFolder/welcome.txt"
- And user "user0" created a folder "/baseFolder/sparseFolder/subFolder"
- And user "user0" created a folder "/baseFolder/sparseFolder/subFolder/emptySubSubFolder"
- When user "user0" downloads zip file for entries '"sparseFolder"' in folder "/baseFolder/"
- Then the downloaded zip file is a zip32 file
- And the downloaded zip file contains a folder named "sparseFolder/"
- And the downloaded zip file contains a file named "sparseFolder/welcome.txt" with the contents of "/baseFolder/sparseFolder/welcome.txt" from "user0" data
- And the downloaded zip file contains a folder named "sparseFolder/subFolder/"
- And the downloaded zip file contains a folder named "sparseFolder/subFolder/emptySubSubFolder/"
-
- @large
- Scenario: downloading small file and dir with 65524 small files and 9 nested directories returns a zip32
- Given using new dav path
- And user "user0" exists
- And user "user0" created a folder "/crowdedFolder"
- And user "user0" created a folder "/crowdedFolder/subFolder1"
- And file "/crowdedFolder/subFolder1/test.txt" is created "10000" times in "user0" user data
- And invoking occ with "files:scan --path /user0/files/crowdedFolder/subFolder1"
- And user "user0" created a folder "/crowdedFolder/subFolder2"
- And file "/crowdedFolder/subFolder2/test.txt" is created "10000" times in "user0" user data
- And invoking occ with "files:scan --path /user0/files/crowdedFolder/subFolder2"
- And user "user0" created a folder "/crowdedFolder/subFolder3"
- And file "/crowdedFolder/subFolder3/test.txt" is created "10000" times in "user0" user data
- And invoking occ with "files:scan --path /user0/files/crowdedFolder/subFolder3"
- And user "user0" created a folder "/crowdedFolder/subFolder4"
- And file "/crowdedFolder/subFolder4/test.txt" is created "10000" times in "user0" user data
- And invoking occ with "files:scan --path /user0/files/crowdedFolder/subFolder4"
- And user "user0" created a folder "/crowdedFolder/subFolder5"
- And file "/crowdedFolder/subFolder5/test.txt" is created "10000" times in "user0" user data
- And invoking occ with "files:scan --path /user0/files/crowdedFolder/subFolder5"
- And user "user0" created a folder "/crowdedFolder/subFolder6"
- And file "/crowdedFolder/subFolder6/test.txt" is created "10000" times in "user0" user data
- And invoking occ with "files:scan --path /user0/files/crowdedFolder/subFolder6"
- And user "user0" created a folder "/crowdedFolder/subFolder7"
- And file "/crowdedFolder/subFolder7/test.txt" is created "5524" times in "user0" user data
- And invoking occ with "files:scan --path /user0/files/crowdedFolder/subFolder7"
- And user "user0" created a folder "/crowdedFolder/subFolder7/subSubFolder"
- And user "user0" created a folder "/crowdedFolder/subFolder7/subSubFolder/emptySubSubSubFolder"
- When user "user0" downloads zip file for entries '"welcome.txt","crowdedFolder"' in folder "/"
- Then the downloaded zip file is a zip32 file
- And the downloaded zip file contains a file named "welcome.txt" with the contents of "/welcome.txt" from "user0" data
- And the downloaded zip file contains a folder named "crowdedFolder/"
- And the downloaded zip file contains a folder named "crowdedFolder/subFolder1/"
- And the downloaded zip file contains a file named "crowdedFolder/subFolder1/test.txt-0" with the contents of "/crowdedFolder/subFolder1/test.txt-0" from "user0" data
- And the downloaded zip file contains a file named "crowdedFolder/subFolder7/test.txt-5523" with the contents of "/crowdedFolder/subFolder7/test.txt-5523" from "user0" data
- And the downloaded zip file contains a folder named "crowdedFolder/subFolder7/subSubFolder/emptySubSubSubFolder/"
-
- @large
- Scenario: downloading dir with 65525 small files and 9 nested directories returns a zip32
- Given using new dav path
- And user "user0" exists
- And user "user0" created a folder "/crowdedFolder"
- And user "user0" created a folder "/crowdedFolder/subFolder1"
- And file "/crowdedFolder/subFolder1/test.txt" is created "10000" times in "user0" user data
- And invoking occ with "files:scan --path /user0/files/crowdedFolder/subFolder1"
- And user "user0" created a folder "/crowdedFolder/subFolder2"
- And file "/crowdedFolder/subFolder2/test.txt" is created "10000" times in "user0" user data
- And invoking occ with "files:scan --path /user0/files/crowdedFolder/subFolder2"
- And user "user0" created a folder "/crowdedFolder/subFolder3"
- And file "/crowdedFolder/subFolder3/test.txt" is created "10000" times in "user0" user data
- And invoking occ with "files:scan --path /user0/files/crowdedFolder/subFolder3"
- And user "user0" created a folder "/crowdedFolder/subFolder4"
- And file "/crowdedFolder/subFolder4/test.txt" is created "10000" times in "user0" user data
- And invoking occ with "files:scan --path /user0/files/crowdedFolder/subFolder4"
- And user "user0" created a folder "/crowdedFolder/subFolder5"
- And file "/crowdedFolder/subFolder5/test.txt" is created "10000" times in "user0" user data
- And invoking occ with "files:scan --path /user0/files/crowdedFolder/subFolder5"
- And user "user0" created a folder "/crowdedFolder/subFolder6"
- And file "/crowdedFolder/subFolder6/test.txt" is created "10000" times in "user0" user data
- And invoking occ with "files:scan --path /user0/files/crowdedFolder/subFolder6"
- And user "user0" created a folder "/crowdedFolder/subFolder7"
- And file "/crowdedFolder/subFolder7/test.txt" is created "5525" times in "user0" user data
- And invoking occ with "files:scan --path /user0/files/crowdedFolder/subFolder7"
- And user "user0" created a folder "/crowdedFolder/subFolder7/subSubFolder"
- And user "user0" created a folder "/crowdedFolder/subFolder7/subSubFolder/emptySubSubSubFolder"
- When user "user0" downloads zip file for entries '"crowdedFolder"' in folder "/"
- Then the downloaded zip file is a zip32 file
- And the downloaded zip file contains a folder named "crowdedFolder/"
- And the downloaded zip file contains a folder named "crowdedFolder/subFolder1/"
- And the downloaded zip file contains a file named "crowdedFolder/subFolder1/test.txt-0" with the contents of "/crowdedFolder/subFolder1/test.txt-0" from "user0" data
- And the downloaded zip file contains a file named "crowdedFolder/subFolder7/test.txt-5524" with the contents of "/crowdedFolder/subFolder7/test.txt-5524" from "user0" data
- And the downloaded zip file contains a folder named "crowdedFolder/subFolder7/subSubFolder/emptySubSubSubFolder/"
-
- @large
- Scenario: downloading small file and dir with 65524 small files and 10 nested directories returns a zip64
- Given using new dav path
- And user "user0" exists
- And user "user0" created a folder "/crowdedFolder"
- And user "user0" created a folder "/crowdedFolder/subFolder1"
- And file "/crowdedFolder/subFolder1/test.txt" is created "10000" times in "user0" user data
- And invoking occ with "files:scan --path /user0/files/crowdedFolder/subFolder1"
- And user "user0" created a folder "/crowdedFolder/subFolder2"
- And file "/crowdedFolder/subFolder2/test.txt" is created "10000" times in "user0" user data
- And invoking occ with "files:scan --path /user0/files/crowdedFolder/subFolder2"
- And user "user0" created a folder "/crowdedFolder/subFolder3"
- And file "/crowdedFolder/subFolder3/test.txt" is created "10000" times in "user0" user data
- And invoking occ with "files:scan --path /user0/files/crowdedFolder/subFolder3"
- And user "user0" created a folder "/crowdedFolder/subFolder4"
- And file "/crowdedFolder/subFolder4/test.txt" is created "10000" times in "user0" user data
- And invoking occ with "files:scan --path /user0/files/crowdedFolder/subFolder4"
- And user "user0" created a folder "/crowdedFolder/subFolder5"
- And file "/crowdedFolder/subFolder5/test.txt" is created "10000" times in "user0" user data
- And invoking occ with "files:scan --path /user0/files/crowdedFolder/subFolder5"
- And user "user0" created a folder "/crowdedFolder/subFolder6"
- And file "/crowdedFolder/subFolder6/test.txt" is created "10000" times in "user0" user data
- And invoking occ with "files:scan --path /user0/files/crowdedFolder/subFolder6"
- And user "user0" created a folder "/crowdedFolder/subFolder7"
- And file "/crowdedFolder/subFolder7/test.txt" is created "5524" times in "user0" user data
- And invoking occ with "files:scan --path /user0/files/crowdedFolder/subFolder7"
- And user "user0" created a folder "/crowdedFolder/subFolder7/subSubFolder"
- And user "user0" created a folder "/crowdedFolder/subFolder7/subSubFolder/emptySubSubSubFolder"
- And user "user0" created a folder "/crowdedFolder/subFolder7/emptySubSubFolder"
- When user "user0" downloads zip file for entries '"welcome.txt","crowdedFolder"' in folder "/"
- Then the downloaded zip file is a zip64 file
- And the downloaded zip file contains a file named "welcome.txt" with the contents of "/welcome.txt" from "user0" data
- And the downloaded zip file contains a folder named "crowdedFolder/"
- And the downloaded zip file contains a folder named "crowdedFolder/subFolder1/"
- And the downloaded zip file contains a file named "crowdedFolder/subFolder1/test.txt-0" with the contents of "/crowdedFolder/subFolder1/test.txt-0" from "user0" data
- And the downloaded zip file contains a file named "crowdedFolder/subFolder7/test.txt-5523" with the contents of "/crowdedFolder/subFolder7/test.txt-5523" from "user0" data
- And the downloaded zip file contains a folder named "crowdedFolder/subFolder7/subSubFolder/emptySubSubSubFolder/"
- And the downloaded zip file contains a folder named "crowdedFolder/subFolder7/emptySubSubFolder/"
-
- @large
- Scenario: downloading dir with 65525 small files and 10 nested directories returns a zip64
- Given using new dav path
- And user "user0" exists
- And user "user0" created a folder "/crowdedFolder"
- And user "user0" created a folder "/crowdedFolder/subFolder1"
- And file "/crowdedFolder/subFolder1/test.txt" is created "10000" times in "user0" user data
- And invoking occ with "files:scan --path /user0/files/crowdedFolder/subFolder1"
- And user "user0" created a folder "/crowdedFolder/subFolder2"
- And file "/crowdedFolder/subFolder2/test.txt" is created "10000" times in "user0" user data
- And invoking occ with "files:scan --path /user0/files/crowdedFolder/subFolder2"
- And user "user0" created a folder "/crowdedFolder/subFolder3"
- And file "/crowdedFolder/subFolder3/test.txt" is created "10000" times in "user0" user data
- And invoking occ with "files:scan --path /user0/files/crowdedFolder/subFolder3"
- And user "user0" created a folder "/crowdedFolder/subFolder4"
- And file "/crowdedFolder/subFolder4/test.txt" is created "10000" times in "user0" user data
- And invoking occ with "files:scan --path /user0/files/crowdedFolder/subFolder4"
- And user "user0" created a folder "/crowdedFolder/subFolder5"
- And file "/crowdedFolder/subFolder5/test.txt" is created "10000" times in "user0" user data
- And invoking occ with "files:scan --path /user0/files/crowdedFolder/subFolder5"
- And user "user0" created a folder "/crowdedFolder/subFolder6"
- And file "/crowdedFolder/subFolder6/test.txt" is created "10000" times in "user0" user data
- And invoking occ with "files:scan --path /user0/files/crowdedFolder/subFolder6"
- And user "user0" created a folder "/crowdedFolder/subFolder7"
- And file "/crowdedFolder/subFolder7/test.txt" is created "5525" times in "user0" user data
- And invoking occ with "files:scan --path /user0/files/crowdedFolder/subFolder7"
- And user "user0" created a folder "/crowdedFolder/subFolder7/subSubFolder"
- And user "user0" created a folder "/crowdedFolder/subFolder7/subSubFolder/emptySubSubSubFolder"
- And user "user0" created a folder "/crowdedFolder/subFolder7/emptySubSubFolder"
- When user "user0" downloads zip file for entries '"crowdedFolder"' in folder "/"
- Then the downloaded zip file is a zip64 file
- And the downloaded zip file contains a folder named "crowdedFolder/"
- And the downloaded zip file contains a folder named "crowdedFolder/subFolder1/"
- And the downloaded zip file contains a file named "crowdedFolder/subFolder1/test.txt-0" with the contents of "/crowdedFolder/subFolder1/test.txt-0" from "user0" data
- And the downloaded zip file contains a file named "crowdedFolder/subFolder7/test.txt-5524" with the contents of "/crowdedFolder/subFolder7/test.txt-5524" from "user0" data
- And the downloaded zip file contains a folder named "crowdedFolder/subFolder7/subSubFolder/emptySubSubSubFolder/"
- And the downloaded zip file contains a folder named "crowdedFolder/subFolder7/emptySubSubFolder/"
diff --git a/build/integration/features/external-storage.feature b/build/integration/features/external-storage.feature
deleted file mode 100644
index d92cca3c458..00000000000
--- a/build/integration/features/external-storage.feature
+++ /dev/null
@@ -1,62 +0,0 @@
-Feature: external-storage
- Background:
- Given using api version "1"
- Given using old dav path
-
- @local_storage
- Scenario: Share by link a file inside a local external storage
- Given user "user0" exists
- And user "user1" exists
- And As an "user0"
- And user "user0" created a folder "/local_storage/foo"
- And User "user0" moved file "/textfile0.txt" to "/local_storage/foo/textfile0.txt"
- And folder "/local_storage/foo" of user "user0" is shared with user "user1"
- And As an "user1"
- And accepting last share
- When creating a share with
- | path | foo |
- | shareType | 3 |
- Then the OCS status code should be "100"
- And the HTTP status code should be "200"
- And Share fields of last share match with
- | id | A_NUMBER |
- | url | AN_URL |
- | token | A_TOKEN |
- | mimetype | httpd/unix-directory |
-
- Scenario: Shares don't overwrite external storage
- Given user "user0" exists
- And user "user1" exists
- And As an "user0"
- And User "user0" moved file "/textfile0.txt" to "/local_storage/textfile0.txt"
- And invoking occ with "files_external:create --user user0 test local null::null -c datadir=./build/integration/work/local_storage"
- And invoking occ with "files:scan --path /user0/files/test"
- And as "user0" the file "/local_storage/textfile0.txt" exists
- And as "user0" the folder "/test" exists
- And as "user0" the file "/test/textfile0.txt" exists
- And As an "user1"
- And user "user1" created a folder "/test"
- And User "user1" moved file "/textfile0.txt" to "/test/textfile1.txt"
- And folder "/test" of user "user1" is shared with user "user0"
- And As an "user0"
- Then as "user0" the file "/test/textfile1.txt" does not exist
-
- Scenario: Move a file into storage works
- Given user "user0" exists
- And user "user1" exists
- And As an "user0"
- And user "user0" created a folder "/local_storage/foo1"
- When User "user0" moved file "/textfile0.txt" to "/local_storage/foo1/textfile0.txt"
- Then as "user1" the file "/local_storage/foo1/textfile0.txt" exists
- And as "user0" the file "/local_storage/foo1/textfile0.txt" exists
-
- Scenario: Move a file out of the storage works
- Given user "user0" exists
- And user "user1" exists
- And As an "user0"
- And user "user0" created a folder "/local_storage/foo2"
- And User "user0" moved file "/textfile0.txt" to "/local_storage/foo2/textfile0.txt"
- When User "user1" moved file "/local_storage/foo2/textfile0.txt" to "/local.txt"
- Then as "user1" the file "/local_storage/foo2/textfile0.txt" does not exist
- And as "user0" the file "/local_storage/foo2/textfile0.txt" does not exist
- And as "user1" the file "/local.txt" exists
diff --git a/build/integration/features/favorites.feature b/build/integration/features/favorites.feature
deleted file mode 100644
index 0439ada9d60..00000000000
--- a/build/integration/features/favorites.feature
+++ /dev/null
@@ -1,149 +0,0 @@
-Feature: favorite
- Background:
- Given using api version "1"
-
- Scenario: Favorite a folder
- Given using old dav path
- And As an "admin"
- And user "user0" exists
- When user "user0" favorites element "/FOLDER"
- Then as "user0" gets properties of folder "/FOLDER" with
- |{http://owncloud.org/ns}favorite|
- And the single response should contain a property "{http://owncloud.org/ns}favorite" with value "1"
-
- Scenario: Favorite and unfavorite a folder
- Given using old dav path
- And As an "admin"
- And user "user0" exists
- When user "user0" favorites element "/FOLDER"
- And user "user0" unfavorites element "/FOLDER"
- Then as "user0" gets properties of folder "/FOLDER" with
- |{http://owncloud.org/ns}favorite|
- And the single response should contain a property "{http://owncloud.org/ns}favorite" with value "0"
-
- Scenario: Favorite a file
- Given using old dav path
- And As an "admin"
- And user "user0" exists
- When user "user0" favorites element "/textfile0.txt"
- Then as "user0" gets properties of file "/textfile0.txt" with
- |{http://owncloud.org/ns}favorite|
- And the single response should contain a property "{http://owncloud.org/ns}favorite" with value "1"
-
- Scenario: Favorite and unfavorite a file
- Given using old dav path
- And As an "admin"
- And user "user0" exists
- When user "user0" favorites element "/textfile0.txt"
- And user "user0" unfavorites element "/textfile0.txt"
- Then as "user0" gets properties of file "/textfile0.txt" with
- |{http://owncloud.org/ns}favorite|
- And the single response should contain a property "{http://owncloud.org/ns}favorite" with value "0"
-
- Scenario: Favorite a folder new endpoint
- Given using new dav path
- And As an "admin"
- And user "user0" exists
- When user "user0" favorites element "/FOLDER"
- Then as "user0" gets properties of folder "/FOLDER" with
- |{http://owncloud.org/ns}favorite|
- And the single response should contain a property "{http://owncloud.org/ns}favorite" with value "1"
-
- Scenario: Favorite and unfavorite a folder new endpoint
- Given using new dav path
- And As an "admin"
- And user "user0" exists
- When user "user0" favorites element "/FOLDER"
- And user "user0" unfavorites element "/FOLDER"
- Then as "user0" gets properties of folder "/FOLDER" with
- |{http://owncloud.org/ns}favorite|
- And the single response should contain a property "{http://owncloud.org/ns}favorite" with value "0"
-
- Scenario: Favorite a file new endpoint
- Given using new dav path
- And As an "admin"
- And user "user0" exists
- When user "user0" favorites element "/textfile0.txt"
- Then as "user0" gets properties of file "/textfile0.txt" with
- |{http://owncloud.org/ns}favorite|
- And the single response should contain a property "{http://owncloud.org/ns}favorite" with value "1"
-
- Scenario: Favorite and unfavorite a file new endpoint
- Given using new dav path
- And As an "admin"
- And user "user0" exists
- When user "user0" favorites element "/textfile0.txt"
- And user "user0" unfavorites element "/textfile0.txt"
- Then as "user0" gets properties of file "/textfile0.txt" with
- |{http://owncloud.org/ns}favorite|
- And the single response should contain a property "{http://owncloud.org/ns}favorite" with value "0"
-
- Scenario: Get favorited elements of a folder
- Given using old dav path
- And As an "admin"
- And user "user0" exists
- When user "user0" favorites element "/FOLDER"
- And user "user0" favorites element "/textfile0.txt"
- And user "user0" favorites element "/textfile1.txt"
- Then user "user0" in folder "/" should have favorited the following elements
- | /FOLDER |
- | /textfile0.txt |
- | /textfile1.txt |
-
- Scenario: Get favorited elements of a folder using new path
- Given using new dav path
- And As an "admin"
- And user "user0" exists
- When user "user0" favorites element "/FOLDER"
- And user "user0" favorites element "/textfile0.txt"
- And user "user0" favorites element "/textfile1.txt"
- Then user "user0" in folder "/" should have favorited the following elements
- | /FOLDER |
- | /textfile0.txt |
- | /textfile1.txt |
-
- Scenario: Get favorited elements of a subfolder
- Given using old dav path
- And As an "admin"
- And user "user0" exists
- And user "user0" created a folder "/subfolder"
- And User "user0" moves file "/textfile0.txt" to "/subfolder/textfile0.txt"
- And User "user0" moves file "/textfile1.txt" to "/subfolder/textfile1.txt"
- And User "user0" moves file "/textfile2.txt" to "/subfolder/textfile2.txt"
- When user "user0" favorites element "/subfolder/textfile0.txt"
- And user "user0" favorites element "/subfolder/textfile1.txt"
- And user "user0" favorites element "/subfolder/textfile2.txt"
- And user "user0" unfavorites element "/subfolder/textfile1.txt"
- Then user "user0" in folder "/subfolder" should have favorited the following elements
- | /subfolder/textfile0.txt |
- | /subfolder/textfile2.txt |
-
- Scenario: Get favorited elements of a subfolder using new path
- Given using old dav path
- And As an "admin"
- And user "user0" exists
- And user "user0" created a folder "/subfolder"
- And User "user0" moves file "/textfile0.txt" to "/subfolder/textfile0.txt"
- And User "user0" moves file "/textfile1.txt" to "/subfolder/textfile1.txt"
- And User "user0" moves file "/textfile2.txt" to "/subfolder/textfile2.txt"
- When user "user0" favorites element "/subfolder/textfile0.txt"
- And user "user0" favorites element "/subfolder/textfile1.txt"
- And user "user0" favorites element "/subfolder/textfile2.txt"
- And user "user0" unfavorites element "/subfolder/textfile1.txt"
- Then user "user0" in folder "/subfolder" should have favorited the following elements
- | /subfolder/textfile0.txt |
- | /subfolder/textfile2.txt |
-
- Scenario: moving a favorite file out of a share keeps favorite state
- Given using old dav path
- And As an "admin"
- And user "user0" exists
- And user "user1" exists
- And user "user0" created a folder "/shared"
- And User "user0" moved file "/textfile0.txt" to "/shared/shared_file.txt"
- And folder "/shared" of user "user0" is shared with user "user1"
- And user "user1" accepts last share
- And user "user1" favorites element "/shared/shared_file.txt"
- When User "user1" moved file "/shared/shared_file.txt" to "/taken_out.txt"
- Then user "user1" in folder "/" should have favorited the following elements
- | /taken_out.txt |
diff --git a/build/integration/features/tags.feature b/build/integration/features/tags.feature
deleted file mode 100644
index 495008ffdd2..00000000000
--- a/build/integration/features/tags.feature
+++ /dev/null
@@ -1,462 +0,0 @@
-Feature: tags
-
- Scenario: Creating a normal tag as regular user should work
- Given user "user0" exists
- When "user0" creates a "normal" tag with name "MySuperAwesomeTagName"
- Then The response should have a status code "201"
- And The following tags should exist for "admin"
- |MySuperAwesomeTagName|true|true|
- And The following tags should exist for "user0"
- |MySuperAwesomeTagName|true|true|
-
- Scenario: Creating a not user-assignable tag as regular user should fail
- Given user "user0" exists
- When "user0" creates a "not user-assignable" tag with name "MySuperAwesomeTagName"
- Then The response should have a status code "400"
- And "0" tags should exist for "admin"
-
- Scenario: Creating a not user-visible tag as regular user should fail
- Given user "user0" exists
- When "user0" creates a "not user-visible" tag with name "MySuperAwesomeTagName"
- Then The response should have a status code "400"
- And "0" tags should exist for "admin"
-
- Scenario: Creating a not user-assignable tag with groups as admin should work
- Given user "user0" exists
- When "admin" creates a "not user-assignable" tag with name "TagWithGroups" and groups "group1|group2"
- Then The response should have a status code "201"
- And The "not user-assignable" tag with name "TagWithGroups" has the groups "group1|group2"
-
- Scenario: Creating a normal tag with groups as regular user should fail
- Given user "user0" exists
- When "user0" creates a "normal" tag with name "MySuperAwesomeTagName" and groups "group1|group2"
- Then The response should have a status code "400"
- And "0" tags should exist for "user0"
-
- Scenario: Renaming a normal tag as regular user should work
- Given user "user0" exists
- Given "admin" creates a "normal" tag with name "MySuperAwesomeTagName"
- When "user0" edits the tag with name "MySuperAwesomeTagName" and sets its name to "AnotherTagName"
- Then The response should have a status code "207"
- And The following tags should exist for "admin"
- |AnotherTagName|true|true|
-
- Scenario: Renaming a not user-assignable tag as regular user should fail
- Given user "user0" exists
- Given "admin" creates a "not user-assignable" tag with name "MySuperAwesomeTagName"
- When "user0" edits the tag with name "MySuperAwesomeTagName" and sets its name to "AnotherTagName"
- Then The response should have a status code "403"
- And The following tags should exist for "admin"
- |MySuperAwesomeTagName|true|false|
-
- Scenario: Renaming a not user-visible tag as regular user should fail
- Given user "user0" exists
- Given "admin" creates a "not user-visible" tag with name "MySuperAwesomeTagName"
- When "user0" edits the tag with name "MySuperAwesomeTagName" and sets its name to "AnotherTagName"
- Then The response should have a status code "404"
- And The following tags should exist for "admin"
- |MySuperAwesomeTagName|false|true|
-
- Scenario: Editing tag groups as admin should work
- Given user "user0" exists
- Given "admin" creates a "not user-assignable" tag with name "TagWithGroups" and groups "group1|group2"
- When "admin" edits the tag with name "TagWithGroups" and sets its groups to "group1|group3"
- Then The response should have a status code "207"
- And The "not user-assignable" tag with name "TagWithGroups" has the groups "group1|group3"
-
- Scenario: Editing tag groups as regular user should fail
- Given user "user0" exists
- Given "admin" creates a "not user-assignable" tag with name "TagWithGroups"
- When "user0" edits the tag with name "TagWithGroups" and sets its groups to "group1|group3"
- Then The response should have a status code "403"
-
- Scenario: Deleting a normal tag as regular user should fail
- Given user "user0" exists
- Given "admin" creates a "normal" tag with name "MySuperAwesomeTagName"
- When "user0" deletes the tag with name "MySuperAwesomeTagName"
- Then The response should have a status code "403"
- And The following tags should exist for "admin"
- |MySuperAwesomeTagName|true|true|
-
- Scenario: Deleting a not user-assignable tag as regular user should fail
- Given user "user0" exists
- Given "admin" creates a "not user-assignable" tag with name "MySuperAwesomeTagName"
- When "user0" deletes the tag with name "MySuperAwesomeTagName"
- Then The response should have a status code "403"
- And The following tags should exist for "admin"
- |MySuperAwesomeTagName|true|false|
-
- Scenario: Deleting a not user-visible tag as regular user should fail
- Given user "user0" exists
- Given "admin" creates a "not user-visible" tag with name "MySuperAwesomeTagName"
- When "user0" deletes the tag with name "MySuperAwesomeTagName"
- Then The response should have a status code "404"
- And The following tags should exist for "admin"
- |MySuperAwesomeTagName|false|true|
-
- Scenario: Deleting a normal tag as admin should work
- Given "admin" creates a "normal" tag with name "MySuperAwesomeTagName"
- When "admin" deletes the tag with name "MySuperAwesomeTagName"
- Then The response should have a status code "204"
- And "0" tags should exist for "admin"
-
- Scenario: Deleting a not user-assignable tag as admin should work
- Given "admin" creates a "not user-assignable" tag with name "MySuperAwesomeTagName"
- When "admin" deletes the tag with name "MySuperAwesomeTagName"
- Then The response should have a status code "204"
- And "0" tags should exist for "admin"
-
- Scenario: Deleting a not user-visible tag as admin should work
- Given "admin" creates a "not user-visible" tag with name "MySuperAwesomeTagName"
- When "admin" deletes the tag with name "MySuperAwesomeTagName"
- Then The response should have a status code "204"
- And "0" tags should exist for "admin"
-
- Scenario: Assigning a normal tag to a file shared by someone else as regular user should work
- Given user "user0" exists
- Given user "12345" exists
- Given "admin" creates a "normal" tag with name "MySuperAwesomeTagName"
- Given user "user0" uploads file "data/textfile.txt" to "/myFileToTag.txt"
- Given as "user0" creating a share with
- | path | myFileToTag.txt |
- | shareWith | 12345 |
- | shareType | 0 |
- Given user "12345" accepts last share
- When "12345" adds the tag "MySuperAwesomeTagName" to "/myFileToTag.txt" shared by "user0"
- Then The response should have a status code "201"
- And "/myFileToTag.txt" shared by "user0" has the following tags
- |MySuperAwesomeTagName|
-
- Scenario: Assigning a normal tag to a file belonging to someone else as regular user should fail
- Given user "user0" exists
- Given user "user1" exists
- Given "admin" creates a "normal" tag with name "MyFirstTag"
- Given "admin" creates a "normal" tag with name "MySecondTag"
- Given user "user0" uploads file "data/textfile.txt" to "/myFileToTag.txt"
- When "user0" adds the tag "MyFirstTag" to "/myFileToTag.txt" shared by "user0"
- When "user1" adds the tag "MySecondTag" to "/myFileToTag.txt" shared by "user0"
- Then The response should have a status code "404"
- And "/myFileToTag.txt" shared by "user0" has the following tags
- |MyFirstTag|
-
- Scenario: Assigning a not user-assignable tag to a file shared by someone else as regular user should fail
- Given user "user0" exists
- Given user "user1" exists
- Given "admin" creates a "normal" tag with name "MyFirstTag"
- Given "admin" creates a "not user-assignable" tag with name "MySecondTag"
- Given user "user0" uploads file "data/textfile.txt" to "/myFileToTag.txt"
- Given as "user0" creating a share with
- | path | myFileToTag.txt |
- | shareWith | user1 |
- | shareType | 0 |
- Given user "user1" accepts last share
- When "user0" adds the tag "MyFirstTag" to "/myFileToTag.txt" shared by "user0"
- When "user1" adds the tag "MySecondTag" to "/myFileToTag.txt" shared by "user0"
- Then The response should have a status code "403"
- And "/myFileToTag.txt" shared by "user0" has the following tags
- |MyFirstTag|
-
- Scenario: Assigning a not user-assignable tag to a file shared by someone else as regular user belongs to tag's groups should work
- Given user "user0" exists
- Given user "user1" exists
- Given group "group1" exists
- Given user "user1" belongs to group "group1"
- Given "admin" creates a "not user-assignable" tag with name "MySuperAwesomeTagName" and groups "group1"
- Given user "user0" uploads file "data/textfile.txt" to "/myFileToTag.txt"
- Given as "user0" creating a share with
- | path | myFileToTag.txt |
- | shareWith | user1 |
- | shareType | 0 |
- Given user "user1" accepts last share
- When "user1" adds the tag "MySuperAwesomeTagName" to "/myFileToTag.txt" shared by "user0"
- Then The response should have a status code "201"
- And "/myFileToTag.txt" shared by "user0" has the following tags
- |MySuperAwesomeTagName|
-
-
- Scenario: Assigning a not user-visible tag to a file shared by someone else as regular user should fail
- Given user "user0" exists
- Given user "user1" exists
- Given "admin" creates a "normal" tag with name "MyFirstTag"
- Given "admin" creates a "not user-visible" tag with name "MySecondTag"
- Given user "user0" uploads file "data/textfile.txt" to "/myFileToTag.txt"
- Given as "user0" creating a share with
- | path | myFileToTag.txt |
- | shareWith | user1 |
- | shareType | 0 |
- Given user "user1" accepts last share
- When "user0" adds the tag "MyFirstTag" to "/myFileToTag.txt" shared by "user0"
- When "user1" adds the tag "MySecondTag" to "/myFileToTag.txt" shared by "user0"
- Then The response should have a status code "412"
- And "/myFileToTag.txt" shared by "user0" has the following tags
- |MyFirstTag|
-
- Scenario: Assigning a not user-visible tag to a file shared by someone else as admin user should work
- Given user "user0" exists
- Given "admin" creates a "normal" tag with name "MyFirstTag"
- Given "admin" creates a "not user-visible" tag with name "MySecondTag"
- Given user "user0" uploads file "data/textfile.txt" to "/myFileToTag.txt"
- Given as "user0" creating a share with
- | path | myFileToTag.txt |
- | shareWith | admin |
- | shareType | 0 |
- Given user "admin" accepts last share
- When "user0" adds the tag "MyFirstTag" to "/myFileToTag.txt" shared by "user0"
- When "admin" adds the tag "MySecondTag" to "/myFileToTag.txt" shared by "user0"
- Then The response should have a status code "201"
- And "/myFileToTag.txt" shared by "user0" has the following tags for "admin"
- |MyFirstTag|
- |MySecondTag|
- And "/myFileToTag.txt" shared by "user0" has the following tags for "user0"
- |MyFirstTag|
-
- Scenario: Assigning a not user-assignable tag to a file shared by someone else as admin user should worj
- Given user "user0" exists
- Given "admin" creates a "normal" tag with name "MyFirstTag"
- Given "admin" creates a "not user-assignable" tag with name "MySecondTag"
- Given user "user0" uploads file "data/textfile.txt" to "/myFileToTag.txt"
- Given as "user0" creating a share with
- | path | myFileToTag.txt |
- | shareWith | admin |
- | shareType | 0 |
- Given user "admin" accepts last share
- When "user0" adds the tag "MyFirstTag" to "/myFileToTag.txt" shared by "user0"
- When "admin" adds the tag "MySecondTag" to "/myFileToTag.txt" shared by "user0"
- Then The response should have a status code "201"
- And "/myFileToTag.txt" shared by "user0" has the following tags for "admin"
- |MyFirstTag|
- |MySecondTag|
- And "/myFileToTag.txt" shared by "user0" has the following tags for "user0"
- |MyFirstTag|
- |MySecondTag|
-
- Scenario: Unassigning a normal tag from a file shared by someone else as regular user should work
- Given user "user0" exists
- Given user "user1" exists
- Given "admin" creates a "normal" tag with name "MyFirstTag"
- Given "admin" creates a "normal" tag with name "MySecondTag"
- Given user "user0" uploads file "data/textfile.txt" to "/myFileToTag.txt"
- Given as "user0" creating a share with
- | path | myFileToTag.txt |
- | shareWith | user1 |
- | shareType | 0 |
- Given user "user1" accepts last share
- Given "user0" adds the tag "MyFirstTag" to "/myFileToTag.txt" shared by "user0"
- Given "user0" adds the tag "MySecondTag" to "/myFileToTag.txt" shared by "user0"
- When "user1" removes the tag "MyFirstTag" from "/myFileToTag.txt" shared by "user0"
- Then The response should have a status code "204"
- And "/myFileToTag.txt" shared by "user0" has the following tags for "user0"
- |MySecondTag|
-
- Scenario: Unassigning a normal tag from a file unshared by someone else as regular user should fail
- Given user "user0" exists
- Given user "user1" exists
- Given "admin" creates a "normal" tag with name "MyFirstTag"
- Given "admin" creates a "normal" tag with name "MySecondTag"
- Given user "user0" uploads file "data/textfile.txt" to "/myFileToTag.txt"
- Given "user0" adds the tag "MyFirstTag" to "/myFileToTag.txt" shared by "user0"
- Given "user0" adds the tag "MySecondTag" to "/myFileToTag.txt" shared by "user0"
- When "user1" removes the tag "MyFirstTag" from "/myFileToTag.txt" shared by "user0"
- Then The response should have a status code "404"
- And "/myFileToTag.txt" shared by "user0" has the following tags for "user0"
- |MyFirstTag|
- |MySecondTag|
-
- Scenario: Unassigning a not user-visible tag from a file shared by someone else as regular user should fail
- Given user "user0" exists
- Given user "user1" exists
- Given "admin" creates a "not user-visible" tag with name "MyFirstTag"
- Given "admin" creates a "normal" tag with name "MySecondTag"
- Given user "user0" uploads file "data/textfile.txt" to "/myFileToTag.txt"
- Given as "user0" creating a share with
- | path | myFileToTag.txt |
- | shareWith | user1 |
- | shareType | 0 |
- Given user "user1" accepts last share
- Given as "user0" creating a share with
- | path | myFileToTag.txt |
- | shareWith | admin |
- | shareType | 0 |
- Given user "admin" accepts last share
- Given "admin" adds the tag "MyFirstTag" to "/myFileToTag.txt" shared by "user0"
- Given "user0" adds the tag "MySecondTag" to "/myFileToTag.txt" shared by "user0"
- When "user1" removes the tag "MyFirstTag" from "/myFileToTag.txt" shared by "user0"
- Then The response should have a status code "404"
- And "/myFileToTag.txt" shared by "user0" has the following tags for "user0"
- |MySecondTag|
- And "/myFileToTag.txt" shared by "user0" has the following tags for "admin"
- |MyFirstTag|
- |MySecondTag|
-
- Scenario: Unassigning a not user-visible tag from a file shared by someone else as admin should work
- Given user "user0" exists
- Given user "user1" exists
- Given "admin" creates a "not user-visible" tag with name "MyFirstTag"
- Given "admin" creates a "normal" tag with name "MySecondTag"
- Given user "user0" uploads file "data/textfile.txt" to "/myFileToTag.txt"
- Given as "user0" creating a share with
- | path | myFileToTag.txt |
- | shareWith | user1 |
- | shareType | 0 |
- Given user "user1" accepts last share
- Given as "user0" creating a share with
- | path | myFileToTag.txt |
- | shareWith | admin |
- | shareType | 0 |
- Given user "admin" accepts last share
- Given "admin" adds the tag "MyFirstTag" to "/myFileToTag.txt" shared by "user0"
- Given "user0" adds the tag "MySecondTag" to "/myFileToTag.txt" shared by "user0"
- When "admin" removes the tag "MyFirstTag" from "/myFileToTag.txt" shared by "user0"
- Then The response should have a status code "204"
- And "/myFileToTag.txt" shared by "user0" has the following tags for "user0"
- |MySecondTag|
- And "/myFileToTag.txt" shared by "user0" has the following tags for "admin"
- |MySecondTag|
-
- Scenario: Unassigning a not user-visible tag from a file unshared by someone else should fail
- Given user "user0" exists
- Given user "user1" exists
- Given "admin" creates a "not user-visible" tag with name "MyFirstTag"
- Given "admin" creates a "normal" tag with name "MySecondTag"
- Given user "user0" uploads file "data/textfile.txt" to "/myFileToTag.txt"
- Given as "user0" creating a share with
- | path | myFileToTag.txt |
- | shareWith | user1 |
- | shareType | 0 |
- Given user "user1" accepts last share
- Given as "user0" creating a share with
- | path | myFileToTag.txt |
- | shareWith | admin |
- | shareType | 0 |
- Given user "admin" accepts last share
- Given "admin" adds the tag "MyFirstTag" to "/myFileToTag.txt" shared by "user0"
- Given "user0" adds the tag "MySecondTag" to "/myFileToTag.txt" shared by "user0"
- Given As "user0" remove all shares from the file named "/myFileToTag.txt"
- When "admin" removes the tag "MyFirstTag" from "/myFileToTag.txt" shared by "user0"
- Then The response should have a status code "404"
-
- Scenario: Unassigning a not user-assignable tag from a file shared by someone else as regular user should fail
- Given user "user0" exists
- Given user "user1" exists
- Given "admin" creates a "not user-assignable" tag with name "MyFirstTag"
- Given "admin" creates a "normal" tag with name "MySecondTag"
- Given user "user0" uploads file "data/textfile.txt" to "/myFileToTag.txt"
- Given as "user0" creating a share with
- | path | myFileToTag.txt |
- | shareWith | user1 |
- | shareType | 0 |
- Given user "user1" accepts last share
- Given as "user0" creating a share with
- | path | myFileToTag.txt |
- | shareWith | admin |
- | shareType | 0 |
- Given user "admin" accepts last share
- Given "admin" adds the tag "MyFirstTag" to "/myFileToTag.txt" shared by "user0"
- Given "user0" adds the tag "MySecondTag" to "/myFileToTag.txt" shared by "user0"
- When "user1" removes the tag "MyFirstTag" from "/myFileToTag.txt" shared by "user0"
- Then The response should have a status code "403"
- And "/myFileToTag.txt" shared by "user0" has the following tags for "user0"
- |MyFirstTag|
- |MySecondTag|
- And "/myFileToTag.txt" shared by "user0" has the following tags for "admin"
- |MyFirstTag|
- |MySecondTag|
-
- Scenario: Unassigning a not user-assignable tag from a file shared by someone else as admin should work
- Given user "user0" exists
- Given user "user1" exists
- Given "admin" creates a "not user-assignable" tag with name "MyFirstTag"
- Given "admin" creates a "normal" tag with name "MySecondTag"
- Given user "user0" uploads file "data/textfile.txt" to "/myFileToTag.txt"
- Given as "user0" creating a share with
- | path | myFileToTag.txt |
- | shareWith | user1 |
- | shareType | 0 |
- Given user "user1" accepts last share
- Given as "user0" creating a share with
- | path | myFileToTag.txt |
- | shareWith | admin |
- | shareType | 0 |
- Given user "admin" accepts last share
- Given "admin" adds the tag "MyFirstTag" to "/myFileToTag.txt" shared by "user0"
- Given "user0" adds the tag "MySecondTag" to "/myFileToTag.txt" shared by "user0"
- When "admin" removes the tag "MyFirstTag" from "/myFileToTag.txt" shared by "user0"
- Then The response should have a status code "204"
- And "/myFileToTag.txt" shared by "user0" has the following tags for "user0"
- |MySecondTag|
- And "/myFileToTag.txt" shared by "user0" has the following tags for "admin"
- |MySecondTag|
-
- Scenario: Unassigning a not user-assignable tag from a file unshared by someone else should fail
- Given user "user0" exists
- Given user "user1" exists
- Given "admin" creates a "not user-assignable" tag with name "MyFirstTag"
- Given "admin" creates a "normal" tag with name "MySecondTag"
- Given user "user0" uploads file "data/textfile.txt" to "/myFileToTag.txt"
- Given as "user0" creating a share with
- | path | myFileToTag.txt |
- | shareWith | user1 |
- | shareType | 0 |
- Given user "user1" accepts last share
- Given as "user0" creating a share with
- | path | myFileToTag.txt |
- | shareWith | admin |
- | shareType | 0 |
- Given user "admin" accepts last share
- Given "admin" adds the tag "MyFirstTag" to "/myFileToTag.txt" shared by "user0"
- Given "user0" adds the tag "MySecondTag" to "/myFileToTag.txt" shared by "user0"
- Given As "user0" remove all shares from the file named "/myFileToTag.txt"
- When "admin" removes the tag "MyFirstTag" from "/myFileToTag.txt" shared by "user0"
- Then The response should have a status code "404"
-
- Scenario: Overwriting existing normal tags should fail
- Given user "user0" exists
- Given "user0" creates a "normal" tag with name "MyFirstTag"
- When "user0" creates a "normal" tag with name "MyFirstTag"
- Then The response should have a status code "409"
-
- Scenario: Overwriting existing not user-assignable tags should fail
- Given "admin" creates a "not user-assignable" tag with name "MyFirstTag"
- When "admin" creates a "not user-assignable" tag with name "MyFirstTag"
- Then The response should have a status code "409"
-
- Scenario: Overwriting existing not user-visible tags should fail
- Given "admin" creates a "not user-visible" tag with name "MyFirstTag"
- When "admin" creates a "not user-visible" tag with name "MyFirstTag"
- Then The response should have a status code "409"
-
- Scenario: Getting tags only works with access to the file
- Given user "user0" exists
- Given user "user1" exists
- Given "admin" creates a "normal" tag with name "MyFirstTag"
- Given user "user0" uploads file "data/textfile.txt" to "/myFileToTag.txt"
- When "user0" adds the tag "MyFirstTag" to "/myFileToTag.txt" shared by "user0"
- And "/myFileToTag.txt" shared by "user0" has the following tags for "user0"
- |MyFirstTag|
- And "/myFileToTag.txt" shared by "user0" has the following tags for "user1"
- ||
- And The response should have a status code "404"
-
- Scenario: User can assign tags when in the tag's groups
- Given user "user0" exists
- Given group "group1" exists
- Given user "user0" belongs to group "group1"
- When "admin" creates a "not user-assignable" tag with name "TagWithGroups" and groups "group1|group2"
- Then The response should have a status code "201"
- And the user "user0" can assign the "not user-assignable" tag with name "TagWithGroups"
-
- Scenario: User cannot assign tags when not in the tag's groups
- Given user "user0" exists
- When "admin" creates a "not user-assignable" tag with name "TagWithGroups" and groups "group1|group2"
- Then The response should have a status code "201"
- And the user "user0" cannot assign the "not user-assignable" tag with name "TagWithGroups"
-
- Scenario: Assign a normal tag to a file
- Given user "user0" exists
- And "admin" creates a "normal" tag with name "Etiqueta"
- And As an "user0"
- When "user0" adds the tag "Etiqueta" to "/textfile0.txt" owned by "user0"
- Then The response should have a status code "201"
- And "textfile0.txt" owned by "user0" has the following tags
- | Etiqueta |
-
diff --git a/build/integration/features/transfer-ownership.feature b/build/integration/features/transfer-ownership.feature
deleted file mode 100644
index 22e34dcf7af..00000000000
--- a/build/integration/features/transfer-ownership.feature
+++ /dev/null
@@ -1,594 +0,0 @@
-Feature: transfer-ownership
-
- Scenario: transferring ownership of a file
- Given user "user0" exists
- And user "user1" exists
- And User "user0" uploads file "data/textfile.txt" to "/somefile.txt"
- When transferring ownership from "user0" to "user1"
- And the command was successful
- And As an "user1"
- And using received transfer folder of "user1" as dav path
- Then Downloaded content when downloading file "/somefile.txt" with range "bytes=0-6" should be "This is"
- And using old dav path
- And as "user0" the file "/somefile.txt" does not exist
- And using received transfer folder of "user1" as dav path
- And as "user1" the file "/somefile.txt" exists
-
- Scenario: transferring ownership of a folder
- Given user "user0" exists
- And user "user1" exists
- And User "user0" created a folder "/test"
- And User "user0" uploads file "data/textfile.txt" to "/test/somefile.txt"
- When transferring ownership from "user0" to "user1"
- And the command was successful
- And As an "user1"
- And using received transfer folder of "user1" as dav path
- Then Downloaded content when downloading file "/test/somefile.txt" with range "bytes=0-6" should be "This is"
- And using old dav path
- And as "user0" the folder "/test" does not exist
- And using received transfer folder of "user1" as dav path
- And as "user1" the folder "/test" exists
-
- Scenario: transferring ownership from user with risky display name
- Given user "user0" with displayname "user0 \"risky\"? ヂspḷay 'na|\/|e':.#" exists
- And user "user1" exists
- And User "user0" created a folder "/test"
- And User "user0" uploads file "data/textfile.txt" to "/test/somefile.txt"
- When transferring ownership from "user0" to "user1"
- And the command was successful
- And As an "user1"
- And using received transfer folder of "user1" as dav path
- Then Downloaded content when downloading file "/test/somefile.txt" with range "bytes=0-6" should be "This is"
- And transfer folder name contains "transferred from user0 -risky- ヂspḷay -na|-|e- on"
- And using old dav path
- And as "user0" the folder "/test" does not exist
- And using received transfer folder of "user1" as dav path
- And as "user1" the folder "/test" exists
-
- Scenario: transferring ownership of file shares
- Given user "user0" exists
- And user "user1" exists
- And user "user2" exists
- And User "user0" uploads file "data/textfile.txt" to "/somefile.txt"
- And file "/somefile.txt" of user "user0" is shared with user "user2" with permissions 19
- And user "user2" accepts last share
- When transferring ownership from "user0" to "user1"
- And the command was successful
- And As an "user2"
- Then Downloaded content when downloading file "/somefile.txt" with range "bytes=0-6" should be "This is"
- And using old dav path
- And as "user0" the file "/somefile.txt" does not exist
- And using received transfer folder of "user1" as dav path
- And as "user1" the file "/somefile.txt" exists
- And As an "user1"
- And Getting info of last share
- And the OCS status code should be "100"
- And Share fields of last share match with
- | uid_owner | user1 |
- | uid_file_owner | user1 |
- | share_with | user2 |
-
- Scenario: transferring ownership of folder shared with third user
- Given user "user0" exists
- And user "user1" exists
- And user "user2" exists
- And User "user0" created a folder "/test"
- And User "user0" uploads file "data/textfile.txt" to "/test/somefile.txt"
- And folder "/test" of user "user0" is shared with user "user2" with permissions 31
- And user "user2" accepts last share
- When transferring ownership from "user0" to "user1"
- And the command was successful
- And As an "user2"
- Then Downloaded content when downloading file "/test/somefile.txt" with range "bytes=0-6" should be "This is"
- And using old dav path
- And as "user0" the folder "/test" does not exist
- And using received transfer folder of "user1" as dav path
- And as "user1" the folder "/test" exists
- And As an "user1"
- And Getting info of last share
- And the OCS status code should be "100"
- And Share fields of last share match with
- | uid_owner | user1 |
- | uid_file_owner | user1 |
- | share_with | user2 |
-
- Scenario: transferring ownership of folder shared with transfer recipient
- Given user "user0" exists
- And user "user1" exists
- And User "user0" created a folder "/test"
- And User "user0" uploads file "data/textfile.txt" to "/test/somefile.txt"
- And folder "/test" of user "user0" is shared with user "user1" with permissions 31
- And user "user1" accepts last share
- When transferring ownership from "user0" to "user1"
- And the command was successful
- And As an "user1"
- Then as "user1" the folder "/test" does not exist
- And using received transfer folder of "user1" as dav path
- And Downloaded content when downloading file "/test/somefile.txt" with range "bytes=0-6" should be "This is"
- And using old dav path
- And as "user0" the folder "/test" does not exist
- And using received transfer folder of "user1" as dav path
- And as "user1" the folder "/test" exists
- And Getting info of last share
- And the OCS status code should be "404"
-
- Scenario: transferring ownership of folder doubly shared with third user
- Given group "group1" exists
- And user "user0" exists
- And user "user1" exists
- And user "user2" exists
- And user "user2" belongs to group "group1"
- And User "user0" created a folder "/test"
- And User "user0" uploads file "data/textfile.txt" to "/test/somefile.txt"
- And folder "/test" of user "user0" is shared with group "group1" with permissions 31
- And user "user2" accepts last share
- And folder "/test" of user "user0" is shared with user "user2" with permissions 31
- And user "user2" accepts last share
- When transferring ownership from "user0" to "user1"
- And the command was successful
- And As an "user2"
- Then Downloaded content when downloading file "/test/somefile.txt" with range "bytes=0-6" should be "This is"
- And using old dav path
- And as "user0" the folder "/test" does not exist
- And using received transfer folder of "user1" as dav path
- And as "user1" the folder "/test" exists
- And As an "user1"
- And Getting info of last share
- And the OCS status code should be "100"
- And Share fields of last share match with
- | uid_owner | user1 |
- | uid_file_owner | user1 |
- | share_with | user2 |
-
- Scenario: transferring ownership of file shares to user with the same id as the group
- Given user "user0" exists
- And user "test" exists
- And user "user2" exists
- And group "test" exists
- And user "user2" belongs to group "test"
- And User "user0" uploads file "data/textfile.txt" to "/somefile.txt"
- And file "/somefile.txt" of user "user0" is shared with group "test"
- And user "user2" accepts last share
- When transferring ownership from "user0" to "test"
- And the command was successful
- And As an "user2"
- Then Downloaded content when downloading file "/somefile.txt" with range "bytes=0-6" should be "This is"
- And using old dav path
- And as "user0" the file "/somefile.txt" does not exist
- And using received transfer folder of "user1" as dav path
- And as "test" the file "/somefile.txt" exists
- And As an "test"
- And Getting info of last share
- And the OCS status code should be "100"
- And Share fields of last share match with
- | uid_owner | test |
- | uid_file_owner | test |
- | share_with | test |
-
- Scenario: transferring ownership of folder reshared with another user
- Given user "user0" exists
- And user "user1" exists
- And user "user2" exists
- And user "user3" exists
- And User "user3" created a folder "/test"
- And User "user3" uploads file "data/textfile.txt" to "/test/somefile.txt"
- And folder "/test" of user "user3" is shared with user "user0" with permissions 31
- And user "user0" accepts last share
- And folder "/test" of user "user0" is shared with user "user2" with permissions 31
- And user "user2" accepts last share
- When transferring ownership from "user0" to "user1"
- And the command was successful
- And As an "user2"
- Then Downloaded content when downloading file "/test/somefile.txt" with range "bytes=0-6" should be "This is"
- And using old dav path
- And as "user0" the folder "/test" exists
- And using received transfer folder of "user1" as dav path
- And as "user1" the folder "/test" does not exist
- And As an "user0"
- And Getting info of last share
- And the OCS status code should be "100"
- And Share fields of last share match with
- | uid_owner | user0 |
- | uid_file_owner | user3 |
- | share_with | user2 |
-
- Scenario: transferring ownership of folder reshared with group to a user in the group
- Given user "user0" exists
- And user "user1" exists
- And user "user2" exists
- And user "user3" exists
- And group "group1" exists
- And user "user1" belongs to group "group1"
- And User "user3" created a folder "/test"
- And User "user3" uploads file "data/textfile.txt" to "/test/somefile.txt"
- And folder "/test" of user "user3" is shared with user "user0" with permissions 31
- And user "user0" accepts last share
- And folder "/test" of user "user0" is shared with group "group1" with permissions 31
- And user "user1" accepts last share
- When transferring ownership from "user0" to "user1"
- And the command was successful
- And As an "user1"
- Then Downloaded content when downloading file "/test/somefile.txt" with range "bytes=0-6" should be "This is"
- And using old dav path
- And as "user0" the folder "/test" exists
- And using received transfer folder of "user1" as dav path
- And as "user1" the folder "/test" does not exist
- And As an "user1"
- And Getting info of last share
- And the OCS status code should be "100"
- And Share fields of last share match with
- | uid_owner | user1 |
- | uid_file_owner | user3 |
- | share_with | group1 |
-
- Scenario: transferring ownership of folder reshared with group to a user not in the group
- Given user "user0" exists
- And user "user1" exists
- And user "user2" exists
- And user "user3" exists
- And group "group1" exists
- And user "user2" belongs to group "group1"
- And User "user3" created a folder "/test"
- And User "user3" uploads file "data/textfile.txt" to "/test/somefile.txt"
- And folder "/test" of user "user3" is shared with user "user0" with permissions 31
- And user "user0" accepts last share
- And folder "/test" of user "user0" is shared with group "group1" with permissions 31
- And user "user2" accepts last share
- When transferring ownership from "user0" to "user1"
- And the command was successful
- And As an "user2"
- Then Downloaded content when downloading file "/test/somefile.txt" with range "bytes=0-6" should be "This is"
- And using old dav path
- And as "user0" the folder "/test" exists
- And using received transfer folder of "user1" as dav path
- And as "user1" the folder "/test" does not exist
- And As an "user0"
- And Getting info of last share
- And the OCS status code should be "100"
- And Share fields of last share match with
- | uid_owner | user0 |
- | uid_file_owner | user3 |
- | share_with | group1 |
-
- Scenario: transferring ownership does not transfer received shares
- Given user "user0" exists
- And user "user1" exists
- And user "user2" exists
- And User "user2" created a folder "/test"
- And folder "/test" of user "user2" is shared with user "user0" with permissions 31
- And user "user0" accepts last share
- When transferring ownership from "user0" to "user1"
- And the command was successful
- And As an "user1"
- And using received transfer folder of "user1" as dav path
- Then as "user1" the folder "/test" does not exist
- And using old dav path
- And as "user0" the folder "/test" exists
- And As an "user2"
- And Getting info of last share
- And the OCS status code should be "100"
- And Share fields of last share match with
- | uid_owner | user2 |
- | uid_file_owner | user2 |
- | share_with | user0 |
-
- @local_storage
- Scenario: transferring ownership does not transfer external storage
- Given user "user0" exists
- And user "user1" exists
- When transferring ownership from "user0" to "user1"
- And the command was successful
- And As an "user1"
- And using received transfer folder of "user1" as dav path
- Then as "user1" the folder "/local_storage" does not exist
-
- Scenario: transferring ownership does not fail with shared trashed files
- Given user "user0" exists
- And user "user1" exists
- And user "user2" exists
- And User "user0" created a folder "/sub"
- And User "user0" created a folder "/sub/test"
- And folder "/sub/test" of user "user0" is shared with user "user2" with permissions 31
- And user "user2" accepts last share
- And User "user0" deletes folder "/sub"
- When transferring ownership from "user0" to "user1"
- Then the command was successful
-
- Scenario: transferring ownership fails with invalid source user
- Given user "user0" exists
- When transferring ownership from "invalid_user" to "user0"
- Then the command output contains the text "Unknown source user"
- And the command failed with exit code 1
-
- Scenario: transferring ownership fails with invalid target user
- Given user "user0" exists
- When transferring ownership from "user0" to "invalid_user"
- Then the command output contains the text "Unknown destination user invalid_user"
- And the command failed with exit code 1
-
- Scenario: transferring ownership of a file
- Given user "user0" exists
- And user "user1" exists
- And User "user0" uploads file "data/textfile.txt" to "/somefile.txt"
- When transferring ownership of path "somefile.txt" from "user0" to "user1"
- And the command was successful
- And As an "user1"
- And using received transfer folder of "user1" as dav path
- Then Downloaded content when downloading file "/somefile.txt" with range "bytes=0-6" should be "This is"
- And using old dav path
- And as "user0" the file "/somefile.txt" does not exist
- And using received transfer folder of "user1" as dav path
- And as "user1" the file "/somefile.txt" exists
-
- Scenario: transferring ownership of a folder
- Given user "user0" exists
- And user "user1" exists
- And User "user0" created a folder "/test"
- And User "user0" uploads file "data/textfile.txt" to "/test/somefile.txt"
- When transferring ownership of path "test" from "user0" to "user1"
- And the command was successful
- And As an "user1"
- And using received transfer folder of "user1" as dav path
- Then Downloaded content when downloading file "/test/somefile.txt" with range "bytes=0-6" should be "This is"
- And using old dav path
- And as "user0" the folder "/test" does not exist
- And using received transfer folder of "user1" as dav path
- And as "user1" the folder "/test" exists
-
- Scenario: transferring ownership from user with risky display name
- Given user "user0" with displayname "user0 \"risky\"? ヂspḷay 'na|\/|e':.#" exists
- And user "user1" exists
- And User "user0" created a folder "/test"
- And User "user0" uploads file "data/textfile.txt" to "/test/somefile.txt"
- When transferring ownership of path "test" from "user0" to "user1"
- And the command was successful
- And As an "user1"
- And using received transfer folder of "user1" as dav path
- Then Downloaded content when downloading file "/test/somefile.txt" with range "bytes=0-6" should be "This is"
- And transfer folder name contains "transferred from user0 -risky- ヂspḷay -na|-|e- on"
- And using old dav path
- And as "user0" the folder "/test" does not exist
- And using received transfer folder of "user1" as dav path
- And as "user1" the folder "/test" exists
-
- Scenario: transferring ownership of path does not affect other files
- Given user "user0" exists
- And user "user1" exists
- And User "user0" created a folder "/test"
- And User "user0" uploads file "data/textfile.txt" to "/test/somefile.txt"
- And User "user0" created a folder "/test2"
- And User "user0" uploads file "data/textfile.txt" to "/test2/somefile.txt"
- When transferring ownership of path "test" from "user0" to "user1"
- And the command was successful
- And As an "user1"
- And using received transfer folder of "user1" as dav path
- Then Downloaded content when downloading file "/test/somefile.txt" with range "bytes=0-6" should be "This is"
- And using old dav path
- And as "user0" the folder "/test" does not exist
- And as "user0" the folder "/test2" exists
- And as "user0" the file "/test2/somefile.txt" exists
- And using received transfer folder of "user1" as dav path
- And as "user1" the folder "/test" exists
- And as "user1" the folder "/test2" does not exist
-
- Scenario: transferring ownership of path does not affect other shares
- Given user "user0" exists
- And user "user1" exists
- And User "user0" created a folder "/test"
- And User "user0" uploads file "data/textfile.txt" to "/test/somefile.txt"
- And User "user0" created a folder "/test2"
- And User "user0" uploads file "data/textfile.txt" to "/test2/sharedfile.txt"
- And file "/test2/sharedfile.txt" of user "user0" is shared with user "user1" with permissions 19
- And user "user1" accepts last share
- When transferring ownership of path "test" from "user0" to "user1"
- And the command was successful
- And As an "user1"
- And using received transfer folder of "user1" as dav path
- Then Downloaded content when downloading file "/test/somefile.txt" with range "bytes=0-6" should be "This is"
- And using old dav path
- And as "user0" the folder "/test" does not exist
- And as "user0" the folder "/test2" exists
- And as "user0" the file "/test2/sharedfile.txt" exists
- And using received transfer folder of "user1" as dav path
- And as "user1" the folder "/test" exists
- And as "user1" the folder "/test2" does not exist
- And using old dav path
- And as "user1" the file "/sharedfile.txt" exists
- And As an "user1"
- And Getting info of last share
- And the OCS status code should be "100"
- And Share fields of last share match with
- | uid_owner | user0 |
- | uid_file_owner | user0 |
- | share_with | user1 |
-
- Scenario: transferring ownership of file shares
- Given user "user0" exists
- And user "user1" exists
- And user "user2" exists
- And User "user0" created a folder "/test"
- And User "user0" uploads file "data/textfile.txt" to "/test/somefile.txt"
- And file "/test/somefile.txt" of user "user0" is shared with user "user2" with permissions 19
- And user "user2" accepts last share
- When transferring ownership of path "test" from "user0" to "user1"
- And the command was successful
- And As an "user2"
- Then Downloaded content when downloading file "/somefile.txt" with range "bytes=0-6" should be "This is"
- And using old dav path
- And as "user0" the folder "/test" does not exist
- And using received transfer folder of "user1" as dav path
- And as "user1" the folder "/test" exists
- And As an "user1"
- And Getting info of last share
- And the OCS status code should be "100"
- And Share fields of last share match with
- | uid_owner | user1 |
- | uid_file_owner | user1 |
- | share_with | user2 |
-
- Scenario: transferring ownership of folder shared with third user
- Given user "user0" exists
- And user "user1" exists
- And user "user2" exists
- And User "user0" created a folder "/test"
- And User "user0" uploads file "data/textfile.txt" to "/test/somefile.txt"
- And folder "/test" of user "user0" is shared with user "user2" with permissions 31
- And user "user2" accepts last share
- When transferring ownership of path "test" from "user0" to "user1"
- And the command was successful
- And As an "user2"
- Then Downloaded content when downloading file "/test/somefile.txt" with range "bytes=0-6" should be "This is"
- And using old dav path
- And as "user0" the folder "/test" does not exist
- And using received transfer folder of "user1" as dav path
- And as "user1" the folder "/test" exists
- And As an "user1"
- And Getting info of last share
- And the OCS status code should be "100"
- And Share fields of last share match with
- | uid_owner | user1 |
- | uid_file_owner | user1 |
- | share_with | user2 |
-
- Scenario: transferring ownership of folder shared with transfer recipient
- Given user "user0" exists
- And user "user1" exists
- And User "user0" created a folder "/test"
- And User "user0" uploads file "data/textfile.txt" to "/test/somefile.txt"
- And folder "/test" of user "user0" is shared with user "user1" with permissions 31
- And user "user1" accepts last share
- When transferring ownership of path "test" from "user0" to "user1"
- And the command was successful
- And As an "user1"
- Then as "user1" the folder "/test" does not exist
- And using received transfer folder of "user1" as dav path
- And Downloaded content when downloading file "/test/somefile.txt" with range "bytes=0-6" should be "This is"
- And using old dav path
- And as "user0" the folder "/test" does not exist
- And using received transfer folder of "user1" as dav path
- And as "user1" the folder "/test" exists
- And Getting info of last share
- And the OCS status code should be "404"
-
- Scenario: transferring ownership of folder doubly shared with third user
- Given group "group1" exists
- And user "user0" exists
- And user "user1" exists
- And user "user2" exists
- And user "user2" belongs to group "group1"
- And User "user0" created a folder "/test"
- And User "user0" uploads file "data/textfile.txt" to "/test/somefile.txt"
- And folder "/test" of user "user0" is shared with group "group1" with permissions 31
- And user "user2" accepts last share
- And folder "/test" of user "user0" is shared with user "user2" with permissions 31
- And user "user2" accepts last share
- When transferring ownership of path "test" from "user0" to "user1"
- And the command was successful
- And As an "user2"
- Then Downloaded content when downloading file "/test/somefile.txt" with range "bytes=0-6" should be "This is"
- And using old dav path
- And as "user0" the folder "/test" does not exist
- And using received transfer folder of "user1" as dav path
- And as "user1" the folder "/test" exists
- And As an "user1"
- And Getting info of last share
- And the OCS status code should be "100"
- And Share fields of last share match with
- | uid_owner | user1 |
- | uid_file_owner | user1 |
- | share_with | user2 |
-
- Scenario: transferring ownership of path fails for reshares
- Given user "user0" exists
- And user "user1" exists
- And user "user2" exists
- And user "user3" exists
- And User "user3" created a folder "/test"
- And User "user3" uploads file "data/textfile.txt" to "/test/somefile.txt"
- And folder "/test" of user "user3" is shared with user "user0" with permissions 31
- And user "user0" accepts last share
- And folder "/test" of user "user0" is shared with user "user2" with permissions 31
- And user "user2" accepts last share
- When transferring ownership of path "test" from "user0" to "user1"
- Then the command failed with exit code 1
- And the command output contains the text "Could not transfer files."
-
- Scenario: transferring ownership does not transfer received shares
- Given user "user0" exists
- And user "user1" exists
- And user "user2" exists
- And User "user2" created a folder "/test"
- And User "user0" created a folder "/sub"
- And folder "/test" of user "user2" is shared with user "user0" with permissions 31
- And user "user0" accepts last share
- And User "user0" moved folder "/test" to "/sub/test"
- When transferring ownership of path "sub" from "user0" to "user1"
- And the command was successful
- And As an "user1"
- And using received transfer folder of "user1" as dav path
- Then as "user1" the folder "/sub" exists
- And as "user1" the folder "/sub/test" does not exist
- And using old dav path
- And as "user0" the folder "/sub" does not exist
- And Getting info of last share
- And the OCS status code should be "404"
-
- Scenario: transferring ownership transfers received shares into subdir when requested
- Given user "user0" exists
- And user "user1" exists
- And user "user2" exists
- And User "user2" created a folder "/transfer-share"
- And User "user2" created a folder "/do-not-transfer"
- And User "user0" created a folder "/sub"
- And folder "/transfer-share" of user "user2" is shared with user "user0" with permissions 31
- And user "user0" accepts last share
- And User "user0" moved folder "/transfer-share" to "/sub/transfer-share"
- And folder "/do-not-transfer" of user "user2" is shared with user "user0" with permissions 31
- And user "user0" accepts last share
- When transferring ownership of path "sub" from "user0" to "user1" with received shares
- And the command was successful
- And As an "user1"
- And using received transfer folder of "user1" as dav path
- Then as "user1" the folder "/sub" exists
- And as "user1" the folder "/do-not-transfer" does not exist
- And as "user1" the folder "/sub/do-not-transfer" does not exist
- And as "user1" the folder "/sub/transfer-share" exists
- And using old dav path
- And as "user1" the folder "/transfer-share" does not exist
- And as "user1" the folder "/do-not-transfer" does not exist
- And using old dav path
- And as "user0" the folder "/sub" does not exist
- And as "user0" the folder "/do-not-transfer" exists
- And Getting info of last share
- And the OCS status code should be "404"
-
- Scenario: transferring ownership does not transfer external storage
- Given user "user0" exists
- And user "user1" exists
- And User "user0" created a folder "/sub"
- When transferring ownership of path "sub" from "user0" to "user1"
- And the command was successful
- And As an "user1"
- And using received transfer folder of "user1" as dav path
- Then as "user1" the folder "/local_storage" does not exist
-
- Scenario: transferring ownership fails with invalid source user
- Given user "user0" exists
- And User "user0" created a folder "/sub"
- When transferring ownership of path "sub" from "invalid_user" to "user0"
- Then the command output contains the text "Unknown source user"
- And the command failed with exit code 1
-
- Scenario: transferring ownership fails with invalid target user
- Given user "user0" exists
- And User "user0" created a folder "/sub"
- When transferring ownership of path "sub" from "user0" to "invalid_user"
- Then the command output contains the text "Unknown destination user invalid_user"
- And the command failed with exit code 1
-
- Scenario: transferring ownership fails with invalid path
- Given user "user0" exists
- And user "user1" exists
- When transferring ownership of path "test" from "user0" to "user1"
- Then the command output contains the text "Unknown path provided: test"
- And the command failed with exit code 1
diff --git a/build/integration/features/trashbin.feature b/build/integration/features/trashbin.feature
deleted file mode 100644
index 3a9c29f7cb8..00000000000
--- a/build/integration/features/trashbin.feature
+++ /dev/null
@@ -1,81 +0,0 @@
-Feature: trashbin
- Background:
- Given using api version "1"
- And using new dav path
- And As an "admin"
- And app "files_trashbin" is enabled
-
- Scenario: deleting a file moves it to trashbin
- Given As an "admin"
- And user "user0" exists
- When User "user0" deletes file "/textfile0.txt"
- Then user "user0" in trash folder "/" should have 1 element
- And user "user0" in trash folder "/" should have the following elements
- | textfile0.txt |
-
- Scenario: clearing the trashbin
- Given As an "admin"
- And user "user0" exists
- When User "user0" deletes file "/textfile0.txt"
- And User "user0" empties trashbin
- Then user "user0" in trash folder "/" should have 0 elements
-
- Scenario: restoring file from trashbin
- Given As an "admin"
- And user "user0" exists
- When User "user0" deletes file "/textfile0.txt"
- And user "user0" in restores "/textfile0.txt" from trash
- Then user "user0" in trash folder "/" should have 0 elements
- And as "user0" the file "/textfile0.txt" exists
-
- Scenario: deleting and restoring a folder
- Given As an "admin"
- And user "user0" exists
- When User "user0" created a folder "/testfolder"
- And User "user0" moves file "/textfile0.txt" to "/testfolder/textfile0.txt"
- And as "user0" the file "/testfolder/textfile0.txt" exists
- And User "user0" deletes file "/testfolder"
- And user "user0" in trash folder "/" should have 1 element
- And user "user0" in trash folder "/" should have the following elements
- | testfolder |
- And user "user0" in trash folder "/testfolder" should have 1 element
- And user "user0" in trash folder "/testfolder" should have the following elements
- | textfile0.txt |
- And user "user0" in restores "/testfolder" from trash
- Then user "user0" in trash folder "/" should have 0 elements
- And as "user0" the file "/testfolder/textfile0.txt" exists
-
- Scenario: deleting a file from a subfolder and restoring it moves it back to the subfolder
- Given As an "admin"
- And user "user0" exists
- When User "user0" created a folder "/testfolder"
- And User "user0" moves file "/textfile0.txt" to "/testfolder/textfile0.txt"
- And as "user0" the file "/testfolder/textfile0.txt" exists
- And User "user0" deletes file "/testfolder/textfile0.txt"
- And user "user0" in trash folder "/" should have 1 element
- And user "user0" in trash folder "/" should have the following elements
- | textfile0.txt |
- And user "user0" in restores "/textfile0.txt" from trash
- Then user "user0" in trash folder "/" should have 0 elements
- And as "user0" the file "/textfile0.txt" does not exist
- And as "user0" the file "/testfolder/textfile0.txt" exists
-
- Scenario: deleting and a folder and restoring a file inside it
- Given As an "admin"
- And user "user0" exists
- When User "user0" created a folder "/testfolder"
- And User "user0" moves file "/textfile0.txt" to "/testfolder/textfile0.txt"
- And as "user0" the file "/testfolder/textfile0.txt" exists
- And User "user0" deletes file "/testfolder"
- And user "user0" in trash folder "/" should have 1 element
- And user "user0" in trash folder "/" should have the following elements
- | testfolder |
- And user "user0" in trash folder "/testfolder" should have 1 element
- And user "user0" in trash folder "/testfolder" should have the following elements
- | textfile0.txt |
- And user "user0" in restores "/testfolder/textfile0.txt" from trash
- Then user "user0" in trash folder "/" should have 1 elements
- And user "user0" in trash folder "/testfolder" should have 0 element
- And as "user0" the file "/textfile0.txt" exists
-
-
diff --git a/build/integration/features/webdav-related.feature b/build/integration/features/webdav-related.feature
deleted file mode 100644
index 28a0cad619b..00000000000
--- a/build/integration/features/webdav-related.feature
+++ /dev/null
@@ -1,728 +0,0 @@
-Feature: webdav-related
- Background:
- Given using api version "1"
-
- Scenario: Unauthenticated call old dav path
- Given using old dav path
- When connecting to dav endpoint
- Then the HTTP status code should be "401"
- And there are no duplicate headers
- And The following headers should be set
- |WWW-Authenticate|Basic realm="Nextcloud", charset="UTF-8"|
-
- Scenario: Unauthenticated call new dav path
- Given using new dav path
- When connecting to dav endpoint
- Then the HTTP status code should be "401"
- And there are no duplicate headers
- And The following headers should be set
- |WWW-Authenticate|Basic realm="Nextcloud", charset="UTF-8"|
-
- Scenario: Moving a file
- Given using old dav path
- And As an "admin"
- And user "user0" exists
- And As an "user0"
- When User "user0" moves file "/welcome.txt" to "/FOLDER/welcome.txt"
- Then the HTTP status code should be "201"
- And Downloaded content when downloading file "/FOLDER/welcome.txt" with range "bytes=0-6" should be "Welcome"
-
- Scenario: Moving and overwriting a file old way
- Given using old dav path
- And As an "admin"
- And user "user0" exists
- And As an "user0"
- When User "user0" moves file "/welcome.txt" to "/textfile0.txt"
- Then the HTTP status code should be "204"
- And Downloaded content when downloading file "/textfile0.txt" with range "bytes=0-6" should be "Welcome"
-
- Scenario: Moving a file to a folder with no permissions
- Given using old dav path
- And As an "admin"
- And user "user0" exists
- And user "user1" exists
- And As an "user1"
- And user "user1" created a folder "/testshare"
- And as "user1" creating a share with
- | path | testshare |
- | shareType | 0 |
- | permissions | 1 |
- | shareWith | user0 |
- And user "user0" accepts last share
- And As an "user0"
- And User "user0" moves file "/textfile0.txt" to "/testshare/textfile0.txt"
- And the HTTP status code should be "403"
- When Downloading file "/testshare/textfile0.txt"
- Then the HTTP status code should be "404"
-
- Scenario: Moving a file to overwrite a file in a folder with no permissions
- Given using old dav path
- And As an "admin"
- And user "user0" exists
- And user "user1" exists
- And As an "user1"
- And user "user1" created a folder "/testshare"
- And as "user1" creating a share with
- | path | testshare |
- | shareType | 0 |
- | permissions | 1 |
- | shareWith | user0 |
- And user "user0" accepts last share
- And User "user1" copies file "/welcome.txt" to "/testshare/overwritethis.txt"
- And As an "user0"
- When User "user0" moves file "/textfile0.txt" to "/testshare/overwritethis.txt"
- Then the HTTP status code should be "403"
- And Downloaded content when downloading file "/testshare/overwritethis.txt" with range "bytes=0-6" should be "Welcome"
-
- Scenario: Copying a file
- Given using old dav path
- And As an "admin"
- And user "user0" exists
- And As an "user0"
- When User "user0" copies file "/welcome.txt" to "/FOLDER/welcome.txt"
- Then the HTTP status code should be "201"
- And Downloaded content when downloading file "/FOLDER/welcome.txt" with range "bytes=0-6" should be "Welcome"
-
- Scenario: Copying and overwriting a file
- Given using old dav path
- And As an "admin"
- And user "user0" exists
- And As an "user0"
- When User "user0" copies file "/welcome.txt" to "/textfile1.txt"
- Then the HTTP status code should be "204"
- And Downloaded content when downloading file "/textfile1.txt" with range "bytes=0-6" should be "Welcome"
-
- Scenario: Copying a file to a folder with no permissions
- Given using old dav path
- And As an "admin"
- And user "user0" exists
- And user "user1" exists
- And As an "user1"
- And user "user1" created a folder "/testshare"
- And as "user1" creating a share with
- | path | testshare |
- | shareType | 0 |
- | permissions | 1 |
- | shareWith | user0 |
- And user "user0" accepts last share
- And As an "user0"
- When User "user0" copies file "/textfile0.txt" to "/testshare/textfile0.txt"
- Then the HTTP status code should be "403"
- And Downloading file "/testshare/textfile0.txt"
- And the HTTP status code should be "404"
-
- Scenario: Copying a file to overwrite a file into a folder with no permissions
- Given using old dav path
- And As an "admin"
- And user "user0" exists
- And user "user1" exists
- And As an "user1"
- And user "user1" created a folder "/testshare"
- And as "user1" creating a share with
- | path | testshare |
- | shareType | 0 |
- | permissions | 1 |
- | shareWith | user0 |
- And user "user0" accepts last share
- And User "user1" copies file "/welcome.txt" to "/testshare/overwritethis.txt"
- And As an "user0"
- When User "user0" copies file "/textfile0.txt" to "/testshare/overwritethis.txt"
- Then the HTTP status code should be "403"
- And Downloaded content when downloading file "/testshare/overwritethis.txt" with range "bytes=0-6" should be "Welcome"
-
- Scenario: download a file with range
- Given using old dav path
- And As an "admin"
- When Downloading file "/welcome.txt" with range "bytes=52-78"
- Then Downloaded content should be "example file for developers"
-
- Scenario: Upload forbidden if quota is 0
- Given using old dav path
- And As an "admin"
- And user "user0" exists
- And user "user0" has a quota of "0"
- When User "user0" uploads file "data/textfile.txt" to "/asdf.txt"
- Then the HTTP status code should be "507"
-
- Scenario: Retrieving folder quota when no quota is set
- Given using old dav path
- And As an "admin"
- And user "user0" exists
- When user "user0" has unlimited quota
- Then as "user0" gets properties of folder "/" with
- |{DAV:}quota-available-bytes|
- And the single response should contain a property "{DAV:}quota-available-bytes" with value "-3"
-
- Scenario: Retrieving folder quota when quota is set
- Given using old dav path
- And As an "admin"
- And user "user0" exists
- When user "user0" has a quota of "10 MB"
- Then as "user0" gets properties of folder "/" with
- |{DAV:}quota-available-bytes|
- And the single response should contain a property "{DAV:}quota-available-bytes" with value "10485421"
-
- Scenario: Retrieving folder quota of shared folder with quota when no quota is set for recipient
- Given using old dav path
- And As an "admin"
- And user "user0" exists
- And user "user1" exists
- And user "user0" has unlimited quota
- And user "user1" has a quota of "10 MB"
- And As an "user1"
- And user "user1" created a folder "/testquota"
- And as "user1" creating a share with
- | path | testquota |
- | shareType | 0 |
- | permissions | 31 |
- | shareWith | user0 |
- And user "user0" accepts last share
- Then as "user0" gets properties of folder "/testquota" with
- |{DAV:}quota-available-bytes|
- And the single response should contain a property "{DAV:}quota-available-bytes" with value "10485421"
-
- Scenario: Uploading a file as recipient using webdav having quota
- Given using old dav path
- And As an "admin"
- And user "user0" exists
- And user "user1" exists
- And user "user0" has a quota of "10 MB"
- And user "user1" has a quota of "10 MB"
- And As an "user1"
- And user "user1" created a folder "/testquota"
- And as "user1" creating a share with
- | path | testquota |
- | shareType | 0 |
- | permissions | 31 |
- | shareWith | user0 |
- And user "user0" accepts last share
- And As an "user0"
- When User "user0" uploads file "data/textfile.txt" to "/testquota/asdf.txt"
- Then the HTTP status code should be "201"
-
- Scenario: Retrieving folder quota when quota is set and a file was uploaded
- Given using old dav path
- And As an "admin"
- And user "user0" exists
- And user "user0" has a quota of "1 KB"
- And user "user0" adds a file of 93 bytes to "/prueba.txt"
- When as "user0" gets properties of folder "/" with
- |{DAV:}quota-available-bytes|
- Then the single response should contain a property "{DAV:}quota-available-bytes" with value "592"
-
- Scenario: Retrieving folder quota when quota is set and a file was received
- Given using old dav path
- And As an "admin"
- And user "user0" exists
- And user "user1" exists
- And user "user1" has a quota of "1 KB"
- And user "user0" adds a file of 93 bytes to "/user0.txt"
- And file "user0.txt" of user "user0" is shared with user "user1"
- And user "user1" accepts last share
- When as "user1" gets properties of folder "/" with
- |{DAV:}quota-available-bytes|
- Then the single response should contain a property "{DAV:}quota-available-bytes" with value "685"
-
- Scenario: download a public shared file with range
- Given user "user0" exists
- And As an "user0"
- When creating a share with
- | path | welcome.txt |
- | shareType | 3 |
- And Downloading last public shared file with range "bytes=52-78"
- Then Downloaded content should be "example file for developers"
-
- Scenario: download a public shared file inside a folder with range
- Given user "user0" exists
- And As an "user0"
- When creating a share with
- | path | PARENT |
- | shareType | 3 |
- And Downloading last public shared file inside a folder "/parent.txt" with range "bytes=1-8"
- Then Downloaded content should be "extcloud"
-
- Scenario: Downloading a file on the old endpoint should serve security headers
- Given using old dav path
- And As an "admin"
- When Downloading file "/welcome.txt"
- Then The following headers should be set
- |Content-Disposition|attachment; filename*=UTF-8''welcome.txt; filename="welcome.txt"|
- |Content-Security-Policy|default-src 'none';|
- |X-Content-Type-Options |nosniff|
- |X-Frame-Options|SAMEORIGIN|
- |X-Permitted-Cross-Domain-Policies|none|
- |X-Robots-Tag|noindex, nofollow|
- |X-XSS-Protection|1; mode=block|
- And Downloaded content should start with "Welcome to your Nextcloud account!"
-
- Scenario: Doing a GET with a web login should work without CSRF token on the old backend
- Given Logging in using web as "admin"
- When Sending a "GET" to "/remote.php/webdav/welcome.txt" without requesttoken
- Then Downloaded content should start with "Welcome to your Nextcloud account!"
- Then the HTTP status code should be "200"
-
- Scenario: Doing a GET with a web login should work with CSRF token on the old backend
- Given Logging in using web as "admin"
- When Sending a "GET" to "/remote.php/webdav/welcome.txt" with requesttoken
- Then Downloaded content should start with "Welcome to your Nextcloud account!"
- Then the HTTP status code should be "200"
-
- Scenario: Doing a PROPFIND with a web login should not work without CSRF token on the old backend
- Given Logging in using web as "admin"
- When Sending a "PROPFIND" to "/remote.php/webdav/welcome.txt" without requesttoken
- Then the HTTP status code should be "401"
-
- Scenario: Doing a PROPFIND with a web login should work with CSRF token on the old backend
- Given Logging in using web as "admin"
- When Sending a "PROPFIND" to "/remote.php/webdav/welcome.txt" with requesttoken
- Then the HTTP status code should be "207"
-
- Scenario: Upload chunked file asc
- Given user "user0" exists
- And user "user0" uploads chunk file "1" of "3" with "AAAAA" to "/myChunkedFile.txt"
- And user "user0" uploads chunk file "2" of "3" with "BBBBB" to "/myChunkedFile.txt"
- And user "user0" uploads chunk file "3" of "3" with "CCCCC" to "/myChunkedFile.txt"
- When As an "user0"
- And Downloading file "/myChunkedFile.txt"
- Then Downloaded content should be "AAAAABBBBBCCCCC"
-
- Scenario: Upload chunked file desc
- Given user "user0" exists
- And user "user0" uploads chunk file "3" of "3" with "CCCCC" to "/myChunkedFile.txt"
- And user "user0" uploads chunk file "2" of "3" with "BBBBB" to "/myChunkedFile.txt"
- And user "user0" uploads chunk file "1" of "3" with "AAAAA" to "/myChunkedFile.txt"
- When As an "user0"
- And Downloading file "/myChunkedFile.txt"
- Then Downloaded content should be "AAAAABBBBBCCCCC"
-
- Scenario: Upload chunked file random
- Given user "user0" exists
- And user "user0" uploads chunk file "2" of "3" with "BBBBB" to "/myChunkedFile.txt"
- And user "user0" uploads chunk file "3" of "3" with "CCCCC" to "/myChunkedFile.txt"
- And user "user0" uploads chunk file "1" of "3" with "AAAAA" to "/myChunkedFile.txt"
- When As an "user0"
- And Downloading file "/myChunkedFile.txt"
- Then Downloaded content should be "AAAAABBBBBCCCCC"
-
- Scenario: A file that is not shared does not have a share-types property
- Given user "user0" exists
- And user "user0" created a folder "/test"
- When as "user0" gets properties of folder "/test" with
- |{http://owncloud.org/ns}share-types|
- Then the response should contain an empty property "{http://owncloud.org/ns}share-types"
-
- Scenario: A file that is shared to a user has a share-types property
- Given user "user0" exists
- And user "user1" exists
- And user "user0" created a folder "/test"
- And as "user0" creating a share with
- | path | test |
- | shareType | 0 |
- | permissions | 31 |
- | shareWith | user1 |
- When as "user0" gets properties of folder "/test" with
- |{http://owncloud.org/ns}share-types|
- Then the response should contain a share-types property with
- | 0 |
-
- Scenario: A file that is shared to a group has a share-types property
- Given user "user0" exists
- And group "group1" exists
- And user "user0" created a folder "/test"
- And as "user0" creating a share with
- | path | test |
- | shareType | 1 |
- | permissions | 31 |
- | shareWith | group1 |
- When as "user0" gets properties of folder "/test" with
- |{http://owncloud.org/ns}share-types|
- Then the response should contain a share-types property with
- | 1 |
-
- Scenario: A file that is shared by link has a share-types property
- Given user "user0" exists
- And user "user0" created a folder "/test"
- And as "user0" creating a share with
- | path | test |
- | shareType | 3 |
- | permissions | 31 |
- When as "user0" gets properties of folder "/test" with
- |{http://owncloud.org/ns}share-types|
- Then the response should contain a share-types property with
- | 3 |
-
- Scenario: A file that is shared by user,group and link has a share-types property
- Given user "user0" exists
- And user "user1" exists
- And group "group2" exists
- And user "user0" created a folder "/test"
- And as "user0" creating a share with
- | path | test |
- | shareType | 0 |
- | permissions | 31 |
- | shareWith | user1 |
- And as "user0" creating a share with
- | path | test |
- | shareType | 1 |
- | permissions | 31 |
- | shareWith | group2 |
- And as "user0" creating a share with
- | path | test |
- | shareType | 3 |
- | permissions | 31 |
- When as "user0" gets properties of folder "/test" with
- |{http://owncloud.org/ns}share-types|
- Then the response should contain a share-types property with
- | 0 |
- | 1 |
- | 3 |
-
- Scenario: Upload chunked file asc with new chunking
- Given using new dav path
- And user "user0" exists
- And user "user0" creates a new chunking upload with id "chunking-42"
- And user "user0" uploads new chunk file "1" with "AAAAA" to id "chunking-42"
- And user "user0" uploads new chunk file "2" with "BBBBB" to id "chunking-42"
- And user "user0" uploads new chunk file "3" with "CCCCC" to id "chunking-42"
- And user "user0" moves new chunk file with id "chunking-42" to "/myChunkedFile.txt"
- When As an "user0"
- And Downloading file "/myChunkedFile.txt"
- Then Downloaded content should be "AAAAABBBBBCCCCC"
-
- Scenario: Upload chunked file desc with new chunking
- Given using new dav path
- And user "user0" exists
- And user "user0" creates a new chunking upload with id "chunking-42"
- And user "user0" uploads new chunk file "3" with "CCCCC" to id "chunking-42"
- And user "user0" uploads new chunk file "2" with "BBBBB" to id "chunking-42"
- And user "user0" uploads new chunk file "1" with "AAAAA" to id "chunking-42"
- And user "user0" moves new chunk file with id "chunking-42" to "/myChunkedFile.txt"
- When As an "user0"
- And Downloading file "/myChunkedFile.txt"
- Then Downloaded content should be "AAAAABBBBBCCCCC"
-
- Scenario: Upload chunked file random with new chunking
- Given using new dav path
- And user "user0" exists
- And user "user0" creates a new chunking upload with id "chunking-42"
- And user "user0" uploads new chunk file "2" with "BBBBB" to id "chunking-42"
- And user "user0" uploads new chunk file "3" with "CCCCC" to id "chunking-42"
- And user "user0" uploads new chunk file "1" with "AAAAA" to id "chunking-42"
- And user "user0" moves new chunk file with id "chunking-42" to "/myChunkedFile.txt"
- When As an "user0"
- And Downloading file "/myChunkedFile.txt"
- Then Downloaded content should be "AAAAABBBBBCCCCC"
-
- Scenario: A disabled user cannot use webdav
- Given user "userToBeDisabled" exists
- And As an "admin"
- And assure user "userToBeDisabled" is disabled
- When Downloading file "/welcome.txt" as "userToBeDisabled"
- Then the HTTP status code should be "503"
-
- Scenario: Copying files into a folder with edit permissions
- Given using dav path "remote.php/webdav"
- And user "user0" exists
- And user "user1" exists
- And As an "user1"
- And user "user1" created a folder "/testcopypermissionsAllowed"
- And as "user1" creating a share with
- | path | testcopypermissionsAllowed |
- | shareType | 0 |
- | permissions | 31 |
- | shareWith | user0 |
- And user "user0" accepts last share
- And User "user0" uploads file with content "copytest" to "/copytest.txt"
- When User "user0" copies file "/copytest.txt" to "/testcopypermissionsAllowed/copytest.txt"
- Then the HTTP status code should be "201"
-
- Scenario: Copying files into a folder without edit permissions
- Given using dav path "remote.php/webdav"
- And user "user0" exists
- And user "user1" exists
- And As an "user1"
- And user "user1" created a folder "/testcopypermissionsNotAllowed"
- And as "user1" creating a share with
- | path | testcopypermissionsNotAllowed |
- | shareType | 0 |
- | permissions | 1 |
- | shareWith | user0 |
- And user "user0" accepts last share
- And User "user0" uploads file with content "copytest" to "/copytest.txt"
- When User "user0" copies file "/copytest.txt" to "/testcopypermissionsNotAllowed/copytest.txt"
- Then the HTTP status code should be "403"
-
- Scenario: Uploading a file as recipient with limited permissions
- Given using new dav path
- And As an "admin"
- And user "user0" exists
- And user "user1" exists
- And user "user0" has a quota of "10 MB"
- And user "user1" has a quota of "10 MB"
- And As an "user1"
- And user "user1" created a folder "/testfolder"
- And as "user1" creating a share with
- | path | testfolder |
- | shareType | 0 |
- | permissions | 23 |
- | shareWith | user0 |
- And user "user0" accepts last share
- And As an "user0"
- And User "user0" uploads file "data/textfile.txt" to "/testfolder/asdf.txt"
- And As an "user1"
- When User "user1" deletes file "/testfolder/asdf.txt"
- Then the HTTP status code should be "204"
-
- Scenario: Creating a folder
- Given using old dav path
- And user "user0" exists
- And user "user0" created a folder "/test_folder"
- When as "user0" gets properties of folder "/test_folder" with
- |{DAV:}resourcetype|
- Then the single response should contain a property "{DAV:}resourcetype" with value "{DAV:}collection"
-
- Scenario: Creating a folder with special chars
- Given using old dav path
- And user "user0" exists
- And user "user0" created a folder "/test_folder:5"
- When as "user0" gets properties of folder "/test_folder:5" with
- |{DAV:}resourcetype|
- Then the single response should contain a property "{DAV:}resourcetype" with value "{DAV:}collection"
-
- Scenario: Removing everything of a folder
- Given using old dav path
- And As an "admin"
- And user "user0" exists
- And As an "user0"
- And User "user0" moves file "/welcome.txt" to "/FOLDER/welcome.txt"
- And user "user0" created a folder "/FOLDER/SUBFOLDER"
- And User "user0" copies file "/textfile0.txt" to "/FOLDER/SUBFOLDER/testfile0.txt"
- When User "user0" deletes everything from folder "/FOLDER/"
- Then user "user0" should see following elements
- | /FOLDER/ |
- | /PARENT/ |
- | /PARENT/parent.txt |
- | /textfile0.txt |
- | /textfile1.txt |
- | /textfile2.txt |
- | /textfile3.txt |
- | /textfile4.txt |
-
- Scenario: Removing everything of a folder using new dav path
- Given using new dav path
- And As an "admin"
- And user "user0" exists
- And As an "user0"
- And User "user0" moves file "/welcome.txt" to "/FOLDER/welcome.txt"
- And user "user0" created a folder "/FOLDER/SUBFOLDER"
- And User "user0" copies file "/textfile0.txt" to "/FOLDER/SUBFOLDER/testfile0.txt"
- When User "user0" deletes everything from folder "/FOLDER/"
- Then user "user0" should see following elements
- | /FOLDER/ |
- | /PARENT/ |
- | /PARENT/parent.txt |
- | /textfile0.txt |
- | /textfile1.txt |
- | /textfile2.txt |
- | /textfile3.txt |
- | /textfile4.txt |
-
- Scenario: Checking file id after a move using new endpoint
- Given using new dav path
- And user "user0" exists
- And User "user0" stores id of file "/textfile0.txt"
- When User "user0" moves file "/textfile0.txt" to "/FOLDER/textfile0.txt"
- Then User "user0" checks id of file "/FOLDER/textfile0.txt"
-
- Scenario: Checking file id after a move overwrite using new chunking endpoint
- Given using new dav path
- And user "user0" exists
- And User "user0" copies file "/textfile0.txt" to "/existingFile.txt"
- And User "user0" stores id of file "/existingFile.txt"
- And user "user0" creates a new chunking upload with id "chunking-42"
- And user "user0" uploads new chunk file "1" with "AAAAA" to id "chunking-42"
- And user "user0" uploads new chunk file "2" with "BBBBB" to id "chunking-42"
- And user "user0" uploads new chunk file "3" with "CCCCC" to id "chunking-42"
- When user "user0" moves new chunk file with id "chunking-42" to "/existingFile.txt"
- Then User "user0" checks id of file "/existingFile.txt"
-
- Scenario: Renaming a folder to a backslash encoded should return an error using old endpoint
- Given using old dav path
- And user "user0" exists
- And user "user0" created a folder "/testshare"
- When User "user0" moves folder "/testshare" to "/%5C"
- Then the HTTP status code should be "400"
-
- Scenario: Renaming a folder beginning with a backslash encoded should return an error using old endpoint
- Given using old dav path
- And user "user0" exists
- And user "user0" created a folder "/testshare"
- When User "user0" moves folder "/testshare" to "/%5Ctestshare"
- Then the HTTP status code should be "400"
-
- Scenario: Renaming a folder including a backslash encoded should return an error using old endpoint
- Given using old dav path
- And user "user0" exists
- And user "user0" created a folder "/testshare"
- When User "user0" moves folder "/testshare" to "/hola%5Chola"
- Then the HTTP status code should be "400"
-
- Scenario: Renaming a folder to a backslash encoded should return an error using new endpoint
- Given using new dav path
- And user "user0" exists
- And user "user0" created a folder "/testshare"
- When User "user0" moves folder "/testshare" to "/%5C"
- Then the HTTP status code should be "400"
-
- Scenario: Renaming a folder beginning with a backslash encoded should return an error using new endpoint
- Given using new dav path
- And user "user0" exists
- And user "user0" created a folder "/testshare"
- When User "user0" moves folder "/testshare" to "/%5Ctestshare"
- Then the HTTP status code should be "400"
-
- Scenario: Renaming a folder including a backslash encoded should return an error using new endpoint
- Given using new dav path
- And user "user0" exists
- And user "user0" created a folder "/testshare"
- When User "user0" moves folder "/testshare" to "/hola%5Chola"
- Then the HTTP status code should be "400"
-
- Scenario: Upload file via new chunking endpoint with wrong size header
- Given using new dav path
- And user "user0" exists
- And user "user0" creates a new chunking upload with id "chunking-42"
- And user "user0" uploads new chunk file "1" with "AAAAA" to id "chunking-42"
- And user "user0" uploads new chunk file "2" with "BBBBB" to id "chunking-42"
- And user "user0" uploads new chunk file "3" with "CCCCC" to id "chunking-42"
- When user "user0" moves new chunk file with id "chunking-42" to "/myChunkedFile.txt" with size 5
- Then the HTTP status code should be "400"
-
- Scenario: Upload file via new chunking endpoint with correct size header
- Given using new dav path
- And user "user0" exists
- And user "user0" creates a new chunking upload with id "chunking-42"
- And user "user0" uploads new chunk file "1" with "AAAAA" to id "chunking-42"
- And user "user0" uploads new chunk file "2" with "BBBBB" to id "chunking-42"
- And user "user0" uploads new chunk file "3" with "CCCCC" to id "chunking-42"
- When user "user0" moves new chunk file with id "chunking-42" to "/myChunkedFile.txt" with size 15
- Then the HTTP status code should be "201"
-
- Scenario: Upload bulked files
- Given user "user0" exists
- And user "user0" uploads bulked files "A.txt" with "AAAAA" and "B.txt" with "BBBBB" and "C.txt" with "CCCCC"
- When As an "user0"
- Then Downloading file "/A.txt"
- And Downloaded content should be "AAAAA"
- And File "/A.txt" should have prop "d:getlastmodified" equal to "Fri, 18 Mar 2005 01:58:31 GMT"
- And Downloading file "/B.txt"
- And Downloaded content should be "BBBBB"
- And File "/B.txt" should have prop "d:getlastmodified" equal to "Sat, 02 Jun 2040 03:57:02 GMT"
- And Downloading file "/C.txt"
- And Downloaded content should be "CCCCC"
- And File "/C.txt" should have prop "d:getlastmodified" equal to "Sun, 18 Aug 2075 05:55:33 GMT"
-
- Scenario: Creating a folder with invalid characters
- Given using new dav path
- And As an "admin"
- And user "user0" exists
- And user "user1" exists
- And As an "user1"
- And user "user1" created a folder "/testshare "
- Then the HTTP status code should be "400"
-
- @s3-multipart
- Scenario: Upload chunked file asc with new chunking v2
- Given using new dav path
- And user "user0" exists
- And user "user0" creates a file locally with "3" x 5 MB chunks
- And user "user0" creates a new chunking v2 upload with id "chunking-42" and destination "/myChunkedFile1.txt"
- And user "user0" uploads new chunk v2 file "1" to id "chunking-42"
- And user "user0" uploads new chunk v2 file "2" to id "chunking-42"
- And user "user0" uploads new chunk v2 file "3" to id "chunking-42"
- And user "user0" moves new chunk v2 file with id "chunking-42"
- Then the S3 multipart upload was successful with status "201"
- When As an "user0"
- And Downloading file "/myChunkedFile1.txt"
- Then Downloaded content should be the created file
-
- @s3-multipart
- Scenario: Upload chunked file desc with new chunking v2
- Given using new dav path
- And user "user0" exists
- And user "user0" creates a file locally with "3" x 5 MB chunks
- And user "user0" creates a new chunking v2 upload with id "chunking-42" and destination "/myChunkedFile.txt"
- And user "user0" uploads new chunk v2 file "3" to id "chunking-42"
- And user "user0" uploads new chunk v2 file "2" to id "chunking-42"
- And user "user0" uploads new chunk v2 file "1" to id "chunking-42"
- And user "user0" moves new chunk v2 file with id "chunking-42"
- Then the S3 multipart upload was successful with status "201"
- When As an "user0"
- And Downloading file "/myChunkedFile.txt"
- Then Downloaded content should be the created file
-
- @s3-multipart
- Scenario: Upload chunked file with random chunk sizes
- Given using new dav path
- And user "user0" exists
- And user "user0" creates a new chunking v2 upload with id "chunking-random" and destination "/myChunkedFile.txt"
- And user user0 creates the chunk 1 with a size of 5 MB
- And user user0 creates the chunk 2 with a size of 7 MB
- And user user0 creates the chunk 3 with a size of 9 MB
- And user user0 creates the chunk 4 with a size of 1 MB
- And user "user0" uploads new chunk v2 file "1" to id "chunking-random"
- And user "user0" uploads new chunk v2 file "3" to id "chunking-random"
- And user "user0" uploads new chunk v2 file "2" to id "chunking-random"
- And user "user0" uploads new chunk v2 file "4" to id "chunking-random"
- And user "user0" moves new chunk v2 file with id "chunking-random"
- Then the S3 multipart upload was successful with status "201"
- When As an "user0"
- And Downloading file "/myChunkedFile.txt"
- Then Downloaded content should be the created file
-
- @s3-multipart
- Scenario: Upload chunked file with too low chunk sizes
- Given using new dav path
- And user "user0" exists
- And user "user0" creates a new chunking v2 upload with id "chunking-random" and destination "/myChunkedFile.txt"
- And user user0 creates the chunk 1 with a size of 5 MB
- And user user0 creates the chunk 2 with a size of 2 MB
- And user user0 creates the chunk 3 with a size of 5 MB
- And user user0 creates the chunk 4 with a size of 1 MB
- And user "user0" uploads new chunk v2 file "1" to id "chunking-random"
- And user "user0" uploads new chunk v2 file "3" to id "chunking-random"
- And user "user0" uploads new chunk v2 file "2" to id "chunking-random"
- And user "user0" uploads new chunk v2 file "4" to id "chunking-random"
- And user "user0" moves new chunk v2 file with id "chunking-random"
- Then the upload should fail on object storage
-
- @s3-multipart
- Scenario: Upload chunked file with special characters with new chunking v2
- Given using new dav path
- And user "user0" exists
- And user "user0" creates a file locally with "3" x 5 MB chunks
- And user "user0" creates a new chunking v2 upload with id "chunking-42" and destination "/äöü.txt"
- And user "user0" uploads new chunk v2 file "1" to id "chunking-42"
- And user "user0" uploads new chunk v2 file "2" to id "chunking-42"
- And user "user0" uploads new chunk v2 file "3" to id "chunking-42"
- And user "user0" moves new chunk v2 file with id "chunking-42"
- Then the S3 multipart upload was successful with status "201"
- When As an "user0"
- And Downloading file "/äöü.txt"
- Then Downloaded content should be the created file
-
- @s3-multipart
- Scenario: Upload chunked file with special characters in path with new chunking v2
- Given using new dav path
- And user "user0" exists
- And User "user0" created a folder "üäöé"
- And user "user0" creates a file locally with "3" x 5 MB chunks
- And user "user0" creates a new chunking v2 upload with id "chunking-42" and destination "/üäöé/äöü.txt"
- And user "user0" uploads new chunk v2 file "1" to id "chunking-42"
- And user "user0" uploads new chunk v2 file "2" to id "chunking-42"
- And user "user0" uploads new chunk v2 file "3" to id "chunking-42"
- And user "user0" moves new chunk v2 file with id "chunking-42"
- Then the S3 multipart upload was successful with status "201"
- When As an "user0"
- And Downloading file "/üäöé/äöü.txt"
- Then Downloaded content should be the created file