diff options
author | Joas Schilling <nickvergessen@owncloud.com> | 2016-03-15 14:53:16 +0100 |
---|---|---|
committer | Joas Schilling <nickvergessen@owncloud.com> | 2016-03-15 14:53:16 +0100 |
commit | cb56dfec6be42b46bb57c65eb2af8e005d60d8d6 (patch) | |
tree | 03b519f1626785157a0f8866c5f2e2765eef281a /build/integration/features | |
parent | c4b0a1cdfd8d2c4961f1049b424c7655aef3a55e (diff) | |
download | nextcloud-server-cb56dfec6be42b46bb57c65eb2af8e005d60d8d6.tar.gz nextcloud-server-cb56dfec6be42b46bb57c65eb2af8e005d60d8d6.zip |
Split the context so we don't reset the config on each test
Diffstat (limited to 'build/integration/features')
-rw-r--r-- | build/integration/features/bootstrap/ShareesContext.php | 72 | ||||
-rw-r--r-- | build/integration/features/bootstrap/Sharing.php | 57 | ||||
-rw-r--r-- | build/integration/features/sharees.feature | 224 |
3 files changed, 72 insertions, 281 deletions
diff --git a/build/integration/features/bootstrap/ShareesContext.php b/build/integration/features/bootstrap/ShareesContext.php new file mode 100644 index 00000000000..de50eeb2beb --- /dev/null +++ b/build/integration/features/bootstrap/ShareesContext.php @@ -0,0 +1,72 @@ +<?php + +use Behat\Behat\Context\Context; +use Behat\Behat\Context\SnippetAcceptingContext; +use GuzzleHttp\Message\ResponseInterface; + +require __DIR__ . '/../../vendor/autoload.php'; + + +/** + * Features context. + */ +class ShareesContext implements Context, SnippetAcceptingContext { + use Provisioning; + use AppConfiguration; + + /** + * @When /^getting sharees for$/ + * @param \Behat\Gherkin\Node\TableNode $body + */ + public function whenGettingShareesFor($body) { + $url = '/apps/files_sharing/api/v1/sharees'; + if ($body instanceof \Behat\Gherkin\Node\TableNode) { + $parameters = []; + foreach ($body->getRowsHash() as $key => $value) { + $parameters[] = $key . '=' . $value; + } + if (!empty($parameters)) { + $url .= '?' . implode('&', $parameters); + } + } + + $this->sendingTo('GET', $url); + } + + /** + * @Then /^"([^"]*)" sharees returned (are|is empty)$/ + * @param string $shareeType + * @param string $isEmpty + * @param \Behat\Gherkin\Node\TableNode|null $shareesList + */ + public function thenListOfSharees($shareeType, $isEmpty, $shareesList = null) { + if ($isEmpty !== 'is empty') { + $sharees = $shareesList->getRows(); + $respondedArray = $this->getArrayOfShareesResponded($this->response, $shareeType); + PHPUnit_Framework_Assert::assertEquals($sharees, $respondedArray); + } else { + $respondedArray = $this->getArrayOfShareesResponded($this->response, $shareeType); + PHPUnit_Framework_Assert::assertEmpty($respondedArray); + } + } + + public function getArrayOfShareesResponded(ResponseInterface $response, $shareeType) { + $elements = $response->xml()->data; + $elements = json_decode(json_encode($elements), 1); + if (strpos($shareeType, 'exact ') === 0) { + $elements = $elements['exact']; + $shareeType = substr($shareeType, 6); + } + + $sharees = []; + foreach ($elements[$shareeType] as $element) { + $sharees[] = [$element['label'], $element['value']['shareType'], $element['value']['shareWith']]; + } + return $sharees; + } + + protected function resetAppConfigs() { + $this->modifyServerConfig('core', 'shareapi_only_share_with_group_members', 'no'); + $this->modifyServerConfig('core', 'shareapi_allow_share_dialog_user_enumeration', 'yes'); + } +} diff --git a/build/integration/features/bootstrap/Sharing.php b/build/integration/features/bootstrap/Sharing.php index f81442c9769..d423a28f196 100644 --- a/build/integration/features/bootstrap/Sharing.php +++ b/build/integration/features/bootstrap/Sharing.php @@ -9,7 +9,6 @@ require __DIR__ . '/../../vendor/autoload.php'; trait Sharing { use Provisioning; - use AppConfiguration; /** @var int */ private $sharingApiVersion = 1; @@ -470,61 +469,5 @@ trait Sharing { throw new \Exception('Expected the same link share to be returned'); } } - - /** - * @When /^getting sharees for$/ - * @param \Behat\Gherkin\Node\TableNode $body - */ - public function whenGettingShareesFor($body) { - $url = '/apps/files_sharing/api/v1/sharees'; - if ($body instanceof \Behat\Gherkin\Node\TableNode) { - $parameters = []; - foreach ($body->getRowsHash() as $key => $value) { - $parameters[] = $key . '=' . $value; - } - if (!empty($parameters)) { - $url .= '?' . implode('&', $parameters); - } - } - - $this->sendingTo('GET', $url); - } - - /** - * @Then /^"([^"]*)" sharees returned (are|is empty)$/ - * @param string $shareeType - * @param string $isEmpty - * @param \Behat\Gherkin\Node\TableNode|null $shareesList - */ - public function thenListOfSharees($shareeType, $isEmpty, $shareesList = null) { - if ($isEmpty !== 'is empty') { - $sharees = $shareesList->getRows(); - $respondedArray = $this->getArrayOfShareesResponded($this->response, $shareeType); - PHPUnit_Framework_Assert::assertEquals($sharees, $respondedArray); - } else { - $respondedArray = $this->getArrayOfShareesResponded($this->response, $shareeType); - PHPUnit_Framework_Assert::assertEmpty($respondedArray); - } - } - - public function getArrayOfShareesResponded(ResponseInterface $response, $shareeType) { - $elements = $response->xml()->data; - $elements = json_decode(json_encode($elements), 1); - if (strpos($shareeType, 'exact ') === 0) { - $elements = $elements['exact']; - $shareeType = substr($shareeType, 6); - } - - $sharees = []; - foreach ($elements[$shareeType] as $element) { - $sharees[] = [$element['label'], $element['value']['shareType'], $element['value']['shareWith']]; - } - return $sharees; - } - - protected function resetAppConfigs() { - $this->modifyServerConfig('core', 'shareapi_only_share_with_group_members', 'no'); - $this->modifyServerConfig('core', 'shareapi_allow_share_dialog_user_enumeration', 'yes'); - } } diff --git a/build/integration/features/sharees.feature b/build/integration/features/sharees.feature deleted file mode 100644 index 5765b937a67..00000000000 --- a/build/integration/features/sharees.feature +++ /dev/null @@ -1,224 +0,0 @@ -Feature: sharees - Background: - Given using api version "1" - And user "test" exists - And user "Sharee1" exists - And group "ShareeGroup" exists - And user "test" belongs to group "ShareeGroup" - - Scenario: Search without exact match - Given As an "test" - When getting sharees for - | search | Sharee | - | itemType | file | - Then the OCS status code should be "100" - And the HTTP status code should be "200" - And "exact users" sharees returned is empty - And "users" sharees returned are - | Sharee1 | 0 | Sharee1 | - And "exact groups" sharees returned is empty - And "groups" sharees returned are - | ShareeGroup | 1 | ShareeGroup | - And "exact remotes" sharees returned is empty - And "remotes" sharees returned is empty - - Scenario: Search without exact match not-exact casing - Given As an "test" - When getting sharees for - | search | sharee | - | itemType | file | - Then the OCS status code should be "100" - And the HTTP status code should be "200" - And "exact users" sharees returned is empty - And "users" sharees returned are - | Sharee1 | 0 | Sharee1 | - And "exact groups" sharees returned is empty - And "groups" sharees returned are - | ShareeGroup | 1 | ShareeGroup | - And "exact remotes" sharees returned is empty - And "remotes" sharees returned is empty - - Scenario: Search only with group members - denied - Given As an "test" - And parameter "shareapi_only_share_with_group_members" of app "core" is set to "yes" - When getting sharees for - | search | sharee | - | itemType | file | - Then the OCS status code should be "100" - And the HTTP status code should be "200" - And "exact users" sharees returned is empty - And "users" sharees returned is empty - And "exact groups" sharees returned is empty - And "groups" sharees returned are - | ShareeGroup | 1 | ShareeGroup | - And "exact remotes" sharees returned is empty - And "remotes" sharees returned is empty - - Scenario: Search only with group members - allowed - Given As an "test" - And parameter "shareapi_only_share_with_group_members" of app "core" is set to "yes" - And user "Sharee1" belongs to group "ShareeGroup" - When getting sharees for - | search | sharee | - | itemType | file | - Then the OCS status code should be "100" - And the HTTP status code should be "200" - And "exact users" sharees returned is empty - And "users" sharees returned are - | Sharee1 | 0 | Sharee1 | - And "exact groups" sharees returned is empty - And "groups" sharees returned are - | ShareeGroup | 1 | ShareeGroup | - And "exact remotes" sharees returned is empty - And "remotes" sharees returned is empty - - Scenario: Search only with group members - no group as non-member - Given As an "Sharee1" - And parameter "shareapi_only_share_with_group_members" of app "core" is set to "yes" - When getting sharees for - | search | sharee | - | itemType | file | - Then the OCS status code should be "100" - And the HTTP status code should be "200" - And "exact users" sharees returned is empty - And "users" sharees returned is empty - And "exact groups" sharees returned is empty - And "groups" sharees returned is empty - And "exact remotes" sharees returned is empty - And "remotes" sharees returned is empty - - Scenario: Search without exact match no iteration allowed - Given As an "test" - And parameter "shareapi_allow_share_dialog_user_enumeration" of app "core" is set to "no" - When getting sharees for - | search | Sharee | - | itemType | file | - Then the OCS status code should be "100" - And the HTTP status code should be "200" - And "exact users" sharees returned is empty - And "users" sharees returned is empty - And "exact groups" sharees returned is empty - And "groups" sharees returned is empty - And "exact remotes" sharees returned is empty - And "remotes" sharees returned is empty - - Scenario: Search with exact match no iteration allowed - Given As an "test" - And parameter "shareapi_allow_share_dialog_user_enumeration" of app "core" is set to "no" - When getting sharees for - | search | Sharee1 | - | itemType | file | - Then the OCS status code should be "100" - And the HTTP status code should be "200" - And "exact users" sharees returned are - | Sharee1 | 0 | Sharee1 | - And "users" sharees returned is empty - And "exact groups" sharees returned is empty - And "groups" sharees returned is empty - And "exact remotes" sharees returned is empty - And "remotes" sharees returned is empty - - Scenario: Search with exact match group no iteration allowed - Given As an "test" - And parameter "shareapi_allow_share_dialog_user_enumeration" of app "core" is set to "no" - When getting sharees for - | search | ShareeGroup | - | itemType | file | - Then the OCS status code should be "100" - And the HTTP status code should be "200" - And "exact users" sharees returned is empty - And "users" sharees returned is empty - And "exact groups" sharees returned are - | ShareeGroup | 1 | ShareeGroup | - And "groups" sharees returned is empty - And "exact remotes" sharees returned is empty - And "remotes" sharees returned is empty - - Scenario: Search with exact match - Given As an "test" - When getting sharees for - | search | Sharee1 | - | itemType | file | - Then the OCS status code should be "100" - And the HTTP status code should be "200" - Then "exact users" sharees returned are - | Sharee1 | 0 | Sharee1 | - Then "users" sharees returned is empty - Then "exact groups" sharees returned is empty - Then "groups" sharees returned is empty - Then "exact remotes" sharees returned is empty - Then "remotes" sharees returned is empty - - Scenario: Search with exact match not-exact casing - Given As an "test" - When getting sharees for - | search | sharee1 | - | itemType | file | - Then the OCS status code should be "100" - And the HTTP status code should be "200" - Then "exact users" sharees returned are - | Sharee1 | 0 | Sharee1 | - Then "users" sharees returned is empty - Then "exact groups" sharees returned is empty - Then "groups" sharees returned is empty - Then "exact remotes" sharees returned is empty - Then "remotes" sharees returned is empty - - Scenario: Search with exact match not-exact casing group - Given As an "test" - When getting sharees for - | search | shareegroup | - | itemType | file | - Then the OCS status code should be "100" - And the HTTP status code should be "200" - Then "exact users" sharees returned is empty - Then "users" sharees returned is empty - Then "exact groups" sharees returned are - | ShareeGroup | 1 | ShareeGroup | - Then "groups" sharees returned is empty - Then "exact remotes" sharees returned is empty - Then "remotes" sharees returned is empty - - Scenario: Search with "self" - Given As an "Sharee1" - When getting sharees for - | search | Sharee1 | - | itemType | file | - Then the OCS status code should be "100" - And the HTTP status code should be "200" - Then "exact users" sharees returned are - | Sharee1 | 0 | Sharee1 | - Then "users" sharees returned is empty - Then "exact groups" sharees returned is empty - Then "groups" sharees returned is empty - Then "exact remotes" sharees returned is empty - Then "remotes" sharees returned is empty - - Scenario: Remote sharee for files - Given As an "test" - When getting sharees for - | search | test@localhost | - | itemType | file | - Then the OCS status code should be "100" - And the HTTP status code should be "200" - Then "exact users" sharees returned is empty - Then "users" sharees returned is empty - Then "exact groups" sharees returned is empty - Then "groups" sharees returned is empty - Then "exact remotes" sharees returned are - | test@localhost | 6 | test@localhost | - Then "remotes" sharees returned is empty - - Scenario: Remote sharee for calendars not allowed - Given As an "test" - When getting sharees for - | search | test@localhost | - | itemType | calendar | - Then the OCS status code should be "100" - And the HTTP status code should be "200" - Then "exact users" sharees returned is empty - Then "users" sharees returned is empty - Then "exact groups" sharees returned is empty - Then "groups" sharees returned is empty - Then "exact remotes" sharees returned is empty - Then "remotes" sharees returned is empty |