From 74dc3663a528549ecc0c4d41399ac4669e41b071 Mon Sep 17 00:00:00 2001 From: Swikriti Tripathi <41103328+SwikritiT@users.noreply.github.com> Date: Tue, 21 Nov 2023 15:07:26 +0545 Subject: [PATCH] [tests-only][full-ci]Move unlock related tests from core to local api tests (#7747) * Move unlock related tests from core to local api tests * refactor tests Signed-off-by: Swikriti Tripathi * test:add failing test to expected to failure Signed-off-by: Swikriti Tripathi --------- Signed-off-by: Swikriti Tripathi --- .../expected-failures-API-on-OCIS-storage.md | 11 --- ...ected-failures-localAPI-on-OCIS-storage.md | 19 ++++- .../features/apiLocks/unlockFiles.feature | 83 +++++++++++++++++++ .../bootstrap/WebDavLockingContext.php | 4 +- .../coreApiWebdavLocksUnlock/unlock.feature | 75 ----------------- 5 files changed, 103 insertions(+), 89 deletions(-) delete mode 100644 tests/acceptance/features/coreApiWebdavLocksUnlock/unlock.feature diff --git a/tests/acceptance/expected-failures-API-on-OCIS-storage.md b/tests/acceptance/expected-failures-API-on-OCIS-storage.md index 8a3d8388ea..090f83632a 100644 --- a/tests/acceptance/expected-failures-API-on-OCIS-storage.md +++ b/tests/acceptance/expected-failures-API-on-OCIS-storage.md @@ -60,17 +60,6 @@ Synchronization features like etag propagation, setting mtime and locking files - [coreApiMain/checksums.feature:263](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiMain/checksums.feature#L263) #### [Webdav LOCK operations](https://github.com/owncloud/ocis/issues/1284) -- [coreApiWebdavLocksUnlock/unlock.feature:23](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavLocksUnlock/unlock.feature#L23) -- [coreApiWebdavLocksUnlock/unlock.feature:24](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavLocksUnlock/unlock.feature#L24) -- [coreApiWebdavLocksUnlock/unlock.feature:29](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavLocksUnlock/unlock.feature#L29) -- [coreApiWebdavLocksUnlock/unlock.feature:43](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavLocksUnlock/unlock.feature#L43) -- [coreApiWebdavLocksUnlock/unlock.feature:44](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavLocksUnlock/unlock.feature#L44) -- [coreApiWebdavLocksUnlock/unlock.feature:66](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavLocksUnlock/unlock.feature#L66) -- [coreApiWebdavLocksUnlock/unlock.feature:67](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavLocksUnlock/unlock.feature#L67) -- [coreApiWebdavLocksUnlock/unlock.feature:68](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavLocksUnlock/unlock.feature#L68) -- [coreApiWebdavLocksUnlock/unlock.feature:69](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavLocksUnlock/unlock.feature#L69) -- [coreApiWebdavLocksUnlock/unlock.feature:74](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavLocksUnlock/unlock.feature#L74) -- [coreApiWebdavLocksUnlock/unlock.feature:75](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavLocksUnlock/unlock.feature#L75) - [coreApiWebdavLocksUnlock/unlockSharingToShares.feature:27](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavLocksUnlock/unlockSharingToShares.feature#L27) - [coreApiWebdavLocksUnlock/unlockSharingToShares.feature:28](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavLocksUnlock/unlockSharingToShares.feature#L28) - [coreApiWebdavLocksUnlock/unlockSharingToShares.feature:29](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavLocksUnlock/unlockSharingToShares.feature#L29) diff --git a/tests/acceptance/expected-failures-localAPI-on-OCIS-storage.md b/tests/acceptance/expected-failures-localAPI-on-OCIS-storage.md index d87a891713..7448202773 100644 --- a/tests/acceptance/expected-failures-localAPI-on-OCIS-storage.md +++ b/tests/acceptance/expected-failures-localAPI-on-OCIS-storage.md @@ -163,6 +163,9 @@ The expected failures in this file are from features in the owncloud/ocis repo. - [apiLocks/lockFiles.feature:349](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L349) - [apiLocks/lockFiles.feature:350](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L350) - [apiLocks/lockFiles.feature:351](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L351) +- [apiLocks/unlockFiles.feature:60](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/unlockFiles.feature#L60) +- [apiLocks/unlockFiles.feature:61](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/unlockFiles.feature#L61) +- [apiLocks/unlockFiles.feature:62](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/unlockFiles.feature#L62) #### [Trying to upload to a locked file gives 500](https://github.com/owncloud/ocis/issues/7638) @@ -172,6 +175,12 @@ The expected failures in this file are from features in the owncloud/ocis repo. - [apiLocks/lockFiles.feature:302](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L302) - [apiLocks/lockFiles.feature:303](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L303) - [apiLocks/lockFiles.feature:304](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L304) +- [apiLocks/unlockFiles.feature:85](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/unlockFiles.feature#L85) +- [apiLocks/unlockFiles.feature:86](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/unlockFiles.feature#L86) +- [apiLocks/unlockFiles.feature:87](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/unlockFiles.feature#L87) +- [apiLocks/unlockFiles.feature:88](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/unlockFiles.feature#L88) +- [apiLocks/unlockFiles.feature:89](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/unlockFiles.feature#L89) +- [apiLocks/unlockFiles.feature:90](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/unlockFiles.feature#L90) #### [Folders can be locked and locking works partially](https://github.com/owncloud/ocis/issues/7641) @@ -182,5 +191,13 @@ The expected failures in this file are from features in the owncloud/ocis repo. - [apiLocks/lockFiles.feature:368](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L368) - [apiLocks/lockFiles.feature:369](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L369) -Note: always have an empty line at the end of this file. +### [Anonymous users can unlock a file shared to them through a public link if they get the lock token](https://github.com/owncloud/ocis/issues/7761) +- [apiLocks/unlockFiles.feature:40](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/unlockFiles.feature#L40) +- [apiLocks/unlockFiles.feature:41](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/unlockFiles.feature#L41) +- [apiLocks/unlockFiles.feature:42](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/unlockFiles.feature#L42) +- [apiLocks/unlockFiles.feature:43](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/unlockFiles.feature#L43) +- [apiLocks/unlockFiles.feature:44](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/unlockFiles.feature#L44) +- [apiLocks/unlockFiles.feature:45](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/unlockFiles.feature#L45) + +- Note: always have an empty line at the end of this file. The bash script that processes this file requires that the last line has a newline on the end. diff --git a/tests/acceptance/features/apiLocks/unlockFiles.feature b/tests/acceptance/features/apiLocks/unlockFiles.feature index 8f5ac2c5c1..7f89d8001b 100644 --- a/tests/acceptance/features/apiLocks/unlockFiles.feature +++ b/tests/acceptance/features/apiLocks/unlockFiles.feature @@ -6,6 +6,89 @@ Feature: unlock locked items Background: Given user "Alice" has been created with default attributes and without skeleton files + + Scenario Outline: unlock file locked by the user + Given using DAV path + And user "Alice" has uploaded file "filesForUpload/textfile.txt" to "textfile0.txt" + And user "Alice" has locked file "textfile0.txt" setting the following properties + | lockscope | exclusive | + When user "Alice" unlocks the last created lock of file "textfile0.txt" using the WebDAV API + Then the HTTP status code should be "204" + And 0 locks should be reported for file "textfile0.txt" of user "Alice" by the WebDAV API + Examples: + | dav-path-version | + | old | + | new | + | spaces | + + @issue-7761 + Scenario Outline: public tries to unlock a file in a share that was locked by the file owner + Given using DAV path + And user "Alice" has created folder "PARENT" + And user "Alice" has uploaded file "filesForUpload/textfile.txt" to "PARENT/parent.txt" + And user "Alice" has created a public link share with settings + | path | PARENT | + | permissions | change | + | password | %public% | + And user "Alice" has locked file "PARENT/parent.txt" setting the following properties + | lockscope | | + When the public unlocks file "/parent.txt" with the last created lock of file "PARENT/parent.txt" of user "Alice" using the WebDAV API + Then the HTTP status code should be "403" + And 1 locks should be reported for file "PARENT/parent.txt" of user "Alice" by the WebDAV API + Examples: + | dav-path-version | lock-scope | + | old | shared | + | old | exclusive | + | new | exclusive | + | new | shared | + | spaces | shared | + | spaces | exclusive | + + @issue-7599 + Scenario Outline: unlock one of multiple locks set by the user itself + Given using DAV path + And user "Alice" has uploaded file "filesForUpload/textfile.txt" to "textfile0.txt" + And user "Alice" has locked file "textfile0.txt" setting the following properties + | lockscope | shared | + And user "Alice" has locked file "textfile0.txt" setting the following properties + | lockscope | shared | + When user "Alice" unlocks the last created lock of file "textfile0.txt" using the WebDAV API + Then the HTTP status code should be "204" + And 1 locks should be reported for file "textfile0.txt" of user "Alice" by the WebDAV API + Examples: + | dav-path-version | + | old | + | new | + | spaces | + + @issue-7638 + Scenario Outline: unlocking a file with the same name as another file in another part of the file system + Given using DAV path + And user "Alice" has uploaded file "filesForUpload/textfile.txt" to "textfile0.txt" + And user "Alice" has created folder "locked" + And user "Alice" has uploaded file "filesForUpload/textfile.txt" to "/locked/textfile0.txt" + And user "Alice" has created folder "notlocked" + And user "Alice" has uploaded file "filesForUpload/textfile.txt" to "/notlocked/textfile0.txt" + And user "Alice" has locked file "locked/textfile0.txt" setting the following properties + | lockscope | | + And user "Alice" has locked file "notlocked/textfile0.txt" setting the following properties + | lockscope | | + And user "Alice" has locked file "textfile0.txt" setting the following properties + | lockscope | | + When user "Alice" unlocks the last created lock of file "notlocked/textfile0.txt" using the WebDAV API + And user "Alice" unlocks the last created lock of file "textfile0.txt" using the WebDAV API + Then user "Alice" should be able to upload file "filesForUpload/lorem.txt" to "/notlocked/textfile0.txt" + And user "Alice" should be able to upload file "filesForUpload/lorem.txt" to "/textfile0.txt" + But user "Alice" should not be able to upload file "filesForUpload/lorem.txt" to "/locked/textfile0.txt" + Examples: + | dav-path-version | lock-scope | + | old | shared | + | old | exclusive | + | new | shared | + | new | exclusive | + | spaces | shared | + | spaces | exclusive | + @issue-7696 Scenario Outline: unlock a locked file in project space Given using spaces DAV path diff --git a/tests/acceptance/features/bootstrap/WebDavLockingContext.php b/tests/acceptance/features/bootstrap/WebDavLockingContext.php index 045b936caf..63851aec9d 100644 --- a/tests/acceptance/features/bootstrap/WebDavLockingContext.php +++ b/tests/acceptance/features/bootstrap/WebDavLockingContext.php @@ -531,8 +531,8 @@ class WebDavLockingContext implements Context { $user = $this->featureContext->getActualUsername($user); $lockOwner = $this->featureContext->getActualUsername($lockOwner); if ($public === true) { - $type = "public-files"; - $password = null; + $type = "public-files-new"; + $password = $this->featureContext->getActualPassword("%public%"); } else { $type = "files"; $password = $this->featureContext->getPasswordForUser($user); diff --git a/tests/acceptance/features/coreApiWebdavLocksUnlock/unlock.feature b/tests/acceptance/features/coreApiWebdavLocksUnlock/unlock.feature deleted file mode 100644 index f8c0d61ef7..0000000000 --- a/tests/acceptance/features/coreApiWebdavLocksUnlock/unlock.feature +++ /dev/null @@ -1,75 +0,0 @@ -@issue-1284 -Feature: Unlock locked items - As a user - I want to unlock the resources previously locked by myself - So that other users can make changes to the resources - - Background: - Given user "Alice" has been created with default attributes and without skeleton files - - - Scenario Outline: unlock one of multiple locks set by the user itself - Given using DAV path - And user "Alice" has uploaded file "filesForUpload/textfile.txt" to "textfile0.txt" - And user "Alice" has locked file "textfile0.txt" setting the following properties - | lockscope | shared | - And user "Alice" has locked file "textfile0.txt" setting the following properties - | lockscope | shared | - When user "Alice" unlocks the last created lock of file "textfile0.txt" using the WebDAV API - Then the HTTP status code should be "204" - And 1 locks should be reported for file "textfile0.txt" of user "Alice" by the WebDAV API - Examples: - | dav-path-version | - | old | - | new | - - @skipOnRevaMaster - Examples: - | dav-path-version | - | spaces | - - - Scenario Outline: public unlocking a file in a share that was locked by the file owner is not possible. To unlock use the owners locktoken - Given user "Alice" has created folder "PARENT" - And user "Alice" has uploaded file "filesForUpload/textfile.txt" to "PARENT/parent.txt" - And user "Alice" has created a public link share of folder "PARENT" with change permission - And user "Alice" has locked file "PARENT/parent.txt" setting the following properties - | lockscope | | - When the public unlocks file "/parent.txt" with the last created lock of file "PARENT/parent.txt" of user "Alice" using the WebDAV API - Then the HTTP status code should be "403" - And 1 locks should be reported for file "PARENT/parent.txt" of user "Alice" by the WebDAV API - Examples: - | lock-scope | - | shared | - | exclusive | - - - Scenario Outline: unlocking a file or folder does not unlock another file with the same name in another part of the file system - Given using DAV path - And user "Alice" has created folder "locked" - And user "Alice" has uploaded file "filesForUpload/textfile.txt" to "/locked/textfile0.txt" - And user "Alice" has created folder "notlocked" - And user "Alice" has created folder "notlocked/textfile0.txt" - And user "Alice" has locked file "locked/textfile0.txt" setting the following properties - | lockscope | | - And user "Alice" has locked file "notlocked/textfile0.txt" setting the following properties - | lockscope | | - And user "Alice" has locked file "textfile0.txt" setting the following properties - | lockscope | | - When user "Alice" unlocks the last created lock of file "notlocked/textfile0.txt" using the WebDAV API - And user "Alice" unlocks the last created lock of file "textfile0.txt" using the WebDAV API - Then user "Alice" should be able to upload file "filesForUpload/lorem.txt" to "/notlocked/textfile0.txt/real-file.txt" - And user "Alice" should be able to upload file "filesForUpload/lorem.txt" to "/textfile0.txt" - But user "Alice" should not be able to upload file "filesForUpload/lorem.txt" to "/locked/textfile0.txt" - Examples: - | dav-path-version | lock-scope | - | old | shared | - | old | exclusive | - | new | shared | - | new | exclusive | - - @skipOnRevaMaster - Examples: - | dav-path-version | lock-scope | - | spaces | shared | - | spaces | exclusive |