separate tests. add check quota. add test create folder

This commit is contained in:
ScharfViktor
2021-10-26 09:08:08 +02:00
committed by Michael Barz
parent a012f392d8
commit 5e88ce14fe
2 changed files with 130 additions and 14 deletions
@@ -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);
}
}