diff --git a/tests/acceptance/config/behat.yml b/tests/acceptance/config/behat.yml index 0ea587a327f..040aaf54191 100644 --- a/tests/acceptance/config/behat.yml +++ b/tests/acceptance/config/behat.yml @@ -403,6 +403,7 @@ default: - SharingNgContext: - SearchContext: - TagContext: + - TrashbinContext: extensions: rdx\behatvars\BehatVariablesExtension: ~ diff --git a/tests/acceptance/features/bootstrap/CliContext.php b/tests/acceptance/features/bootstrap/CliContext.php index e4ffb69051c..10dff4b1f9b 100644 --- a/tests/acceptance/features/bootstrap/CliContext.php +++ b/tests/acceptance/features/bootstrap/CliContext.php @@ -92,6 +92,20 @@ public function theAdministratorResetsThePasswordOfUserUsingTheCLI(string $statu $this->featureContext->updateUserPassword($user, $password); } + /** + * @When the administrator deletes the empty trashbin folders using the CLI + * + * @return void + */ + public function theAdministratorDeletesEmptyTrashbinFoldersUsingTheCli():void { + $path = $this->featureContext->getStorageUsersRoot(); + $command = "trash purge-empty-dirs -p $path --dry-run=false"; + $body = [ + "command" => $command + ]; + $this->featureContext->setResponse(CliHelper::runCommand($body)); + } + /** * @When the administrator checks the backup consistency using the CLI * diff --git a/tests/acceptance/features/bootstrap/TrashbinContext.php b/tests/acceptance/features/bootstrap/TrashbinContext.php index 7c0bfc361a1..16463348b2f 100644 --- a/tests/acceptance/features/bootstrap/TrashbinContext.php +++ b/tests/acceptance/features/bootstrap/TrashbinContext.php @@ -671,6 +671,28 @@ public function deleteFileFromTrashbin(string $user, string $originalPath):void $this->featureContext->pushToLastStatusCodesArrays(); } + /** + * @Given /^user "([^"]*)" has deleted the (?:file|folder|entry) with original path "([^"]*)" from the trashbin$/ + * + * @param string $user + * @param string $originalPath + * + * @return void + * @throws Exception + */ + public function userHasDeletedTheFolderWithOriginalPathFromTheTrashbin(string $user, string $originalPath) :void { + $responseArray = $this->tryToDeleteFileFromTrashbin($user, $originalPath); + $numItemDeleted = \count($responseArray); + Assert::assertEquals( + 1, + $numItemDeleted, + "Expected to delete exactly one item from the trashbin but $numItemDeleted were deleted" + ); + foreach ($responseArray as $response) { + $this->featureContext->theHTTPStatusCodeShouldBe(204, '', $response); + } + } + /** * @When /^user "([^"]*)" deletes the following (?:files|folders|entries) with original path from the trashbin$/ * diff --git a/tests/acceptance/features/cliCommands/cleanupEmptyTrashBin.feature b/tests/acceptance/features/cliCommands/cleanupEmptyTrashBin.feature new file mode 100644 index 00000000000..bb33c878c1d --- /dev/null +++ b/tests/acceptance/features/cliCommands/cleanupEmptyTrashBin.feature @@ -0,0 +1,24 @@ +@env-config +Feature: delete empty trash bin folder via CLI command + + + Scenario: delete empty trashbin folders + Given the user "Admin" has created a new user with the following attributes: + | userName | Alice | + | displayName | Alice Hansen | + | password | %alt1% | + And user "Alice" has created the following folders + | path | + | folder-to-delete | + | folder-to-restore | + And user "Alice" has uploaded file with content "test file" to "testfile.txt" + And user "Alice" has deleted the following resources + | path | + | folder-to-delete | + | folder-to-restore | + | testfile.txt | + And user "Alice" has restored the folder with original path "folder-to-restore" + And user "Alice" has deleted the folder with original path "folder-to-delete" from the trashbin + And the administrator has stopped the server + When the administrator deletes the empty trashbin folders using the CLI + Then the command should be successful