From 07d3ff7dfb92b27ac0a74604d76f3c3dd3a51317 Mon Sep 17 00:00:00 2001 From: Phil Davis Date: Wed, 21 Dec 2022 11:19:44 +0545 Subject: [PATCH] Refactor theResponseShouldContain test step --- .../features/apiContract/propfind.feature | 2 +- .../features/apiContract/report.feature | 4 +- .../features/bootstrap/SpacesContext.php | 49 +++++++++++++++---- 3 files changed, 43 insertions(+), 12 deletions(-) diff --git a/tests/acceptance/features/apiContract/propfind.feature b/tests/acceptance/features/apiContract/propfind.feature index 53e063a720..ff1ccbf4eb 100644 --- a/tests/acceptance/features/apiContract/propfind.feature +++ b/tests/acceptance/features/apiContract/propfind.feature @@ -15,7 +15,7 @@ Feature: Propfind test Given user "Alice" has uploaded a file inside space "new-space" with content "some content" to "testfile.txt" When user "Alice" sends PROPFIND request to space "new-space" using the WebDAV API Then the HTTP status code should be "207" - And for user "Alice" the "PROPFIND" response should contain a space "new-space" with these key and value pairs: + And the "PROPFIND" response should contain a space "new-space" with these key and value pairs: | key | value | | oc:fileid | UUIDof:new-space | | oc:name | new-space | diff --git a/tests/acceptance/features/apiContract/report.feature b/tests/acceptance/features/apiContract/report.feature index 9912598956..48fe1bef5f 100644 --- a/tests/acceptance/features/apiContract/report.feature +++ b/tests/acceptance/features/apiContract/report.feature @@ -23,7 +23,7 @@ Feature: Report test And user "Brian" has accepted share "/folderMain" offered by user "Alice" When user "Brian" searches for "SubFolder1" using the WebDAV API Then the HTTP status code should be "207" - And for user "Brian" the "REPORT" response should contain a mountpoint "folderMain" with these key and value pairs: + And the "REPORT" response to user "Brian" should contain a mountpoint "folderMain" with these key and value pairs: | key | value | | oc:fileid | UUIDof:SubFolder1 | | oc:file-parent | UUIDof:folderMain | @@ -39,7 +39,7 @@ Feature: Report test And user "Brian" has accepted share "/folderMain" offered by user "Alice" When user "Brian" searches for "insideTheFolder.txt" using the WebDAV API Then the HTTP status code should be "207" - And for user "Brian" the "REPORT" response should contain a mountpoint "folderMain" with these key and value pairs: + And the "REPORT" response to user "Brian" should contain a mountpoint "folderMain" with these key and value pairs: | key | value | | oc:fileid | UUIDof:SubFolder1/subFOLDER2/insideTheFolder.txt | | oc:file-parent | UUIDof:SubFolder1/subFOLDER2 | diff --git a/tests/acceptance/features/bootstrap/SpacesContext.php b/tests/acceptance/features/bootstrap/SpacesContext.php index f40fb43aca..02ca076d5f 100644 --- a/tests/acceptance/features/bootstrap/SpacesContext.php +++ b/tests/acceptance/features/bootstrap/SpacesContext.php @@ -1505,6 +1505,7 @@ class SpacesContext implements Context { $body ) ); + $this->setSpaceCreator($spaceName, $user); $this->featureContext->theHTTPStatusCodeShouldBe( 201, "Expected response status code should be 201 (Created)" @@ -2965,9 +2966,8 @@ class SpacesContext implements Context { } /** - * @Then /^for user "([^"]*)" the "([^"]*)" response should contain a (?:space|mountpoint) "([^"]*)" with these key and value pairs:$/ + * @Then /^the "([^"]*)" response should contain a space "([^"]*)" with these key and value pairs:$/ * - * @param string $user * @param string $method # method should be either PROPFIND or REPORT * @param string $space * @param TableNode $table @@ -2976,8 +2976,39 @@ class SpacesContext implements Context { * @throws GuzzleException * @throws JsonException */ - public function theResponseShouldContain(string $user, string $method, string $space, TableNode $table): void { + public function theResponseShouldContainSpace(string $method, string $space, TableNode $table): void { $this->featureContext->verifyTableNodeColumns($table, ['key', 'value']); + $this->theResponseShouldContain($method, $this->getSpaceCreator($space), $space, $table); + } + + /** + * @Then /^the "([^"]*)" response to user "([^"]*)" should contain a mountpoint "([^"]*)" with these key and value pairs:$/ + * + * @param string $method # method should be either PROPFIND or REPORT + * @param string $user + * @param string $mountPoint + * @param TableNode $table + * + * @return void + * @throws GuzzleException + * @throws JsonException + */ + public function theResponseShouldContainMountPoint(string $method, string $user, string $mountPoint, TableNode $table): void { + $this->featureContext->verifyTableNodeColumns($table, ['key', 'value']); + $this->theResponseShouldContain($method, $user, $mountPoint, $table); + } + + /** + * @param string $method # method should be either PROPFIND or REPORT + * @param string $user + * @param string $mountPoint # an entity inside a space, or the space itself + * @param TableNode $table + * + * @return void + * @throws GuzzleException + * @throws JsonException + */ + public function theResponseShouldContain(string $method, string $user, string $mountPoint, TableNode $table): void { $xmlRes = $this->featureContext->getResponseXml(); foreach ($table->getHash() as $row) { $findItem = $row['key']; @@ -2989,23 +3020,23 @@ class SpacesContext implements Context { $resourceType = $xmlRes->xpath("//d:response/d:propstat/d:prop/d:getcontenttype")[0]->__toString(); if ($method === 'PROPFIND') { if (!$resourceType) { - Assert::assertEquals($this->getFolderId($user, $space, $value), $responseValue, 'wrong fileId in the response'); + Assert::assertEquals($this->getFolderId($user, $mountPoint, $value), $responseValue, 'wrong fileId in the response'); } else { - Assert::assertEquals($this->getFileId($user, $space, $value), $responseValue, 'wrong fileId in the response'); + Assert::assertEquals($this->getFileId($user, $mountPoint, $value), $responseValue, 'wrong fileId in the response'); } } else { if ($resourceType === 'httpd/unix-directory') { - Assert::assertEquals($this->getFolderId($user, $space, $value), $responseValue, 'wrong fileId in the response'); + Assert::assertEquals($this->getFolderId($user, $mountPoint, $value), $responseValue, 'wrong fileId in the response'); } else { - Assert::assertEquals($this->getFileId($user, $space, $value), $responseValue, 'wrong fileId in the response'); + Assert::assertEquals($this->getFileId($user, $mountPoint, $value), $responseValue, 'wrong fileId in the response'); } } break; case "oc:file-parent": - Assert::assertEquals($this->getFolderId($user, $space, $value), $responseValue, 'wrong file-parentId in the response'); + Assert::assertEquals($this->getFolderId($user, $mountPoint, $value), $responseValue, 'wrong file-parentId in the response'); break; case "oc:privatelink": - Assert::assertEquals($this->getPrivateLink($user, $space), $responseValue, 'cannot find private link for space or resource in the response'); + Assert::assertEquals($this->getPrivateLink($user, $mountPoint), $responseValue, 'cannot find private link for space or resource in the response'); break; default: Assert::assertEquals($value, $responseValue, "wrong $findItem in the response");