mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-05-13 06:49:38 -05:00
separate tests. add check quota. add test create folder
This commit is contained in:
committed by
Michael Barz
parent
a012f392d8
commit
5e88ce14fe
@@ -6,23 +6,52 @@ Feature: List and create spaces
|
||||
Note - this feature is run in CI with ACCOUNTS_HASH_DIFFICULTY set to the default for production
|
||||
See https://github.com/owncloud/ocis/issues/1542 and https://github.com/owncloud/ocis/pull/839
|
||||
|
||||
Scenario: list own spaces
|
||||
Background:
|
||||
Given user "Alice" has been created with default attributes and without skeleton files
|
||||
|
||||
Scenario: Alice request her space via the Graph api, she expects a 200 code and the correct data in the response
|
||||
When user "Alice" lists all available spaces via the GraphApi
|
||||
Then the HTTP status code should be "200"
|
||||
When user "Alice" lists the content of the space with the name "Alice Hansen" using the WebDav Api
|
||||
And the json responded should contain these key and value pairs
|
||||
| key | value |
|
||||
| driveType | personal |
|
||||
| name | Alice Hansen |
|
||||
|
||||
Scenario: Alice requests her space via webDav api, she expects a 207 code and the correct data in the xml response
|
||||
When user "Alice" lists all available spaces via the GraphApi
|
||||
And user "Alice" lists the content of the space with the name "Alice Hansen" using the WebDav Api
|
||||
Then the HTTP status code should be "207"
|
||||
#Then the propfind result of the space should contain these entries:
|
||||
#| .space/ |
|
||||
Then the propfind result of the space should not contain these entries:
|
||||
| file |
|
||||
And the propfind result of the space should contain these entries:
|
||||
| .space/ |
|
||||
|
||||
Scenario: Alice tryes to create Space via Graph api without right, she expects a response of 401
|
||||
When user "Alice" creates a space "Project Mars" of type "project" with the default quota using the GraphApi
|
||||
Then the HTTP status code should be "401"
|
||||
When the administrator gives "Alice" the role "Admin" using the settings api
|
||||
|
||||
Scenario: Alice creates Space via Graph api with defaul quota, she expects a 201 code and the correct data in the response
|
||||
Given the administrator gives "Alice" the role "Admin" using the settings api
|
||||
When user "Alice" creates a space "Project Mars" of type "project" with the default quota using the GraphApi
|
||||
Then the HTTP status code should be "201"
|
||||
Then the json responded should contain these key and value pairs
|
||||
| key | value |
|
||||
| driveType | project |
|
||||
| name | Project Mars |
|
||||
And the json responded should contain these key and value pairs
|
||||
| key | value |
|
||||
| driveType | project |
|
||||
| name | Project Mars |
|
||||
| total | 1000000000 |
|
||||
|
||||
Scenario: Alice creates Space via Graph api, she expects a 201 code and the correct data in the response
|
||||
Given the administrator gives "Alice" the role "Admin" using the settings api
|
||||
When user "Alice" creates a space "Project Venus" of type "project" with quota "2000" using the GraphApi
|
||||
Then the HTTP status code should be "201"
|
||||
And the json responded should contain these key and value pairs
|
||||
| key | value |
|
||||
| driveType | project |
|
||||
| name | Project Venus |
|
||||
| total | 2000 |
|
||||
|
||||
Scenario: Alice creates folder via Graph api, she expects a 201 code and the correct data in the response
|
||||
Given the administrator gives "Alice" the role "Admin" using the settings api
|
||||
When user "Alice" creates a space "Project Venus" of type "project" with quota "2000" using the GraphApi
|
||||
And user "Alice" lists all available spaces via the GraphApi
|
||||
When user "Alice" creates a folder "mainFolder" in space "Project Venus" using the WebDav Api
|
||||
Then the HTTP status code should be "201"
|
||||
|
||||
@@ -404,7 +404,7 @@ class SpacesContext implements Context {
|
||||
}
|
||||
|
||||
/**
|
||||
* @Then the json responded should contain these key and value pairs
|
||||
* @Then /the json responded should contain these key and value pairs/
|
||||
*
|
||||
* @param TableNode $table
|
||||
*
|
||||
@@ -413,11 +413,37 @@ class SpacesContext implements Context {
|
||||
public function jsonRespondedShouldContain(TableNode $table) {
|
||||
$this->featureContext->verifyTableNodeColumns($table, ['key', 'value']);
|
||||
$responseJson = json_decode($this->featureContext->getResponse()->getBody(), true);
|
||||
|
||||
foreach ($table->getHash() as $row) {
|
||||
$expected = [$row["key"] => $row["value"]];
|
||||
Assert::assertEquals($row["value"], $responseJson[$row["key"]]);
|
||||
if (empty($this->searchKeyValueInArray($responseJson, $row["key"], $row["value"]))){
|
||||
Assert::assertFalse($row["value"], ($row["value"] . ' not found'));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Method search for a match $key->$value
|
||||
*
|
||||
* @param array $array
|
||||
* @param string $key
|
||||
* @param string $value
|
||||
* @return array $results
|
||||
*/
|
||||
public function searchKeyValueInArray($array, $key, $value)
|
||||
{
|
||||
$results = array();
|
||||
|
||||
if (is_array($array)) {
|
||||
if (isset($array[$key]) && $array[$key] == $value) {
|
||||
$results[] = $array;
|
||||
}
|
||||
|
||||
foreach ($array as $subarray) {
|
||||
$results = array_merge($results, $this->searchKeyValueInArray($subarray, $key, $value));
|
||||
}
|
||||
}
|
||||
return $results;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $shouldOrNot (not|)
|
||||
@@ -452,6 +478,7 @@ class SpacesContext implements Context {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Verify that the tableNode contains expected number of columns
|
||||
*
|
||||
@@ -533,4 +560,64 @@ class SpacesContext implements Context {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @When /^user "([^"]*)" creates a folder "([^"]*)" in space "([^"]*)" using the WebDav Api$/
|
||||
*
|
||||
* @param string $user
|
||||
* @param string $folder
|
||||
* @param string $spaceName
|
||||
*
|
||||
* @return void
|
||||
* @throws JsonException
|
||||
*/
|
||||
public function theUserCreatesAFolderUsingTheGraphApi($user, $folder, $spaceName): void
|
||||
{
|
||||
$this->featureContext->setResponse(
|
||||
$this->sendCreateFolderRequest(
|
||||
$this->featureContext->getBaseUrl(),
|
||||
"",
|
||||
"MKCOL",
|
||||
$user,
|
||||
$this->featureContext->getPasswordForUser($user),
|
||||
$folder,
|
||||
$spaceName
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Send Graph Create Space Request
|
||||
*
|
||||
* @param $baseUrl
|
||||
* @param $user
|
||||
* @param $password
|
||||
* @param string $method
|
||||
* @param string $xRequestId
|
||||
* @param array $headers
|
||||
* @param string $folder
|
||||
* @param string $spaceName
|
||||
* @return ResponseInterface
|
||||
*/
|
||||
public function sendCreateFolderRequest(
|
||||
$baseUrl,
|
||||
string $xRequestId = '',
|
||||
string $method,
|
||||
$user,
|
||||
$password,
|
||||
$folder,
|
||||
$spaceName,
|
||||
array $headers = []
|
||||
|
||||
): ResponseInterface
|
||||
{
|
||||
$spaceId = $this->getAvailableSpaces()[$spaceName]["id"];
|
||||
$fullUrl = $baseUrl;
|
||||
if (!str_ends_with($fullUrl, '/')) {
|
||||
$fullUrl .= '/';
|
||||
}
|
||||
$fullUrl .= "dav/spaces/" . $spaceId . '/' . $folder;
|
||||
|
||||
return HttpRequestHelper::sendRequest($fullUrl, $xRequestId, $method, $user, $password, $headers);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user