extend webdav tests for old, new and spaces path

This commit is contained in:
Prajwol Amatya
2024-11-19 09:07:45 +05:45
parent 0fa52f26e9
commit 33a99d6de3
47 changed files with 957 additions and 356 deletions
@@ -5,129 +5,208 @@ Feature: dav-versions
Background:
Given using OCS API version "2"
And using new DAV path
And user "Alice" has been created with default attributes and without skeleton files
Scenario: upload file and no version is available
Scenario Outline: upload file and no version is available
Given using <dav-path-version> DAV path
When user "Alice" uploads file "filesForUpload/davtest.txt" to "/davtest.txt" using the WebDAV API
Then the HTTP status code should be "201"
And the version folder of file "/davtest.txt" for user "Alice" should contain "0" elements
Examples:
| dav-path-version |
| old |
| new |
| spaces |
Scenario: upload file and no version is available using various chunking methods (except new chunking)
Scenario Outline: upload file and no version is available using various chunking methods (except new chunking)
Given using <dav-path-version> DAV path
When user "Alice" uploads file "filesForUpload/davtest.txt" to filenames based on "/davtest.txt" with all mechanisms except new chunking using the WebDAV API
Then the HTTP status code of all upload responses should be "201"
And the version folder of file "/davtest.txt-olddav-regular" for user "Alice" should contain "0" elements
And the version folder of file "/davtest.txt-newdav-regular" for user "Alice" should contain "0" elements
And the version folder of file "/davtest.txt-olddav-oldchunking" for user "Alice" should contain "0" elements
Examples:
| dav-path-version |
| old |
| new |
| spaces |
@smokeTest
Scenario: upload a file twice and versions are available
Scenario Outline: upload a file twice and versions are available
Given using <dav-path-version> DAV path
When user "Alice" uploads file "filesForUpload/davtest.txt" to "/davtest.txt" using the WebDAV API
And user "Alice" uploads file "filesForUpload/davtest.txt" to "/davtest.txt" using the WebDAV API
Then the HTTP status code of responses on each endpoint should be "201, 204" respectively
And the version folder of file "/davtest.txt" for user "Alice" should contain "1" element
And the content length of file "/davtest.txt" with version index "1" for user "Alice" in versions folder should be "8"
Examples:
| dav-path-version |
| old |
| new |
| spaces |
Scenario: upload a file twice and versions are available using various chunking methods (except new chunking)
Scenario Outline: upload a file twice and versions are available using various chunking methods (except new chunking)
Given using <dav-path-version> DAV path
When user "Alice" uploads file "filesForUpload/davtest.txt" to filenames based on "/davtest.txt" with all mechanisms except new chunking using the WebDAV API
And user "Alice" uploads file "filesForUpload/davtest.txt" to filenames based on "/davtest.txt" with all mechanisms except new chunking using the WebDAV API
Then the HTTP status code of all upload responses should be between "201" and "204"
And the version folder of file "/davtest.txt-olddav-regular" for user "Alice" should contain "1" element
And the version folder of file "/davtest.txt-newdav-regular" for user "Alice" should contain "1" element
And the version folder of file "/davtest.txt-olddav-oldchunking" for user "Alice" should contain "1" element
Examples:
| dav-path-version |
| old |
| new |
| spaces |
@smokeTest
Scenario: remove a file
Given user "Alice" has uploaded file "filesForUpload/davtest.txt" to "/davtest.txt"
Scenario Outline: remove a file
Given using <dav-path-version> DAV path
And user "Alice" has uploaded file "filesForUpload/davtest.txt" to "/davtest.txt"
And user "Alice" has uploaded file "filesForUpload/davtest.txt" to "/davtest.txt"
And the version folder of file "/davtest.txt" for user "Alice" should contain "1" element
And user "Alice" has deleted file "/davtest.txt"
When user "Alice" uploads file "filesForUpload/davtest.txt" to "/davtest.txt" using the WebDAV API
Then the HTTP status code should be "201"
And the version folder of file "/davtest.txt" for user "Alice" should contain "0" elements
Examples:
| dav-path-version |
| old |
| new |
| spaces |
@smokeTest
Scenario: restore a file and check its content
Given user "Alice" has uploaded file with content "Test Content." to "/davtest.txt"
Scenario Outline: restore a file and check its content
Given using <dav-path-version> DAV path
And user "Alice" has uploaded file with content "Test Content." to "/davtest.txt"
And user "Alice" has uploaded file with content "Content Test Updated." to "/davtest.txt"
And the version folder of file "/davtest.txt" for user "Alice" should contain "1" element
When user "Alice" restores version index "1" of file "/davtest.txt" using the WebDAV API
Then the HTTP status code should be "204"
And the content of file "/davtest.txt" for user "Alice" should be "Test Content."
Examples:
| dav-path-version |
| old |
| new |
| spaces |
@smokeTest @skipOnStorage:ceph @skipOnStorage:scality
Scenario: restore a file back to bigger content and check its content
Given user "Alice" has uploaded file with content "Back To The Future." to "/davtest.txt"
Scenario Outline: restore a file back to bigger content and check its content
Given using <dav-path-version> DAV path
And user "Alice" has uploaded file with content "Back To The Future." to "/davtest.txt"
And user "Alice" has uploaded file with content "Update Content." to "/davtest.txt"
And the version folder of file "/davtest.txt" for user "Alice" should contain "1" element
When user "Alice" restores version index "1" of file "/davtest.txt" using the WebDAV API
Then the HTTP status code should be "204"
And the content of file "/davtest.txt" for user "Alice" should be "Back To The Future."
Examples:
| dav-path-version |
| old |
| new |
| spaces |
@smokeTest @skipOnStorage:ceph
Scenario: uploading a chunked file does create the correct version that can be restored
Given using old DAV path
Scenario Outline: uploading a chunked file does create the correct version that can be restored
Given using <dav-path-version> DAV path
And user "Alice" has uploaded file with content "textfile0" to "textfile0.txt"
When user "Alice" uploads file "filesForUpload/davtest.txt" to "/textfile0.txt" in 2 chunks using the WebDAV API
And user "Alice" uploads file "filesForUpload/lorem.txt" to "/textfile0.txt" in 3 chunks using the WebDAV API
# HTTP status code is different for old (201) and new (204) WebDav API when uploading in chunks
Then the HTTP status code of responses on all endpoints should be "201"
And the version folder of file "/textfile0.txt" for user "Alice" should contain "2" elements
When user "Alice" restores version index "1" of file "/textfile0.txt" using the WebDAV API
Then the HTTP status code should be "204"
And the content of file "/textfile0.txt" for user "Alice" should be "Dav-Test"
Examples:
| dav-path-version |
| old |
| new |
| spaces |
@skipOnStorage:ceph @skipOnStorage:scality
Scenario: restore a file and check the content and checksum
Given user "Alice" has uploaded file with content "AAAAABBBBBCCCCC" and checksum "MD5:45a72715acdd5019c5be30bdbb75233e" to "/davtest.txt"
Scenario Outline: restore a file and check the content and checksum
Given using <dav-path-version> DAV path
And user "Alice" has uploaded file with content "AAAAABBBBBCCCCC" and checksum "MD5:45a72715acdd5019c5be30bdbb75233e" to "/davtest.txt"
And user "Alice" has uploaded file "filesForUpload/textfile.txt" to "/davtest.txt" with checksum "MD5:d70b40f177b14b470d1756a3c12b963a"
And the version folder of file "/davtest.txt" for user "Alice" should contain "1" element
When user "Alice" restores version index "1" of file "/davtest.txt" using the WebDAV API
Then the HTTP status code should be "204"
And the content of file "/davtest.txt" for user "Alice" should be "AAAAABBBBBCCCCC"
And as user "Alice" the webdav checksum of "/davtest.txt" via propfind should match "SHA1:acfa6b1565f9710d4d497c6035d5c069bd35a8e8 MD5:45a72715acdd5019c5be30bdbb75233e ADLER32:1ecd03df"
Examples:
| dav-path-version |
| old |
| new |
| spaces |
Scenario: user cannot access meta folder of a file which is owned by somebody else
Given user "Brian" has been created with default attributes and without skeleton files
Scenario Outline: user cannot access meta folder of a file which is owned by somebody else
Given using <dav-path-version> DAV path
And user "Brian" has been created with default attributes and without skeleton files
And user "Alice" has uploaded file with content "123" to "/davtest.txt"
And we save it into "FILEID"
When user "Brian" sends HTTP method "PROPFIND" to URL "/dav/meta/<<FILEID>>"
Then the HTTP status code should be "400" or "404"
Examples:
| dav-path-version |
| old |
| new |
| spaces |
Scenario: user cannot access meta folder of a file which does not exist
Given user "Brian" has been created with default attributes and without skeleton files
Scenario Outline: user cannot access meta folder of a file which does not exist
Given using <dav-path-version> DAV path
And user "Brian" has been created with default attributes and without skeleton files
When user "Brian" sends HTTP method "PROPFIND" to URL "/dav/meta/MTI4NGQyMzgtYWE5Mi00MmNlLWJkYzQtMGIwMDAwMDA5MTU2OjhjY2QyNzUxLTkwYTQtNDBmMi1iOWYzLTYxZWRmODQ0MjFmNA=="
Then the HTTP status code should be "400" or "404"
Examples:
| dav-path-version |
| old |
| new |
| spaces |
Scenario Outline: user cannot access meta folder of a file with invalid fileid
Given user "Brian" has been created with default attributes and without skeleton files
Given using <dav-path-version> DAV path
And user "Brian" has been created with default attributes and without skeleton files
When user "Brian" sends HTTP method "PROPFIND" to URL "/dav/meta/<file-id>/v"
Then the HTTP status code should be "400" or "404"
Examples:
| file-id | decoded-value | comment |
| MTI4NGQyMzgtYWE5Mi00MmNlLWJkYzQtMGIwMDAwMDA5MTU3PThjY2QyNzUxLTkwYTQtNDBmMi1iOWYzLTYxZWRmODQ0MjFmNA== | 1284d238-aa92-42ce-bdc4-0b0000009157=8ccd2751-90a4-40f2-b9f3-61edf84421f4 | with = sign |
| MTI4NGQyMzgtYWE5Mi00MmNlLWJkYzQtMGIwMDAwMDA5MTU3OGNjZDI3NTEtOTBhNC00MGYyLWI5ZjMtNjFlZGY4NDQyMWY0 | 1284d238-aa92-42ce-bdc4-0b00000091578ccd2751-90a4-40f2-b9f3-61edf84421f4 | no = sign |
| c29tZS1yYW5kb20tZmlsZUlkPWFub3RoZXItcmFuZG9tLWZpbGVJZA== | some-random-fileId=another-random-fileId | some random string |
| MTI4NGQyMzgtYWE5Mi00MmNlLWJkxzQtMGIwMDAwMDA5MTU2OjhjY2QyNzUxLTkwYTQtNDBmMi1iOWYzLTYxZWRmODQ0MjFmNA== | 1284d238-aa92-42ce-bd4-0b0000009156:8ccd2751-90a4-40f2-b9f3-61edf84421f4 | with : and sign |
| dav-path-version | file-id | decoded-value | comment |
| old | MTI4NGQyMzgtYWE5Mi00MmNlLWJkYzQtMGIwMDAwMDA5MTU3PThjY2QyNzUxLTkwYTQtNDBmMi1iOWYzLTYxZWRmODQ0MjFmNA== | 1284d238-aa92-42ce-bdc4-0b0000009157=8ccd2751-90a4-40f2-b9f3-61edf84421f4 | with = sign |
| old | MTI4NGQyMzgtYWE5Mi00MmNlLWJkYzQtMGIwMDAwMDA5MTU3OGNjZDI3NTEtOTBhNC00MGYyLWI5ZjMtNjFlZGY4NDQyMWY0 | 1284d238-aa92-42ce-bdc4-0b00000091578ccd2751-90a4-40f2-b9f3-61edf84421f4 | no = sign |
| old | c29tZS1yYW5kb20tZmlsZUlkPWFub3RoZXItcmFuZG9tLWZpbGVJZA== | some-random-fileId=another-random-fileId | some random string |
| old | MTI4NGQyMzgtYWE5Mi00MmNlLWJkxzQtMGIwMDAwMDA5MTU2OjhjY2QyNzUxLTkwYTQtNDBmMi1iOWYzLTYxZWRmODQ0MjFmNA== | 1284d238-aa92-42ce-bd4-0b0000009156:8ccd2751-90a4-40f2-b9f3-61edf84421f4 | with : and sign |
| new | MTI4NGQyMzgtYWE5Mi00MmNlLWJkYzQtMGIwMDAwMDA5MTU3PThjY2QyNzUxLTkwYTQtNDBmMi1iOWYzLTYxZWRmODQ0MjFmNA== | 1284d238-aa92-42ce-bdc4-0b0000009157=8ccd2751-90a4-40f2-b9f3-61edf84421f4 | with = sign |
| new | MTI4NGQyMzgtYWE5Mi00MmNlLWJkYzQtMGIwMDAwMDA5MTU3OGNjZDI3NTEtOTBhNC00MGYyLWI5ZjMtNjFlZGY4NDQyMWY0 | 1284d238-aa92-42ce-bdc4-0b00000091578ccd2751-90a4-40f2-b9f3-61edf84421f4 | no = sign |
| new | c29tZS1yYW5kb20tZmlsZUlkPWFub3RoZXItcmFuZG9tLWZpbGVJZA== | some-random-fileId=another-random-fileId | some random string |
| new | MTI4NGQyMzgtYWE5Mi00MmNlLWJkxzQtMGIwMDAwMDA5MTU2OjhjY2QyNzUxLTkwYTQtNDBmMi1iOWYzLTYxZWRmODQ0MjFmNA== | 1284d238-aa92-42ce-bd4-0b0000009156:8ccd2751-90a4-40f2-b9f3-61edf84421f4 | with : and sign |
| spaces | MTI4NGQyMzgtYWE5Mi00MmNlLWJkYzQtMGIwMDAwMDA5MTU3PThjY2QyNzUxLTkwYTQtNDBmMi1iOWYzLTYxZWRmODQ0MjFmNA== | 1284d238-aa92-42ce-bdc4-0b0000009157=8ccd2751-90a4-40f2-b9f3-61edf84421f4 | with = sign |
| spaces | MTI4NGQyMzgtYWE5Mi00MmNlLWJkYzQtMGIwMDAwMDA5MTU3OGNjZDI3NTEtOTBhNC00MGYyLWI5ZjMtNjFlZGY4NDQyMWY0 | 1284d238-aa92-42ce-bdc4-0b00000091578ccd2751-90a4-40f2-b9f3-61edf84421f4 | no = sign |
| spaces | c29tZS1yYW5kb20tZmlsZUlkPWFub3RoZXItcmFuZG9tLWZpbGVJZA== | some-random-fileId=another-random-fileId | some random string |
| spaces | MTI4NGQyMzgtYWE5Mi00MmNlLWJkxzQtMGIwMDAwMDA5MTU2OjhjY2QyNzUxLTkwYTQtNDBmMi1iOWYzLTYxZWRmODQ0MjFmNA== | 1284d238-aa92-42ce-bd4-0b0000009156:8ccd2751-90a4-40f2-b9f3-61edf84421f4 | with : and sign |
Scenario: version history is preserved when a file is renamed
Given user "Alice" has uploaded file with content "old content" to "/textfile.txt"
Scenario Outline: version history is preserved when a file is renamed
Given using <dav-path-version> DAV path
And user "Alice" has uploaded file with content "old content" to "/textfile.txt"
And user "Alice" has uploaded file with content "new content" to "/textfile.txt"
And user "Alice" has moved file "/textfile.txt" to "/renamedfile.txt"
When user "Alice" restores version index "1" of file "/renamedfile.txt" using the WebDAV API
Then the HTTP status code should be "204"
And the content of file "/renamedfile.txt" for user "Alice" should be "old content"
Examples:
| dav-path-version |
| old |
| new |
| spaces |
Scenario: user can access version number after moving a file
Given user "Alice" has created folder "testFolder"
Scenario Outline: user can access version number after moving a file
Given using <dav-path-version> DAV path
And user "Alice" has created folder "testFolder"
And user "Alice" has uploaded file with content "uploaded content" to "textfile0.txt"
And user "Alice" has uploaded file with content "version 1" to "textfile0.txt"
And user "Alice" has uploaded file with content "version 2" to "textfile0.txt"
@@ -136,27 +215,45 @@ Feature: dav-versions
And user "Alice" gets the number of versions of file "/testFolder/textfile0.txt"
Then the HTTP status code should be "207"
And the number of versions should be "3"
Examples:
| dav-path-version |
| old |
| new |
| spaces |
Scenario: original file has version number 0
Given user "Alice" has uploaded file with content "uploaded content" to "textfile0.txt"
Scenario Outline: original file has version number 0
Given using <dav-path-version> DAV path
And user "Alice" has uploaded file with content "uploaded content" to "textfile0.txt"
When user "Alice" gets the number of versions of file "textfile0.txt"
Then the HTTP status code should be "207"
And the number of versions should be "0"
Examples:
| dav-path-version |
| old |
| new |
| spaces |
Scenario: number of etag elements in response changes according to version of the file
Given user "Alice" has uploaded file with content "uploaded content" to "textfile0.txt"
Scenario Outline: number of etag elements in response changes according to version of the file
Given using <dav-path-version> DAV path
And user "Alice" has uploaded file with content "uploaded content" to "textfile0.txt"
And user "Alice" has uploaded file with content "version 1" to "textfile0.txt"
And user "Alice" has uploaded file with content "version 2" to "textfile0.txt"
When user "Alice" gets the number of versions of file "textfile0.txt"
Then the HTTP status code should be "207"
And the number of etag elements in the response should be "2"
And the number of versions should be "2"
Examples:
| dav-path-version |
| old |
| new |
| spaces |
Scenario: download old versions of a file
Given user "Alice" has uploaded file with content "uploaded content" to "textfile0.txt"
Scenario Outline: download old versions of a file
Given using <dav-path-version> DAV path
And user "Alice" has uploaded file with content "uploaded content" to "textfile0.txt"
And user "Alice" has uploaded file with content "version 1" to "textfile0.txt"
And user "Alice" has uploaded file with content "version 2" to "textfile0.txt"
When user "Alice" downloads the version of file "textfile0.txt" with the index "1"
@@ -171,10 +268,16 @@ Feature: dav-versions
| header | value |
| Content-Disposition | attachment; filename*=UTF-8''textfile0.txt; filename="textfile0.txt" |
And the downloaded content should be "uploaded content"
Examples:
| dav-path-version |
| old |
| new |
| spaces |
@skipOnStorage:ceph @skipOnStorage:scality
Scenario: download an old version of a restored file
Given user "Alice" has uploaded file with content "uploaded content" to "textfile0.txt"
Scenario Outline: download an old version of a restored file
Given using <dav-path-version> DAV path
And user "Alice" has uploaded file with content "uploaded content" to "textfile0.txt"
And user "Alice" has uploaded file with content "version 1" to "textfile0.txt"
And user "Alice" has uploaded file with content "version 2" to "textfile0.txt"
And user "Alice" has restored version index "1" of file "textfile0.txt"
@@ -190,6 +293,11 @@ Feature: dav-versions
| header | value |
| Content-Disposition | attachment; filename*=UTF-8''textfile0.txt; filename="textfile0.txt" |
And the downloaded content should be "uploaded content"
Examples:
| dav-path-version |
| old |
| new |
| spaces |
Scenario: user can retrieve meta information of a root folder
@@ -213,27 +321,43 @@ Feature: dav-versions
And the single response should contain a property "oc:meta-path-for-user" with value "/testFolder/davtest.txt"
Scenario: user cannot retrieve meta information of a file which is owned by somebody else
Given user "Brian" has been created with default attributes and without skeleton files
Scenario Outline: user cannot retrieve meta information of a file which is owned by somebody else
Given using <dav-path-version> DAV path
And user "Brian" has been created with default attributes and without skeleton files
And user "Alice" has uploaded file with content "123" to "/davtest.txt "
And we save it into "FILEID"
When user "Brian" retrieves the meta information of fileId "<<FILEID>>" using the meta API
Then the HTTP status code should be "404"
Examples:
| dav-path-version |
| old |
| new |
| spaces |
Scenario Outline: user cannot retrieve meta information of a file that does not exist
Given using <dav-path-version> DAV path
When user "Alice" retrieves the meta information of fileId "<file-id>" using the meta API
Then the HTTP status code should be "400" or "404"
Examples:
| file-id | decoded-value | comment |
| MTI4NGQyMzgtYWE5Mi00MmNlLWJkYzQtMGIwMDAwMDA5MTU3PThjY2QyNzUxLTkwYTQtNDBmMi1iOWYzLTYxZWRmODQ0MjFmNA== | 1284d238-aa92-42ce-bdc4-0b0000009157=8ccd2751-90a4-40f2-b9f3-61edf84421f4 | with = sign |
| MTI4NGQyMzgtYWE5Mi00MmNlLWJkYzQtMGIwMDAwMDA5MTU3OGNjZDI3NTEtOTBhNC00MGYyLWI5ZjMtNjFlZGY4NDQyMWY0 | 1284d238-aa92-42ce-bdc4-0b00000091578ccd2751-90a4-40f2-b9f3-61edf84421f4 | no = sign |
| c29tZS1yYW5kb20tZmlsZUlkPWFub3RoZXItcmFuZG9tLWZpbGVJZA== | some-random-fileId=another-random-fileId | some random string |
| MTI4NGQyMzgtYWE5Mi00MmNlLWJkxzQtMGIwMDAwMDA5MTU2OjhjY2QyNzUxLTkwYTQtNDBmMi1iOWYzLTYxZWRmODQ0MjFmNA== | 1284d238-aa92-42ce-bd4-0b0000009156:8ccd2751-90a4-40f2-b9f3-61edf84421f4 | with : and sign |
| dav-path-version | file-id | decoded-value | comment |
| old | MTI4NGQyMzgtYWE5Mi00MmNlLWJkYzQtMGIwMDAwMDA5MTU3PThjY2QyNzUxLTkwYTQtNDBmMi1iOWYzLTYxZWRmODQ0MjFmNA== | 1284d238-aa92-42ce-bdc4-0b0000009157=8ccd2751-90a4-40f2-b9f3-61edf84421f4 | with = sign |
| old | MTI4NGQyMzgtYWE5Mi00MmNlLWJkYzQtMGIwMDAwMDA5MTU3OGNjZDI3NTEtOTBhNC00MGYyLWI5ZjMtNjFlZGY4NDQyMWY0 | 1284d238-aa92-42ce-bdc4-0b00000091578ccd2751-90a4-40f2-b9f3-61edf84421f4 | no = sign |
| old | c29tZS1yYW5kb20tZmlsZUlkPWFub3RoZXItcmFuZG9tLWZpbGVJZA== | some-random-fileId=another-random-fileId | some random string |
| old | GQyMzgtYWE5Mi00MmNlLWJkxzQtMGIwMDAwMDA5MTU2OjhjY2QyNzUxLTkwYTQtNDBmMi1iOWYzLTYxZWRmODQ0MjFmNA== | 1284d238-aa92-42ce-bd4-0b0000009156:8ccd2751-90a4-40f2-b9f3-61edf84421f4 | with : and sign |
| new | MTI4NGQyMzgtYWE5Mi00MmNlLWJkYzQtMGIwMDAwMDA5MTU3PThjY2QyNzUxLTkwYTQtNDBmMi1iOWYzLTYxZWRmODQ0MjFmNA== | 1284d238-aa92-42ce-bdc4-0b0000009157=8ccd2751-90a4-40f2-b9f3-61edf84421f4 | with = sign |
| new | MTI4NGQyMzgtYWE5Mi00MmNlLWJkYzQtMGIwMDAwMDA5MTU3OGNjZDI3NTEtOTBhNC00MGYyLWI5ZjMtNjFlZGY4NDQyMWY0 | 1284d238-aa92-42ce-bdc4-0b00000091578ccd2751-90a4-40f2-b9f3-61edf84421f4 | no = sign |
| new | c29tZS1yYW5kb20tZmlsZUlkPWFub3RoZXItcmFuZG9tLWZpbGVJZA== | some-random-fileId=another-random-fileId | some random string |
| new | GQyMzgtYWE5Mi00MmNlLWJkxzQtMGIwMDAwMDA5MTU2OjhjY2QyNzUxLTkwYTQtNDBmMi1iOWYzLTYxZWRmODQ0MjFmNA== | 1284d238-aa92-42ce-bd4-0b0000009156:8ccd2751-90a4-40f2-b9f3-61edf84421f4 | with : and sign |
| spaces | MTI4NGQyMzgtYWE5Mi00MmNlLWJkYzQtMGIwMDAwMDA5MTU3PThjY2QyNzUxLTkwYTQtNDBmMi1iOWYzLTYxZWRmODQ0MjFmNA== | 1284d238-aa92-42ce-bdc4-0b0000009157=8ccd2751-90a4-40f2-b9f3-61edf84421f4 | with = sign |
| spaces | MTI4NGQyMzgtYWE5Mi00MmNlLWJkYzQtMGIwMDAwMDA5MTU3OGNjZDI3NTEtOTBhNC00MGYyLWI5ZjMtNjFlZGY4NDQyMWY0 | 1284d238-aa92-42ce-bdc4-0b00000091578ccd2751-90a4-40f2-b9f3-61edf84421f4 | no = sign |
| spaces | c29tZS1yYW5kb20tZmlsZUlkPWFub3RoZXItcmFuZG9tLWZpbGVJZA== | some-random-fileId=another-random-fileId | some random string |
| spaces | GQyMzgtYWE5Mi00MmNlLWJkxzQtMGIwMDAwMDA5MTU2OjhjY2QyNzUxLTkwYTQtNDBmMi1iOWYzLTYxZWRmODQ0MjFmNA== | 1284d238-aa92-42ce-bd4-0b0000009156:8ccd2751-90a4-40f2-b9f3-61edf84421f4 | with : and sign |
Scenario: file versions sets back after getting deleted and restored from trashbin
Given user "Alice" has uploaded file with content "Old Test Content." to "/davtest.txt"
Scenario Outline: file versions sets back after getting deleted and restored from trashbin
Given using <dav-path-version> DAV path
And user "Alice" has uploaded file with content "Old Test Content." to "/davtest.txt"
And user "Alice" has uploaded file with content "New Test Content." to "/davtest.txt"
And the version folder of file "/davtest.txt" for user "Alice" should contain "1" element
And user "Alice" has deleted file "/davtest.txt"
@@ -246,33 +370,56 @@ Feature: dav-versions
When user "Alice" restores version index "1" of file "/davtest.txt" using the WebDAV API
Then the HTTP status code should be "204"
And the content of file "/davtest.txt" for user "Alice" should be "Old Test Content."
Examples:
| dav-path-version |
| new |
| spaces |
Scenario: upload the same file twice with the same mtime and a version is available
Given user "Alice" has uploaded file "filesForUpload/textfile.txt" to "file.txt" with mtime "Thu, 08 Aug 2019 04:18:13 GMT" using the WebDAV API
When user "Alice" uploads file "filesForUpload/textfile.txt" to "file.txt" with mtime "Thu, 08 Aug 2019 04:18:13 GMT" using the WebDAV API
Then the HTTP status code should be "204"
And the version folder of file "/file.txt" for user "Alice" should contain "1" element
Scenario: upload the same file more than twice with the same mtime and only one version is available
Given user "Alice" has uploaded file "filesForUpload/textfile.txt" to "file.txt" with mtime "Thu, 08 Aug 2019 04:18:13 GMT" using the WebDAV API
Scenario Outline: upload the same file twice with the same mtime and a version is available
Given using <dav-path-version> DAV path
And user "Alice" has uploaded file "filesForUpload/textfile.txt" to "file.txt" with mtime "Thu, 08 Aug 2019 04:18:13 GMT" using the WebDAV API
When user "Alice" uploads file "filesForUpload/textfile.txt" to "file.txt" with mtime "Thu, 08 Aug 2019 04:18:13 GMT" using the WebDAV API
Then the HTTP status code should be "204"
And the version folder of file "/file.txt" for user "Alice" should contain "1" element
Examples:
| dav-path-version |
| old |
| new |
| spaces |
Scenario: upload the same file twice with the same mtime and no version after restoring
Given user "Alice" has uploaded file "filesForUpload/textfile.txt" to "file.txt" with mtime "Thu, 08 Aug 2019 04:18:13 GMT" using the WebDAV API
Scenario Outline: upload the same file more than twice with the same mtime and only one version is available
Given using <dav-path-version> DAV path
And user "Alice" has uploaded file "filesForUpload/textfile.txt" to "file.txt" with mtime "Thu, 08 Aug 2019 04:18:13 GMT" using the WebDAV API
And user "Alice" has uploaded file "filesForUpload/textfile.txt" to "file.txt" with mtime "Thu, 08 Aug 2019 04:18:13 GMT" using the WebDAV API
When user "Alice" uploads file "filesForUpload/textfile.txt" to "file.txt" with mtime "Thu, 08 Aug 2019 04:18:13 GMT" using the WebDAV API
Then the HTTP status code should be "204"
And the version folder of file "/file.txt" for user "Alice" should contain "1" element
Examples:
| dav-path-version |
| old |
| new |
| spaces |
Scenario Outline: upload the same file twice with the same mtime and no version after restoring
Given using <dav-path-version> DAV path
And user "Alice" has uploaded file "filesForUpload/textfile.txt" to "file.txt" with mtime "Thu, 08 Aug 2019 04:18:13 GMT" using the WebDAV API
And user "Alice" has uploaded file "filesForUpload/textfile.txt" to "file.txt" with mtime "Thu, 08 Aug 2019 04:18:13 GMT" using the WebDAV API
When user "Alice" restores version index "1" of file "/file.txt" using the WebDAV API
Then the HTTP status code should be "204"
And the version folder of file "/file.txt" for user "Alice" should contain "0" element
Examples:
| dav-path-version |
| old |
| new |
| spaces |
@skipOnReva
Scenario: sharer of a file can see the old version information when the sharee changes the content of the file
Given user "Brian" has been created with default attributes and without skeleton files
Scenario Outline: sharer of a file can see the old version information when the sharee changes the content of the file
Given using <dav-path-version> DAV path
And user "Brian" has been created with default attributes and without skeleton files
And user "Alice" has uploaded file with content "First content" to "sharefile.txt"
And user "Alice" has sent the following resource share invitation:
| resource | sharefile.txt |
@@ -286,10 +433,16 @@ Feature: dav-versions
And the version folder of file "/sharefile.txt" for user "Alice" should contain "1" element
When user "Brian" gets the number of versions of file "/Shares/sharefile.txt"
Then the HTTP status code should be "403"
Examples:
| dav-path-version |
| old |
| new |
| spaces |
@skipOnReva
Scenario: sharer of a file can restore the original content of a shared file after the file has been modified by the sharee
Given user "Brian" has been created with default attributes and without skeleton files
Scenario Outline: sharer of a file can restore the original content of a shared file after the file has been modified by the sharee
Given using <dav-path-version> DAV path
And user "Brian" has been created with default attributes and without skeleton files
And user "Alice" has uploaded file with content "First content" to "sharefile.txt"
And user "Alice" has sent the following resource share invitation:
| resource | sharefile.txt |
@@ -303,10 +456,16 @@ Feature: dav-versions
Then the HTTP status code should be "204"
And the content of file "/sharefile.txt" for user "Alice" should be "First content"
And the content of file "/Shares/sharefile.txt" for user "Brian" should be "First content"
Examples:
| dav-path-version |
| old |
| new |
| spaces |
@skipOnReva
Scenario: sharer can restore a file inside a shared folder modified by sharee
Given user "Brian" has been created with default attributes and without skeleton files
Scenario Outline: sharer can restore a file inside a shared folder modified by sharee
Given using <dav-path-version> DAV path
And user "Brian" has been created with default attributes and without skeleton files
And user "Alice" has created folder "/sharingfolder"
And user "Alice" has sent the following resource share invitation:
| resource | sharingfolder |
@@ -321,10 +480,16 @@ Feature: dav-versions
Then the HTTP status code should be "204"
And the content of file "/sharingfolder/sharefile.txt" for user "Alice" should be "First content"
And the content of file "/Shares/sharingfolder/sharefile.txt" for user "Brian" should be "First content"
Examples:
| dav-path-version |
| old |
| new |
| spaces |
@skipOnReva
Scenario: sharee cannot see a version of a file inside a shared folder when modified by sharee
Given user "Brian" has been created with default attributes and without skeleton files
Scenario Outline: sharee cannot see a version of a file inside a shared folder when modified by sharee
Given using <dav-path-version> DAV path
And user "Brian" has been created with default attributes and without skeleton files
And user "Alice" has created folder "/sharingfolder"
And user "Alice" has sent the following resource share invitation:
| resource | sharingfolder |
@@ -339,10 +504,16 @@ Feature: dav-versions
Then the HTTP status code should be "403"
And the content of file "/Shares/sharingfolder/sharefile.txt" for user "Brian" should be "Second content"
And the content of file "/sharingfolder/sharefile.txt" for user "Alice" should be "Second content"
Examples:
| dav-path-version |
| old |
| new |
| spaces |
@skipOnReva
Scenario: sharer can restore a file inside a shared folder created by sharee and modified by sharer
Given user "Brian" has been created with default attributes and without skeleton files
Scenario Outline: sharer can restore a file inside a shared folder created by sharee and modified by sharer
Given using <dav-path-version> DAV path
And user "Brian" has been created with default attributes and without skeleton files
And user "Alice" has created folder "/sharingfolder"
And user "Alice" has sent the following resource share invitation:
| resource | sharingfolder |
@@ -357,10 +528,16 @@ Feature: dav-versions
Then the HTTP status code should be "204"
And the content of file "/sharingfolder/sharefile.txt" for user "Alice" should be "First content"
And the content of file "/Shares/sharingfolder/sharefile.txt" for user "Brian" should be "First content"
Examples:
| dav-path-version |
| old |
| new |
| spaces |
@skipOnReva
Scenario: sharer can restore a file inside a shared folder created by sharee and modified by sharee
Given user "Brian" has been created with default attributes and without skeleton files
Scenario Outline: sharer can restore a file inside a shared folder created by sharee and modified by sharee
Given using <dav-path-version> DAV path
And user "Brian" has been created with default attributes and without skeleton files
And user "Alice" has created folder "/sharingfolder"
And user "Alice" has sent the following resource share invitation:
| resource | sharingfolder |
@@ -375,10 +552,16 @@ Feature: dav-versions
Then the HTTP status code should be "204"
And the content of file "/sharingfolder/sharefile.txt" for user "Alice" should be "old content"
And the content of file "/Shares/sharingfolder/sharefile.txt" for user "Brian" should be "old content"
Examples:
| dav-path-version |
| old |
| new |
| spaces |
@skipOnReva
Scenario: sharer can restore a file inside a group shared folder modified by sharee
Given user "Brian" has been created with default attributes and without skeleton files
Scenario Outline: sharer can restore a file inside a group shared folder modified by sharee
Given using <dav-path-version> DAV path
And user "Brian" has been created with default attributes and without skeleton files
And user "Carol" has been created with default attributes and without skeleton files
And group "grp1" has been created
And user "Brian" has been added to group "grp1"
@@ -400,6 +583,11 @@ Feature: dav-versions
And the content of file "/sharingfolder/sharefile.txt" for user "Alice" should be "First content"
And the content of file "/Shares/sharingfolder/sharefile.txt" for user "Brian" should be "First content"
And the content of file "/Shares/sharingfolder/sharefile.txt" for user "Carol" should be "First content"
Examples:
| dav-path-version |
| old |
| new |
| spaces |
@skipOnReva
Scenario Outline: moving a file (with versions) into a shared folder as the sharer
@@ -431,10 +619,14 @@ Feature: dav-versions
| new | Viewer |
| new | Uploader |
| new | Editor |
| spaces | Viewer |
| spaces | Uploader |
| spaces | Editor |
@skipOnReva
Scenario: sharee tries to get file versions of file not shared by the sharer
Given user "Brian" has been created with default attributes and without skeleton files
Scenario Outline: sharee tries to get file versions of file not shared by the sharer
Given using <dav-path-version> DAV path
And user "Brian" has been created with default attributes and without skeleton files
And user "Alice" has uploaded file with content "textfile0" to "textfile0.txt"
And user "Alice" has uploaded file with content "textfile1" to "textfile1.txt"
And user "Alice" has sent the following resource share invitation:
@@ -447,10 +639,16 @@ Feature: dav-versions
When user "Brian" tries to get versions of file "textfile1.txt" from "Alice"
Then the HTTP status code should be "404"
And the value of the item "//s:exception" in the response about user "Alice" should be "Sabre\DAV\Exception\NotFound"
Examples:
| dav-path-version |
| old |
| new |
| spaces |
@skipOnStorage:ceph @skipOnReva
Scenario: receiver tries get file versions of shared file from the sharer
Given user "Brian" has been created with default attributes and without skeleton files
Scenario Outline: receiver tries get file versions of shared file from the sharer
Given using <dav-path-version> DAV path
And user "Brian" has been created with default attributes and without skeleton files
And user "Alice" has uploaded file with content "textfile0" to "textfile0.txt"
And user "Alice" has uploaded file with content "version 1" to "textfile0.txt"
And user "Alice" has uploaded file with content "version 2" to "textfile0.txt"
@@ -464,10 +662,16 @@ Feature: dav-versions
And user "Brian" has a share "textfile0.txt" synced
When user "Brian" tries to get versions of file "textfile0.txt" from "Alice"
Then the HTTP status code should be "403"
Examples:
| dav-path-version |
| old |
| new |
| spaces |
@skipOnReva
Scenario: receiver tries get file versions of shared file before receiving it
Given user "Brian" has been created with default attributes and without skeleton files
Scenario Outline: receiver tries get file versions of shared file before receiving it
Given using <dav-path-version> DAV path
And user "Brian" has been created with default attributes and without skeleton files
And user "Alice" has uploaded file with content "textfile0" to "textfile0.txt"
And user "Alice" has uploaded file with content "version 1" to "textfile0.txt"
And user "Alice" has uploaded file with content "version 2" to "textfile0.txt"
@@ -481,10 +685,16 @@ Feature: dav-versions
When user "Brian" tries to get versions of file "textfile0.txt" from "Alice"
Then the HTTP status code should be "403"
And the value of the item "//s:exception" in the response about user "Alice" should be "Sabre\DAV\Exception\Forbidden"
Examples:
| dav-path-version |
| old |
| new |
| spaces |
@issue-enterprise-6249
Scenario: upload empty content file and check versions after multiple restores
Given user "Alice" has uploaded file with content "" to "textfile.txt"
Scenario Outline: upload empty content file and check versions after multiple restores
Given using <dav-path-version> DAV path
And user "Alice" has uploaded file with content "" to "textfile.txt"
And user "Alice" has uploaded file with content "test content" to "textfile.txt"
And the version folder of file "textfile.txt" for user "Alice" should contain "1" element
When user "Alice" restores version index "1" of file "textfile.txt" using the WebDAV API
@@ -495,10 +705,16 @@ Feature: dav-versions
Then the HTTP status code should be "204"
And the content of file "textfile.txt" for user "Alice" should be "test content"
And the version folder of file "textfile.txt" for user "Alice" should contain "1" elements
Examples:
| dav-path-version |
| old |
| new |
| spaces |
Scenario: update with empty content and check versions after multiple restores
Given user "Alice" has uploaded file with content "test content" to "textfile.txt"
Scenario Outline: update with empty content and check versions after multiple restores
Given using <dav-path-version> DAV path
And user "Alice" has uploaded file with content "test content" to "textfile.txt"
And user "Alice" has uploaded file with content "" to "textfile.txt"
And the version folder of file "textfile.txt" for user "Alice" should contain "1" element
When user "Alice" restores version index "1" of file "textfile.txt" using the WebDAV API
@@ -509,3 +725,8 @@ Feature: dav-versions
Then the HTTP status code should be "204"
And the content of file "textfile.txt" for user "Alice" should be ""
And the version folder of file "textfile.txt" for user "Alice" should contain "1" elements
Examples:
| dav-path-version |
| old |
| new |
| spaces |