added sharing feature file
added logic necessary for preconditions and postconditions of sharing tests Added sharing by link tests and sharing with group Added test which reproduces issue 19950 (adding expiration date) refactored given and then statements to be preconditions and not operations
This commit is contained in:
parent
73d9699be9
commit
d11b69bfb9
2 changed files with 284 additions and 34 deletions
|
@ -23,6 +23,9 @@ class FeatureContext extends BehatContext {
|
|||
/** @var int */
|
||||
private $apiVersion = 1;
|
||||
|
||||
/** @var SimpleXMLElement */
|
||||
private $lastShareData = null;
|
||||
|
||||
/**
|
||||
* Initializes context.
|
||||
* Every scenario gets it's own context object.
|
||||
|
@ -197,16 +200,27 @@ class FeatureContext extends BehatContext {
|
|||
/**
|
||||
* @Given /^user "([^"]*)" exists$/
|
||||
*/
|
||||
public function userExists($user) {
|
||||
public function assureUserExists($user) {
|
||||
try {
|
||||
$this->userExists($user);
|
||||
} catch (\GuzzleHttp\Exception\ClientException $ex) {
|
||||
$previous_user = $this->currentUser;
|
||||
$this->currentUser = "admin";
|
||||
$this->creatingTheUser($user);
|
||||
$this->currentUser = $previous_user;
|
||||
}
|
||||
$this->userExists($user);
|
||||
PHPUnit_Framework_Assert::assertEquals(200, $this->response->getStatusCode());
|
||||
|
||||
}
|
||||
|
||||
public function userExists($user){
|
||||
$fullUrl = $this->baseUrl . "v2.php/cloud/users/$user";
|
||||
$client = new Client();
|
||||
$options = [];
|
||||
if ($this->currentUser === 'admin') {
|
||||
$options['auth'] = $this->adminUser;
|
||||
}
|
||||
$options['auth'] = $this->adminUser;
|
||||
|
||||
$this->response = $client->get($fullUrl, $options);
|
||||
PHPUnit_Framework_Assert::assertEquals(200, $this->response->getStatusCode());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -284,14 +298,23 @@ class FeatureContext extends BehatContext {
|
|||
PHPUnit_Framework_Assert::assertEquals(200, $this->response->getStatusCode());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @Given /^user "([^"]*)" does not exist$/
|
||||
*/
|
||||
public function userDoesNotExist($user) {
|
||||
try {
|
||||
$this->userExists($user);
|
||||
PHPUnit_Framework_Assert::fail('The user "' . $user . '" exists');
|
||||
} catch (\GuzzleHttp\Exception\ClientException $ex) {
|
||||
$this->response = $ex->getResponse();
|
||||
PHPUnit_Framework_Assert::assertEquals(404, $ex->getResponse()->getStatusCode());
|
||||
return;
|
||||
}
|
||||
$previous_user = $this->currentUser;
|
||||
$this->currentUser = "admin";
|
||||
$this->deletingTheUser($user);
|
||||
$this->currentUser = $previous_user;
|
||||
try {
|
||||
$this->userExists($user);
|
||||
} catch (\GuzzleHttp\Exception\ClientException $ex) {
|
||||
$this->response = $ex->getResponse();
|
||||
PHPUnit_Framework_Assert::assertEquals(404, $ex->getResponse()->getStatusCode());
|
||||
|
@ -332,10 +355,65 @@ class FeatureContext extends BehatContext {
|
|||
PHPUnit_Framework_Assert::assertEquals(200, $this->response->getStatusCode());
|
||||
}
|
||||
|
||||
/**
|
||||
* @When /^creating the user "([^"]*)r"$/
|
||||
*/
|
||||
public function createUser($user) {
|
||||
$this->creatingTheUser($user);
|
||||
$this->userExists($user);
|
||||
}
|
||||
|
||||
public function deleteUser($user) {
|
||||
$this->deletingTheUser($user);
|
||||
$this->userDoesNotExist($user);
|
||||
}
|
||||
|
||||
public function createGroup($group) {
|
||||
$this->creatingTheGroup($group);
|
||||
$this->groupExists($group);
|
||||
}
|
||||
|
||||
public function deleteGroup($group) {
|
||||
$this->deletingTheGroup($group);
|
||||
$this->groupDoesNotExist($group);
|
||||
}
|
||||
|
||||
public function creatingTheUser($user) {
|
||||
$fullUrl = $this->baseUrl . "v{$this->apiVersion}.php/cloud/users";
|
||||
$client = new Client();
|
||||
$options = [];
|
||||
if ($this->currentUser === 'admin') {
|
||||
$options['auth'] = $this->adminUser;
|
||||
}
|
||||
|
||||
$options['body'] = [
|
||||
'userid' => $user,
|
||||
'password' => '123456'
|
||||
];
|
||||
|
||||
$this->response = $client->send($client->createRequest("POST", $fullUrl, $options));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @When /^creating the group "([^"]*)"$/
|
||||
*/
|
||||
public function creatingTheGroup($group) {
|
||||
$fullUrl = $this->baseUrl . "v{$this->apiVersion}.php/cloud/groups";
|
||||
$client = new Client();
|
||||
$options = [];
|
||||
if ($this->currentUser === 'admin') {
|
||||
$options['auth'] = $this->adminUser;
|
||||
}
|
||||
|
||||
$options['body'] = [
|
||||
'groupid' => $group,
|
||||
];
|
||||
|
||||
$this->response = $client->send($client->createRequest("POST", $fullUrl, $options));
|
||||
}
|
||||
|
||||
/**
|
||||
* @When /^Deleting the user "([^"]*)"$/
|
||||
*/
|
||||
public function deletingTheUser($user) {
|
||||
$fullUrl = $this->baseUrl . "v{$this->apiVersion}.php/cloud/users/$user";
|
||||
$client = new Client();
|
||||
$options = [];
|
||||
|
@ -343,45 +421,74 @@ class FeatureContext extends BehatContext {
|
|||
$options['auth'] = $this->adminUser;
|
||||
}
|
||||
|
||||
$this->response = $client->post($fullUrl, [
|
||||
'form_params' => [
|
||||
'userid' => $user,
|
||||
'password' => '123456'
|
||||
]
|
||||
]);
|
||||
|
||||
$this->response = $client->send($client->createRequest("DELETE", $fullUrl, $options));
|
||||
}
|
||||
|
||||
/**
|
||||
* @When /^creating the group "([^"]*)r"$/
|
||||
* @When /^Deleting the group "([^"]*)"$/
|
||||
*/
|
||||
public function creatingTheGroup($group) {
|
||||
$fullUrl = $this->baseUrl . "v{$this->apiVersion}.php/cloud/groups/addgroup";
|
||||
public function deletingTheGroup($group) {
|
||||
$fullUrl = $this->baseUrl . "v{$this->apiVersion}.php/cloud/groups/$group";
|
||||
$client = new Client();
|
||||
$options = [];
|
||||
if ($this->currentUser === 'admin') {
|
||||
$options['auth'] = $this->adminUser;
|
||||
}
|
||||
|
||||
$this->response = $client->post($fullUrl, [
|
||||
'form_params' => [
|
||||
'groupid' => $user
|
||||
]
|
||||
]);
|
||||
$this->response = $client->send($client->createRequest("DELETE", $fullUrl, $options));
|
||||
}
|
||||
|
||||
/**
|
||||
* @Given /^Add user "([^"]*)" to the group "([^"]*)"$/
|
||||
*/
|
||||
public function addUserToGroup($user, $group) {
|
||||
$this->userExists($user);
|
||||
$this->groupExists($group);
|
||||
$this->addingUserToGroup($user, $group);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @When /^User "([^"]*)" is added to the group "([^"]*)"$/
|
||||
*/
|
||||
public function addingUserToGroup($user, $group) {
|
||||
$fullUrl = $this->baseUrl . "v{$this->apiVersion}.php/cloud/users/$user/groups";
|
||||
$client = new Client();
|
||||
$options = [];
|
||||
if ($this->currentUser === 'admin') {
|
||||
$options['auth'] = $this->adminUser;
|
||||
}
|
||||
|
||||
$options['body'] = [
|
||||
'groupid' => $group,
|
||||
];
|
||||
|
||||
$this->response = $client->send($client->createRequest("POST", $fullUrl, $options));
|
||||
}
|
||||
|
||||
|
||||
public function groupExists($group) {
|
||||
$fullUrl = $this->baseUrl . "v2.php/cloud/groups/$group";
|
||||
$client = new Client();
|
||||
$options = [];
|
||||
$options['auth'] = $this->adminUser;
|
||||
|
||||
$this->response = $client->get($fullUrl, $options);
|
||||
}
|
||||
|
||||
/**
|
||||
* @Given /^group "([^"]*)" exists$/
|
||||
*/
|
||||
public function groupExists($group) {
|
||||
$fullUrl = $this->baseUrl . "v2.php/cloud/groups/$group";
|
||||
$client = new Client();
|
||||
$options = [];
|
||||
if ($this->currentUser === 'admin') {
|
||||
$options['auth'] = $this->adminUser;
|
||||
public function assureGroupExists($group) {
|
||||
try {
|
||||
$this->groupExists($group);
|
||||
} catch (\GuzzleHttp\Exception\ClientException $ex) {
|
||||
$previous_user = $this->currentUser;
|
||||
$this->currentUser = "admin";
|
||||
$this->creatingTheGroup($group);
|
||||
$this->currentUser = $previous_user;
|
||||
}
|
||||
|
||||
$this->response = $client->get($fullUrl, $options);
|
||||
$this->groupExists($group);
|
||||
PHPUnit_Framework_Assert::assertEquals(200, $this->response->getStatusCode());
|
||||
}
|
||||
|
||||
|
@ -391,7 +498,17 @@ class FeatureContext extends BehatContext {
|
|||
public function groupDoesNotExist($group) {
|
||||
try {
|
||||
$this->groupExists($group);
|
||||
PHPUnit_Framework_Assert::fail('The group "' . $group . '" exists');
|
||||
} catch (\GuzzleHttp\Exception\ClientException $ex) {
|
||||
$this->response = $ex->getResponse();
|
||||
PHPUnit_Framework_Assert::assertEquals(404, $ex->getResponse()->getStatusCode());
|
||||
return;
|
||||
}
|
||||
$previous_user = $this->currentUser;
|
||||
$this->currentUser = "admin";
|
||||
$this->deletingTheGroup($group);
|
||||
$this->currentUser = $previous_user;
|
||||
try {
|
||||
$this->groupExists($group);
|
||||
} catch (\GuzzleHttp\Exception\ClientException $ex) {
|
||||
$this->response = $ex->getResponse();
|
||||
PHPUnit_Framework_Assert::assertEquals(404, $ex->getResponse()->getStatusCode());
|
||||
|
@ -422,4 +539,69 @@ class FeatureContext extends BehatContext {
|
|||
$this->response = $ex->getResponse();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @When /^creating a public share with$/
|
||||
* @param \Behat\Gherkin\Node\TableNode|null $formData
|
||||
*/
|
||||
public function createPublicShare($body) {
|
||||
$this->sendingToWith("POST", "/apps/files_sharing/api/v1/shares", $body);
|
||||
$this->lastShareData = $this->response->xml();
|
||||
}
|
||||
|
||||
/**
|
||||
* @Then /^Public shared file "([^"]*)" can be downloaded$/
|
||||
*/
|
||||
public function checkPublicSharedFile($filename) {
|
||||
$client = new Client();
|
||||
$options = [];
|
||||
$url = $this->lastShareData->data[0]->url;
|
||||
$fullUrl = $url . "/download";
|
||||
$options['save_to'] = "./$filename";
|
||||
$this->response = $client->get($fullUrl, $options);
|
||||
$finfo = new finfo;
|
||||
$fileinfo = $finfo->file("./$filename", FILEINFO_MIME_TYPE);
|
||||
PHPUnit_Framework_Assert::assertEquals($fileinfo, "text/plain");
|
||||
if (file_exists("./$filename")) {
|
||||
unlink("./$filename");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @Then /^Public shared file "([^"]*)" with password "([^"]*)" can be downloaded$/
|
||||
*/
|
||||
public function checkPublicSharedFileWithPassword($filename, $password) {
|
||||
$client = new Client();
|
||||
$options = [];
|
||||
$token = $this->lastShareData->data[0]->token;
|
||||
$fullUrl = substr($this->baseUrl, 0, -4) . "public.php/webdav";
|
||||
$options['auth'] = [$token, $password];
|
||||
$options['save_to'] = "./$filename";
|
||||
$this->response = $client->get($fullUrl, $options);
|
||||
$finfo = new finfo;
|
||||
$fileinfo = $finfo->file("./$filename", FILEINFO_MIME_TYPE);
|
||||
PHPUnit_Framework_Assert::assertEquals($fileinfo, "text/plain");
|
||||
if (file_exists("./$filename")) {
|
||||
unlink("./$filename");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @When /^Adding expiration date to last share$/
|
||||
*/
|
||||
public function addingExpirationDate() {
|
||||
$share_id = $this->lastShareData->data[0]->id;
|
||||
$fullUrl = $this->baseUrl . "v{$this->apiVersion}.php/apps/files_sharing/api/v{$this->apiVersion}/shares/$share_id";
|
||||
$client = new Client();
|
||||
$options = [];
|
||||
if ($this->currentUser === 'admin') {
|
||||
$options['auth'] = $this->adminUser;
|
||||
} else {
|
||||
$options['auth'] = [$this->currentUser, $this->regularUser];
|
||||
}
|
||||
$date = date('Y-m-d', strtotime("+3 days"));
|
||||
$options['body'] = ['expireDate' => $date];
|
||||
$this->response = $client->send($client->createRequest("PUT", $fullUrl, $options));
|
||||
PHPUnit_Framework_Assert::assertEquals(200, $this->response->getStatusCode());
|
||||
}
|
||||
}
|
||||
|
|
68
build/integration/features/sharing-v1.feature
Normal file
68
build/integration/features/sharing-v1.feature
Normal file
|
@ -0,0 +1,68 @@
|
|||
Feature: sharing
|
||||
Background:
|
||||
Given using api version "1"
|
||||
|
||||
Scenario: Creating a new share with user
|
||||
Given user "user0" exists
|
||||
And user "user1" exists
|
||||
And As an "user0"
|
||||
When sending "POST" to "/apps/files_sharing/api/v1/shares" with
|
||||
| path | welcome.txt |
|
||||
| shareWith | user1 |
|
||||
| shareType | 0 |
|
||||
Then the OCS status code should be "100"
|
||||
And the HTTP status code should be "200"
|
||||
And user "user0" does not exist
|
||||
And user "user1" does not exist
|
||||
|
||||
Scenario: Creating a share with a group
|
||||
Given user "user0" exists
|
||||
And user "user1" exists
|
||||
And group "sharing-group" exists
|
||||
And As an "user0"
|
||||
When sending "POST" to "/apps/files_sharing/api/v1/shares" with
|
||||
| path | welcome.txt |
|
||||
| shareWith | sharing-group |
|
||||
| shareType | 1 |
|
||||
Then the OCS status code should be "100"
|
||||
And the HTTP status code should be "200"
|
||||
And user "user0" does not exist
|
||||
And user "user1" does not exist
|
||||
And group "sharing-group" does not exist
|
||||
|
||||
Scenario: Creating a new public share
|
||||
Given user "user0" exists
|
||||
And As an "user0"
|
||||
When creating a public share with
|
||||
| path | welcome.txt |
|
||||
| shareType | 3 |
|
||||
Then the OCS status code should be "100"
|
||||
And the HTTP status code should be "200"
|
||||
And Public shared file "welcome.txt" can be downloaded
|
||||
And user "user0" does not exist
|
||||
|
||||
Scenario: Creating a new public share with password
|
||||
Given user "user0" exists
|
||||
And As an "user0"
|
||||
When creating a public share with
|
||||
| path | welcome.txt |
|
||||
| shareType | 3 |
|
||||
| password | publicpw |
|
||||
Then the OCS status code should be "100"
|
||||
And the HTTP status code should be "200"
|
||||
And Public shared file "welcome.txt" with password "publicpw" can be downloaded
|
||||
And user "user0" does not exist
|
||||
|
||||
Scenario: Creating a new public share with password and adding an expiration date
|
||||
Given user "user0" exists
|
||||
And As an "user0"
|
||||
When creating a public share with
|
||||
| path | welcome.txt |
|
||||
| shareType | 3 |
|
||||
| password | publicpw |
|
||||
And Adding expiration date to last share
|
||||
Then the OCS status code should be "100"
|
||||
And the HTTP status code should be "200"
|
||||
And Public shared file "welcome.txt" with password "publicpw" can be downloaded
|
||||
And user "user0" does not exist
|
||||
|
Loading…
Reference in a new issue