Adding new tests for federation sharing

This commit is contained in:
Sergio Bertolín 2016-02-19 14:13:19 +00:00 committed by Sergio Bertolin
parent 1ed831564e
commit 44da5fe1ab
3 changed files with 147 additions and 1 deletions

View File

@ -20,8 +20,39 @@ class FederationContext implements Context, SnippetAcceptingContext {
* @When /^User "([^"]*)" from server "([^"]*)" shares "([^"]*)" with user "([^"]*)" from server "([^"]*)"$/
*/
public function federateSharing($userLocal, $serverLocal, $pathLocal, $userRemote, $serverRemote){
if ($serverRemote == "REMOTE"){
$shareWith = "$userRemote@" . substr($this->remoteBaseUrl, 0, -4);
} elseif ($serverRemote == "LOCAL") {
$shareWith = "$userRemote@" . substr($this->localBaseUrl, 0, -4);
}
$this->createShare($userLocal, $pathLocal, 6, $shareWith, null, null, null);
}
/**
* @When /^User "([^"]*)" from server "([^"]*)" accepts last pending share$/
*/
public function acceptLastPendingShare($user, $server){
$this->usingServer($server);
$this->asAn($user);
$this->sendingToWith('GET', "/apps/files_sharing/api/v1/remote_shares/pending", null);
$this->theHTTPStatusCodeShouldBe('200');
$this->theOCSStatusCodeShouldBe('100');
$share_id = $this->response->xml()->data[0]->element[0]->id;
$this->sendingToWith('POST', "/apps/files_sharing/api/v1/remote_shares/pending/{$share_id}", null);
$this->theHTTPStatusCodeShouldBe('200');
$this->theOCSStatusCodeShouldBe('100');
}
/**
* @param string $app
* @param string $parameter
* @param string $value
*/
protected function modifyServerConfig($app, $parameter, $value) {
$body = new \Behat\Gherkin\Node\TableNode([['value', $value]]);
$this->sendingToWith('post', "/apps/testing/api/v1/app/{$app}/{$parameter}", $body);
$this->theHTTPStatusCodeShouldBe('200');
$this->theOCSStatusCodeShouldBe('100');
}
}

View File

@ -225,6 +225,9 @@ trait Sharing{
elseif ((string)$element->$field == $contentExpected){
return True;
}
else{
print($element->$field);
}
}
return False;
@ -374,6 +377,14 @@ trait Sharing{
$fd = $body->getRowsHash();
foreach($fd as $field => $value) {
if (substr($field, 0, 10 ) === "share_with"){
$value = str_replace("REMOTE", substr($this->remoteBaseUrl, 0, -5), $value);
$value = str_replace("LOCAL", substr($this->localBaseUrl, 0, -5), $value);
}
if (substr($field, 0, 6 ) === "remote"){
$value = str_replace("REMOTE", substr($this->remoteBaseUrl, 0, -4), $value);
$value = str_replace("LOCAL", substr($this->localBaseUrl, 0, -4), $value);
}
if (!$this->isFieldInResponse($field, $value)){
PHPUnit_Framework_Assert::fail("$field" . " doesn't have value " . "$value");
}

View File

@ -10,6 +10,110 @@ Feature: federated
When User "user0" from server "LOCAL" shares "/textfile0.txt" with user "user1" from server "REMOTE"
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 | 6 |
| file_source | A_NUMBER |
| path | /textfile0.txt |
| permissions | 19 |
| stime | A_NUMBER |
| storage | A_NUMBER |
| mail_send | 0 |
| uid_owner | user0 |
| storage_id | home::user0 |
| file_parent | A_NUMBER |
| displayname_owner | user0 |
| share_with | user1@REMOTE |
| share_with_displayname | user1@REMOTE |
Scenario: Federate share a file with local server
Given Using server "LOCAL"
And user "user0" exists
And Using server "REMOTE"
And user "user1" exists
When User "user1" from server "REMOTE" shares "/textfile0.txt" with user "user0" from server "LOCAL"
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 | 6 |
| file_source | A_NUMBER |
| path | /textfile0.txt |
| permissions | 19 |
| stime | A_NUMBER |
| storage | A_NUMBER |
| mail_send | 0 |
| uid_owner | user1 |
| storage_id | home::user1 |
| file_parent | A_NUMBER |
| displayname_owner | user1 |
| share_with | user0@LOCAL |
| share_with_displayname | user0@LOCAL |
Scenario: Remote sharee can see the pending share
Given Using server "REMOTE"
And user "user1" exists
And Using server "LOCAL"
And user "user0" exists
And User "user0" from server "LOCAL" shares "/textfile0.txt" with user "user1" from server "REMOTE"
And Using server "REMOTE"
And As an "user1"
When sending "GET" to "/apps/files_sharing/api/v1/remote_shares/pending"
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 |
| remote | LOCAL |
| remote_id | A_NUMBER |
| share_token | A_TOKEN |
| name | /textfile0.txt |
| owner | user0 |
| user | user1 |
| mountpoint | {{TemporaryMountPointName#/textfile0.txt}} |
| accepted | 0 |
Scenario: accept a pending remote share
Given Using server "REMOTE"
And user "user1" exists
And Using server "LOCAL"
And user "user0" exists
And User "user0" from server "LOCAL" shares "/textfile0.txt" with user "user1" from server "REMOTE"
When User "user1" from server "REMOTE" accepts last pending share
Then the OCS status code should be "100"
And the HTTP status code should be "200"
Scenario: Federate reshare a file
Given Using server "REMOTE"
And user "user1" exists
And Using server "LOCAL"
And user "user0" exists
And User "user0" from server "LOCAL" shares "/textfile0.txt" with user "user1" from server "REMOTE"
And User "user1" from server "REMOTE" accepts last pending share
And Using server "REMOTE"
And As an "user1"
When User "user1" from server "REMOTE" shares "/textfile0 (2).txt" with user "user0" from server "LOCAL"
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 | 6 |
| file_source | A_NUMBER |
| path | /textfile0 (2).txt |
| permissions | 19 |
| stime | A_NUMBER |
| storage | A_NUMBER |
| mail_send | 0 |
| uid_owner | user1 |
| file_parent | A_NUMBER |
| displayname_owner | user1 |
| share_with | user0@LOCAL |
| share_with_displayname | user0@LOCAL |