Merge pull request #24252 from owncloud/integration_test_favorites

Added favorites integration tests
This commit is contained in:
Vincent Petry 2016-06-16 12:52:51 +02:00 committed by GitHub
commit c1729852e6
2 changed files with 90 additions and 2 deletions

View File

@ -214,7 +214,7 @@ trait WebDav {
} }
$value = $keys[$key]; $value = $keys[$key];
if ($value !== $expectedValue) { if ($value != $expectedValue) {
throw new \Exception("Property \"$key\" found with value \"$value\", expected \"$expectedValue\""); throw new \Exception("Property \"$key\" found with value \"$value\", expected \"$expectedValue\"");
} }
} }
@ -434,5 +434,51 @@ trait WebDav {
$this->response = $ex->getResponse(); $this->response = $ex->getResponse();
} }
} }
}
/**
* @When user :user favorites element :path
*/
public function userFavoritesElement($user, $path){
$this->response = $this->changeFavStateOfAnElement($user, $path, 1, 0, null);
}
/**
* @When user :user unfavorites element :path
*/
public function userUnfavoritesElement($user, $path){
$this->response = $this->changeFavStateOfAnElement($user, $path, 0, 0, null);
}
/*Set the elements of a proppatch, $folderDepth requires 1 to see elements without children*/
public function changeFavStateOfAnElement($user, $path, $favOrUnfav, $folderDepth, $properties = null){
$fullUrl = substr($this->baseUrl, 0, -4);
$settings = array(
'baseUri' => $fullUrl,
'userName' => $user,
);
if ($user === 'admin') {
$settings['password'] = $this->adminUser[1];
} else {
$settings['password'] = $this->regularUser;
}
$client = new SClient($settings);
if (!$properties) {
$properties = [
'{http://owncloud.org/ns}favorite' => $favOrUnfav
];
}
$response = $client->proppatch($this->davPath . '/' . ltrim($path, '/'), $properties, $folderDepth);
return $response;
}
/**
* @Then /^as "([^"]*)" gets properties of file "([^"]*)" with$/
* @param string $user
* @param string $path
* @param \Behat\Gherkin\Node\TableNode|null $propertiesTable
*/
public function asGetsPropertiesOfFileWith($user, $path, $propertiesTable) {
$this->asGetsPropertiesOfFolderWith($user, $path, $propertiesTable);
}
}

View File

@ -0,0 +1,42 @@
Feature: favorite
Background:
Given using api version "1"
Scenario: Favorite a folder
Given using dav path "remote.php/webdav"
And As an "admin"
And user "user0" exists
When user "user0" favorites element "/FOLDER"
Then as "user0" gets properties of folder "/FOLDER" with
|{http://owncloud.org/ns}favorite|
And the single response should contain a property "{http://owncloud.org/ns}favorite" with value "1"
Scenario: Favorite and unfavorite a folder
Given using dav path "remote.php/webdav"
And As an "admin"
And user "user0" exists
When user "user0" favorites element "/FOLDER"
And user "user0" unfavorites element "/FOLDER"
Then as "user0" gets properties of folder "/FOLDER" with
|{http://owncloud.org/ns}favorite|
And the single response should contain a property "{http://owncloud.org/ns}favorite" with value ""
Scenario: Favorite a file
Given using dav path "remote.php/webdav"
And As an "admin"
And user "user0" exists
When user "user0" favorites element "/textfile0.txt"
Then as "user0" gets properties of file "/textfile0.txt" with
|{http://owncloud.org/ns}favorite|
And the single response should contain a property "{http://owncloud.org/ns}favorite" with value "1"
Scenario: Favorite and unfavorite a file
Given using dav path "remote.php/webdav"
And As an "admin"
And user "user0" exists
When user "user0" favorites element "/textfile0.txt"
And user "user0" unfavorites element "/textfile0.txt"
Then as "user0" gets properties of file "/textfile0.txt" with
|{http://owncloud.org/ns}favorite|
And the single response should contain a property "{http://owncloud.org/ns}favorite" with value ""