diff options
author | Sergio Bertolin <sbertolin@solidgear.es> | 2015-11-18 11:09:34 +0000 |
---|---|---|
committer | Sergio Bertolin <sbertolin@solidgear.es> | 2015-11-19 12:45:12 +0000 |
commit | a990e0ac1d5a50618ed976e3354e47e443277de9 (patch) | |
tree | 2e3d5ec9d452657ff67bea67a9bb30210f4e43c5 /build/integration | |
parent | 58eaeb267c60ed2aed4b5592a28d16f5453bb773 (diff) | |
download | nextcloud-server-a990e0ac1d5a50618ed976e3354e47e443277de9.tar.gz nextcloud-server-a990e0ac1d5a50618ed976e3354e47e443277de9.zip |
Added some requirements for first test case
Diffstat (limited to 'build/integration')
-rw-r--r-- | build/integration/features/bootstrap/FeatureContext.php | 108 | ||||
-rw-r--r-- | build/integration/features/sharing-v1.feature | 30 | ||||
-rw-r--r-- | build/integration/features/webdav-related.feature | 20 |
3 files changed, 150 insertions, 8 deletions
diff --git a/build/integration/features/bootstrap/FeatureContext.php b/build/integration/features/bootstrap/FeatureContext.php index 3d579f52810..7176a19064a 100644 --- a/build/integration/features/bootstrap/FeatureContext.php +++ b/build/integration/features/bootstrap/FeatureContext.php @@ -238,8 +238,23 @@ class FeatureContext implements Context, SnippetAcceptingContext { } /** - * @Given /^user "([^"]*)" belongs to group "([^"]*)"$/ + * @Then /^check that user "([^"]*)" belongs to group "([^"]*)"$/ */ + public function checkThatUserBelongsToGroup($user, $group) { + $fullUrl = $this->baseUrl . "v2.php/cloud/users/$user/groups"; + $client = new Client(); + $options = []; + if ($this->currentUser === 'admin') { + $options['auth'] = $this->adminUser; + } + + $this->response = $client->get($fullUrl, $options); + $respondedArray = $this->getArrayOfGroupsResponded($this->response); + sort($respondedArray); + PHPUnit_Framework_Assert::assertContains($group, $respondedArray); + PHPUnit_Framework_Assert::assertEquals(200, $this->response->getStatusCode()); + } + public function userBelongsToGroup($user, $group) { $fullUrl = $this->baseUrl . "v2.php/cloud/users/$user/groups"; $client = new Client(); @@ -251,8 +266,26 @@ class FeatureContext implements Context, SnippetAcceptingContext { $this->response = $client->get($fullUrl, $options); $groups = array($group); $respondedArray = $this->getArrayOfGroupsResponded($this->response); - PHPUnit_Framework_Assert::assertEquals($groups, $respondedArray, "", 0.0, 10, true); - PHPUnit_Framework_Assert::assertEquals(200, $this->response->getStatusCode()); + + if (array_key_exists($group, $respondedArray)) { + return True; + } else{ + return False; + } + } + + /** + * @Given /^user "([^"]*)" belongs to group "([^"]*)"$/ + */ + public function assureUserBelongsToGroup($user, $group){ + if (!$this->userBelongsToGroup($user, $group)){ + $previous_user = $this->currentUser; + $this->currentUser = "admin"; + $this->addingUserToGroup($user, $group); + $this->currentUser = $previous_user; + } + $this->checkThatUserBelongsToGroup($user, $group); + } /** @@ -818,10 +851,10 @@ class FeatureContext implements Context, SnippetAcceptingContext { PHPUnit_Framework_Assert::assertEquals(False, $this->isFieldInResponse('share_with', "$user")); } - public function isUserInSharedData($user){ + public function isUserOrGroupInSharedData($userOrGroup){ $data = $this->response->xml()->data[0]; foreach($data as $element) { - if ($element->share_with == $user){ + if ($element->share_with == $userOrGroup){ return True; } } @@ -841,13 +874,70 @@ class FeatureContext implements Context, SnippetAcceptingContext { $options['auth'] = [$user1, $this->regularUser]; } $this->response = $client->get($fullUrl, $options); - if ($this->isUserInSharedData($user2)){ + if ($this->isUserOrGroupInSharedData($user2)){ return; } else { $this->createShare($user1, $filepath, 0, $user2, null, null, null); } $this->response = $client->get($fullUrl, $options); - PHPUnit_Framework_Assert::assertEquals(True, $this->isUserInSharedData($user2)); + PHPUnit_Framework_Assert::assertEquals(True, $this->isUserOrGroupInSharedData($user2)); + } + + /** + * @Given /^file "([^"]*)" from user "([^"]*)" is shared with group "([^"]*)"$/ + */ + public function assureFileIsSharedWithGroup($filepath, $user, $group){ + $fullUrl = $this->baseUrl . "v{$this->apiVersion}.php/apps/files_sharing/api/v{$this->sharingApiVersion}/shares" . "?path=$filepath"; + $client = new Client(); + $options = []; + if ($user === 'admin') { + $options['auth'] = $this->adminUser; + } else { + $options['auth'] = [$user, $this->regularUser]; + } + $this->response = $client->get($fullUrl, $options); + if ($this->isUserOrGroupInSharedData($group)){ + return; + } else { + $this->createShare($user, $filepath, 1, $group, null, null, null); + } + $this->response = $client->get($fullUrl, $options); + PHPUnit_Framework_Assert::assertEquals(True, $this->isUserOrGroupInSharedData($group)); + } + + public function makeDavRequest($user, $method, $path, $headers){ + $fullUrl = substr($this->baseUrl, 0, -4) . "remote.php/webdav" . "$path"; + $client = new Client(); + $options = []; + if ($user === 'admin') { + $options['auth'] = $this->adminUser; + } else { + $options['auth'] = [$user, $this->regularUser]; + } + $request = $client->createRequest($method, $fullUrl, $options); + foreach ($headers as $key => $value) { + $request->addHeader($key, $value); + } + $this->response = $client->send($request); + } + + /** + * @Given /^User "([^"]*)" moved file "([^"]*)" to "([^"]*)"$/ + */ + public function userMovedFile($user, $fileSource, $fileDestination){ + $fullUrl = substr($this->baseUrl, 0, -4) . "remote.php/webdav"; + $headers['Destination'] = $fullUrl . $fileDestination; + $this->makeDavRequest($user, "MOVE", $fileSource, $headers); + PHPUnit_Framework_Assert::assertEquals(201, $this->response->getStatusCode()); + } + + /** + * @When /^User "([^"]*)" moves file "([^"]*)" to "([^"]*)"$/ + */ + public function userMovesFile($user, $fileSource, $fileDestination){ + $fullUrl = substr($this->baseUrl, 0, -4) . "remote.php/webdav"; + $headers['Destination'] = $fullUrl . $fileDestination; + $this->makeDavRequest($user, "MOVE", $fileSource, $headers); } /** @@ -877,7 +967,9 @@ class FeatureContext implements Context, SnippetAcceptingContext { $fd = $body->getRowsHash(); foreach($fd as $field => $value) { - PHPUnit_Framework_Assert::assertEquals(True, $this->isFieldInResponse($field, $value)); + if (!$this->isFieldInResponse($field, $value)){ + PHPUnit_Framework_Assert::fail("$field" . " doesn't have value " . "$value"); + } } } } diff --git a/build/integration/features/sharing-v1.feature b/build/integration/features/sharing-v1.feature index 07c05af2f54..aceff1de1a3 100644 --- a/build/integration/features/sharing-v1.feature +++ b/build/integration/features/sharing-v1.feature @@ -272,6 +272,36 @@ Feature: sharing | share_with_displayname | user1 | | displayname_owner | user0 | + Scenario: keep group permissions in sync + Given As an "admin" + Given user "user0" exists + And user "user1" exists + And group "group1" exists + And user "user1" belongs to group "group1" + And file "textfile0.txt" from user "user0" is shared with group "group1" + And User "user1" moved file "/textfile0.txt" to "/FOLDER/textfile0.txt" + And As an "user0" + When Updating last share with + | permissions | 1 | + And Getting info of last share + Then the OCS status code should be "100" + And the HTTP status code should be "200" + And Share fields of last share match with + | id | A_NUMBER | + | item_type | file | + | item_source | A_NUMBER | + | share_type | 1 | + | file_source | A_NUMBER | + | file_target | /textfile0.txt | + | permissions | 1 | + | stime | A_NUMBER | + | storage | A_NUMBER | + | mail_send | 0 | + | uid_owner | user0 | + | storage_id | home::user0 | + | file_parent | A_NUMBER | + | displayname_owner | user0 | + Scenario: delete a share Given user "user0" exists And user "user1" exists diff --git a/build/integration/features/webdav-related.feature b/build/integration/features/webdav-related.feature new file mode 100644 index 00000000000..450065ded2d --- /dev/null +++ b/build/integration/features/webdav-related.feature @@ -0,0 +1,20 @@ +Feature: sharing + Background: + Given using api version "1" + + Scenario: moving a file + Given As an "admin" + And user "user0" exists + When User "user0" moves file "/textfile0.txt" to "/FOLDER/textfile0.txt" + Then the HTTP status code should be "201" + + + + + + + + + + + |