From 8b9d5da7ec7a5b879fe593cbf6a8a077db35b958 Mon Sep 17 00:00:00 2001 From: Sabin Panta <64484313+S-Panta@users.noreply.github.com> Date: Tue, 30 Apr 2024 12:26:21 +0545 Subject: [PATCH] [tests-only][full-ci] changed given statement of sharing link in api antivirus feature file (#8914) * changed given statement of sharing link in api antivirus feature file * updated scenerio of uploading virus inside public share * added step defnitin for uploading file via public link --- tests/acceptance/config/behat.yml | 1 + .../features/apiAntivirus/antivirus.feature | 131 ++++++++++++------ .../features/bootstrap/FeatureContext.php | 18 +++ .../bootstrap/PublicWebDavContext.php | 65 ++++++++- 4 files changed, 175 insertions(+), 40 deletions(-) diff --git a/tests/acceptance/config/behat.yml b/tests/acceptance/config/behat.yml index e059550a6d..7461cd9d16 100644 --- a/tests/acceptance/config/behat.yml +++ b/tests/acceptance/config/behat.yml @@ -208,6 +208,7 @@ default: - SettingsContext: - OcisConfigContext: - PublicWebDavContext: + - SharingNgContext: apiDownloads: paths: diff --git a/tests/acceptance/features/apiAntivirus/antivirus.feature b/tests/acceptance/features/apiAntivirus/antivirus.feature index 3cbc794dac..98258af582 100644 --- a/tests/acceptance/features/apiAntivirus/antivirus.feature +++ b/tests/acceptance/features/apiAntivirus/antivirus.feature @@ -86,16 +86,17 @@ Feature: antivirus | spaces | - Scenario Outline: upload a file with the virus to a public share + Scenario Outline: public uploads a file with the virus to a public share Given using DAV path + And the config "OCIS_SHARING_PUBLIC_SHARE_MUST_HAVE_PASSWORD" has been set to "false" + And using SharingNG And user "Alice" has created folder "/uploadFolder" - And user "Alice" has created a public link share with settings - | path | /uploadFolder | - | name | sharedlink | - | permissions | change | - | expireDate | 2040-01-01T23:59:59+0100 | - | password | %public% | - When user "Alice" uploads file "filesForUpload/filesWithVirus/" to "/" using the WebDAV API + And user "Alice" has created the following link share: + | resource | uploadFolder | + | space | Personal | + | permissionsRole | edit | + | expirationDateTime | 2040-01-01T23:59:59.000Z | + When the public uploads file "filesForUpload/filesWithVirus/" to "" inside last link shared folder using the new WebDAV API Then the HTTP status code should be "201" And user "Alice" should get a notification with subject "Virus found" and message: | message | @@ -111,17 +112,17 @@ Feature: antivirus | spaces | eicar_com.zip | virusFile2.zip | - Scenario Outline: upload a file with the virus to a password-protected public share + Scenario Outline: public uploads a file with the virus to a password-protected public share Given using DAV path + And using SharingNG And user "Alice" has created folder "/uploadFolder" - And user "Alice" has created a public link share with settings - | path | /uploadFolder | - | name | sharedlink | - | permissions | change | - | password | newpasswd | - | expireDate | 2040-01-01T23:59:59+0100 | - | password | %public% | - When user "Alice" uploads file "filesForUpload/filesWithVirus/" to "/" using the WebDAV API + And user "Alice" has created the following link share: + | resource | uploadFolder | + | space | Personal | + | permissionsRole | edit | + | password | %public% | + | expirationDateTime | 2040-01-01T23:59:59.000Z | + When the public uploads file "filesForUpload/filesWithVirus/" to "" inside last link shared folder with password "%public%" using the new WebDAV API Then the HTTP status code should be "201" And user "Alice" should get a notification with subject "Virus found" and message: | message | @@ -141,7 +142,12 @@ Feature: antivirus Given using DAV path And user "Brian" has been created with default attributes and without skeleton files And user "Alice" has created folder "uploadFolder" - And user "Alice" has shared folder "uploadFolder" with user "Brian" with permissions "all" + And user "Alice" has sent the following share invitation: + | resource | uploadFolder | + | space | Personal | + | sharee | Brian | + | shareType | user | + | permissionsRole | Editor | When user "Brian" uploads file "filesForUpload/filesWithVirus/" to "/Shares/uploadFolder/" using the WebDAV API Then the HTTP status code should be "201" And user "Brian" should get a notification with subject "Virus found" and message: @@ -161,7 +167,12 @@ Feature: antivirus Given using spaces DAV path And user "Brian" has been created with default attributes and without skeleton files And user "Alice" has created folder "uploadFolder" - And user "Alice" has shared folder "uploadFolder" with user "Brian" with permissions "all" + And user "Alice" has sent the following share invitation: + | resource | uploadFolder | + | space | Personal | + | sharee | Brian | + | shareType | user | + | permissionsRole | Editor | When user "Brian" uploads a file "filesForUpload/filesWithVirus/" to "/uploadFolder/" in space "Shares" using the WebDAV API Then the HTTP status code should be "201" And user "Brian" should get a notification with subject "Virus found" and message: @@ -181,7 +192,12 @@ Feature: antivirus And group "group1" has been created And user "Brian" has been added to group "group1" And user "Alice" has created folder "uploadFolder" - And user "Alice" has shared folder "uploadFolder" with group "group1" + And user "Alice" has sent the following share invitation: + | resource | uploadFolder | + | space | Personal | + | sharee | group1 | + | shareType | group | + | permissionsRole | Editor | When user "Brian" uploads file "filesForUpload/filesWithVirus/" to "/Shares/uploadFolder/" using the WebDAV API Then the HTTP status code should be "201" And user "Brian" should get a notification with subject "Virus found" and message: @@ -203,7 +219,12 @@ Feature: antivirus And group "group1" has been created And user "Brian" has been added to group "group1" And user "Alice" has created folder "uploadFolder" - And user "Alice" has shared folder "uploadFolder" with group "group1" + And user "Alice" has sent the following share invitation: + | resource | uploadFolder | + | space | Personal | + | sharee | group1 | + | shareType | group | + | permissionsRole | Editor | When user "Brian" uploads a file "filesForUpload/filesWithVirus/" to "/uploadFolder/" in space "Shares" using the WebDAV API Then the HTTP status code should be "201" And user "Brian" should get a notification with subject "Virus found" and message: @@ -247,9 +268,11 @@ Feature: antivirus And user "Brian" has been created with default attributes and without skeleton files And the administrator has assigned the role "Space Admin" to user "Alice" using the Graph API And user "Alice" has created a space "new-space" with the default quota using the Graph API - And user "Alice" has shared a space "new-space" with settings: - | shareWith | Brian | - | role | editor | + And user "Alice" has sent the following share invitation: + | space | new-space | + | sharee | Brian | + | shareType | user | + | permissionsRole | Space Editor | When user "Brian" uploads a file "/filesForUpload/filesWithVirus/" to "/" in space "new-space" using the WebDAV API Then the HTTP status code should be "201" And user "Brian" should get a notification with subject "Virus found" and message: @@ -351,11 +374,12 @@ Feature: antivirus Scenario Outline: try to overwrite a file with the virus content in a public link share Given the config "OCIS_SHARING_PUBLIC_SHARE_MUST_HAVE_PASSWORD" has been set to "false" And using DAV path + And using SharingNG And user "Alice" has uploaded file with content "hello" to "test.txt" - And user "Alice" has created a public link share with settings - | path | /test.txt | - | name | sharedlink | - | permissions | change | + And user "Alice" has created the following link share: + | resource | test.txt | + | space | Personal | + | permissionsRole | edit | When the public overwrites file "test.txt" with content "X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*" using the new WebDAV API Then the HTTP status code should be "204" And user "Alice" should get a notification with subject "Virus found" and message: @@ -376,7 +400,12 @@ Feature: antivirus And user "Brian" has been added to group "group1" And user "Alice" has been added to group "group1" And user "Alice" has uploaded file with content "hello" to "/test.txt" - And user "Alice" has shared file "test.txt" with group "group1" + And user "Alice" has sent the following share invitation: + | resource | test.txt | + | space | Personal | + | sharee | group1 | + | shareType | group | + | permissionsRole | File Editor | When user "Brian" uploads file with content "X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*" to "test.txt" using the WebDAV API Then the HTTP status code should be "201" And user "Brian" should get a notification with subject "Virus found" and message: @@ -397,7 +426,12 @@ Feature: antivirus And user "Brian" has been added to group "group1" And user "Alice" has been added to group "group1" And user "Alice" has uploaded file with content "hello" to "/test.txt" - And user "Alice" has shared file "test.txt" with group "group1" + And user "Alice" has sent the following share invitation: + | resource | test.txt | + | space | Personal | + | sharee | group1 | + | shareType | group | + | permissionsRole | File Editor | When user "Brian" uploads a file "filesForUpload/filesWithVirus/eicar.com" to "/test.txt" in space "Shares" using the WebDAV API Then the HTTP status code should be "204" And user "Brian" should get a notification with subject "Virus found" and message: @@ -412,9 +446,19 @@ Feature: antivirus And user "Brian" has been created with default attributes and without skeleton files And user "Alice" has created folder "uploadFolder" And user "Alice" has uploaded file with content "this is a test file." to "uploadFolder/test.txt" - And user "Alice" has shared folder "uploadFolder" with user "Brian" with permissions "all" + And user "Alice" has sent the following share invitation: + | resource | uploadFolder | + | space | Personal | + | sharee | Brian | + | shareType | user | + | permissionsRole | Editor | And user "Alice" has uploaded file with content "this is a test file." to "/test.txt" - And user "Alice" has shared file "/test.txt" with user "Brian" + And user "Alice" has sent the following share invitation: + | resource | test.txt | + | space | Personal | + | sharee | Brian | + | shareType | user | + | permissionsRole | File Editor | When user "Brian" uploads file with content "X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*" to "Shares/uploadFolder/test.txt" using the WebDAV API Then the HTTP status code should be "204" And user "Brian" should get a notification for resource "test.txt" with subject "Virus found" and message: @@ -440,7 +484,12 @@ Feature: antivirus And user "Brian" has been created with default attributes and without skeleton files And user "Alice" has created folder "uploadFolder" And user "Alice" has uploaded file with content "this is a test file." to "uploadFolder/test.txt" - And user "Alice" has shared folder "uploadFolder" with user "Brian" with permissions "all" + And user "Alice" has sent the following share invitation: + | resource | uploadFolder | + | space | Personal | + | sharee | Brian | + | shareType | user | + | permissionsRole | Editor | And user "Alice" has uploaded file with content "this is a test file." to "/test.txt" And user "Alice" has shared file "/test.txt" with user "Brian" When user "Brian" uploads a file "filesForUpload/filesWithVirus/eicar.com" to "/uploadFolder/test.txt" in space "Shares" using the WebDAV API @@ -478,9 +527,11 @@ Feature: antivirus And the administrator has assigned the role "Space Admin" to user "Alice" using the Graph API And user "Brian" has been created with default attributes and without skeleton files And user "Alice" has created a space "new-space" with the default quota using the Graph API - And user "Alice" has shared a space "new-space" with settings: - | shareWith | Brian | - | role | editor | + And user "Alice" has sent the following share invitation: + | space | new-space | + | sharee | Brian | + | shareType | user | + | permissionsRole | Space Editor | And user "Alice" has created a folder ".space" in space "new-space" And user "Alice" has uploaded a file inside space "new-space" with content "Here you can add a description for this Space." to ".space/readme.md" And user "Alice" has set the file ".space/readme.md" as a description in a special section of the "new-space" space @@ -498,9 +549,11 @@ Feature: antivirus And the administrator has assigned the role "Space Admin" to user "Alice" using the Graph API And user "Brian" has been created with default attributes and without skeleton files And user "Alice" has created a space "new-space" with the default quota using the Graph API - And user "Alice" has shared a space "new-space" with settings: - | shareWith | Brian | - | role | editor | + And user "Alice" has sent the following share invitation: + | space | new-space | + | sharee | Brian | + | shareType | user | + | permissionsRole | Space Editor | And user "Alice" has uploaded a file inside space "new-space" with content "hello world" to "text.txt" When user "Brian" uploads a file "filesForUpload/filesWithVirus/eicar.com" to "text.txt" in space "new-space" using the WebDAV API Then the HTTP status code should be "204" diff --git a/tests/acceptance/features/bootstrap/FeatureContext.php b/tests/acceptance/features/bootstrap/FeatureContext.php index 22f157d92e..5461dfa59f 100644 --- a/tests/acceptance/features/bootstrap/FeatureContext.php +++ b/tests/acceptance/features/bootstrap/FeatureContext.php @@ -185,6 +185,15 @@ class FeatureContext extends BehatVariablesContext { private bool $dbConversion = false; public const SHARES_SPACE_ID = 'a0ca6a90-a365-4782-871e-d44447bbc668$a0ca6a90-a365-4782-871e-d44447bbc668'; + private bool $useSharingNG = false; + + /** + * @return bool + */ + public function isUsingSharingNG(): bool { + return $this->useSharingNG; + } + /** * @param bool $value * @@ -1009,6 +1018,15 @@ class FeatureContext extends BehatVariablesContext { ); } + /** + * @Given using SharingNG + * + * @return void + */ + public function usingSharingNG(): void { + $this->useSharingNG = true; + } + /** * @Given /^using OCS API version "([^"]*)"$/ * diff --git a/tests/acceptance/features/bootstrap/PublicWebDavContext.php b/tests/acceptance/features/bootstrap/PublicWebDavContext.php index b6a3e04063..49297dd7b8 100644 --- a/tests/acceptance/features/bootstrap/PublicWebDavContext.php +++ b/tests/acceptance/features/bootstrap/PublicWebDavContext.php @@ -1506,6 +1506,65 @@ class PublicWebDavContext implements Context { } } + /** + * @When the public uploads file :source to :destination inside last link shared folder using the :new WebDAV API + * + * @param string $source + * @param string $destination + * @param string $publicWebDAVAPIVersion + * + * @return void + */ + public function thePublicUploadsFileToInsideLastLinkSharedFolderUsingTheNewWebdavApi( + string $source, + string $destination, + string $publicWebDAVAPIVersion + ):void { + $content = \file_get_contents( + $this->featureContext->acceptanceTestsDirLocation() . $source + ); + $response = $this->publicUploadContent( + $destination, + '', + $content, + false, + [], + $publicWebDAVAPIVersion + ); + $this->featureContext->setResponse($response); + } + + /** + * + * @When the public uploads file :source to :destination inside last link shared folder with password :password using the :new WebDAV API + * + * @param string $source + * @param string $destination + * @param string $password + * @param string $publicWebDAVAPIVersion + * + * @return void + */ + public function thePublicUploadsFileToInsideLastLinkSharedFolderWithPasswordUsingTheNewWebdavApi( + string $source, + string $destination, + string $password, + string $publicWebDAVAPIVersion + ):void { + $content = \file_get_contents( + $this->featureContext->acceptanceTestsDirLocation() . $source + ); + $response = $this->publicUploadContent( + $destination, + $password, + $content, + false, + [], + $publicWebDAVAPIVersion + ); + $this->featureContext->setResponse($response); + } + /** * @When the public uploads file :fileName to the last public link shared folder with password :password with mtime :mtime using the :davVersion public WebDAV API * @@ -1704,7 +1763,11 @@ class PublicWebDavContext implements Context { return null; } $password = $this->featureContext->getActualPassword($password); - $token = $this->featureContext->getLastCreatedPublicShareToken(); + if ($this->featureContext->isUsingSharingNG()) { + $token = $this->featureContext->shareNgGetLastCreatedLinkShareToken(); + } else { + $token = $this->featureContext->getLastCreatedPublicShareToken(); + } $davPath = WebDavHelper::getDavPath( $token, 0,