Merge pull request #19791 from owncloud/provisioning_api_adding_integration_tests

Added more tests and fixed a problem with asort which was returning f…
This commit is contained in:
Thomas Müller 2015-10-22 10:16:10 +02:00
commit ad4ef8d91c
3 changed files with 343 additions and 88 deletions

View File

@ -9,6 +9,7 @@ default:
admin:
- admin
- admin
regular_user_password: 123456
ci:
formatter:

View File

@ -34,6 +34,7 @@ class FeatureContext extends BehatContext {
// Initialize your context here
$this->baseUrl = $parameters['baseUrl'];
$this->adminUser = $parameters['admin'];
$this->regularUser = $parameters['regular_user_password'];
// in case of ci deployment we take the server url from the environment
$testServerUrl = getenv('TEST_SERVER_URL');
@ -75,15 +76,33 @@ class FeatureContext extends BehatContext {
return $extractedElementsArray;
}
/**
* Parses the xml answer to get the array of subadmins returned.
*/
public function getArrayOfSubadminsResponded($resp) {
$listCheckedElements = $resp->xml()->data[0]->element;
$extractedElementsArray = json_decode(json_encode($listCheckedElements), 1);
return $extractedElementsArray;
}
/**
* This function is needed to use a vertical fashion in the gherkin tables.
*/
public function simplifyArray($arrayOfArrays){
$a = array_map(function($subArray) { return $subArray[0]; }, $arrayOfArrays);
return $a;
}
/**
* @Then /^users returned are$/
* @param \Behat\Gherkin\Node\TableNode|null $formData
*/
public function theUsersShouldBe($usersList) {
if ($usersList instanceof \Behat\Gherkin\Node\TableNode) {
$users = $usersList->getRows()[0];
$users = $usersList->getRows();
$usersSimplified = $this->simplifyArray($users);
$respondedArray = $this->getArrayOfUsersResponded($this->response);
PHPUnit_Framework_Assert::assertEquals(asort($users), asort($respondedArray));
PHPUnit_Framework_Assert::assertEquals($usersSimplified, $respondedArray, "", 0.0, 10, true);
}
}
@ -94,13 +113,36 @@ class FeatureContext extends BehatContext {
*/
public function theGroupsShouldBe($groupsList) {
if ($groupsList instanceof \Behat\Gherkin\Node\TableNode) {
$groups = $groupsList->getRows()[0];
$groups = $groupsList->getRows();
$groupsSimplified = $this->simplifyArray($groups);
$respondedArray = $this->getArrayOfGroupsResponded($this->response);
PHPUnit_Framework_Assert::assertEquals(asort($groups), asort($respondedArray));
PHPUnit_Framework_Assert::assertEquals($groupsSimplified, $respondedArray, "", 0.0, 10, true);
}
}
/**
* @Then /^subadmin groups returned are$/
* @param \Behat\Gherkin\Node\TableNode|null $formData
*/
public function theSubadminGroupsShouldBe($groupsList) {
if ($groupsList instanceof \Behat\Gherkin\Node\TableNode) {
$groups = $groupsList->getRows();
$groupsSimplified = $this->simplifyArray($groups);
$respondedArray = $this->getArrayOfSubadminsResponded($this->response);
PHPUnit_Framework_Assert::assertEquals($groupsSimplified, $respondedArray, "", 0.0, 10, true);
}
}
/**
* @Then /^subadmin users returned are$/
* @param \Behat\Gherkin\Node\TableNode|null $formData
*/
public function theSubadminUsersShouldBe($groupsList) {
$this->theSubadminGroupsShouldBe($groupsList);
}
/**
* @Then /^the OCS status code should be "([^"]*)"$/
*/
@ -144,6 +186,82 @@ class FeatureContext extends BehatContext {
PHPUnit_Framework_Assert::assertEquals(200, $this->response->getStatusCode());
}
/**
* @Given /^user "([^"]*)" belongs to group "([^"]*)"$/
*/
public function userBelongsToGroup($user, $group) {
$fullUrl = $this->baseUrl . "v2.php/cloud/users/$user/groups";
$client = new Client();
$options = [];
if ($this->currentUser === 'admin') {
$options['auth'] = $this->adminUser;
}
$this->response = $client->get($fullUrl, $options);
$groups = array($group);
$respondedArray = $this->getArrayOfGroupsResponded($this->response);
PHPUnit_Framework_Assert::assertEquals($groups, $respondedArray, "", 0.0, 10, true);
PHPUnit_Framework_Assert::assertEquals(200, $this->response->getStatusCode());
}
/**
* @Given /^user "([^"]*)" does not belong to group "([^"]*)"$/
*/
public function userDoesNotBelongToGroup($user, $group) {
$fullUrl = $this->baseUrl . "v2.php/cloud/users/$user/groups";
$client = new Client();
$options = [];
if ($this->currentUser === 'admin') {
$options['auth'] = $this->adminUser;
}
$this->response = $client->get($fullUrl, $options);
$groups = array($group);
$respondedArray = $this->getArrayOfGroupsResponded($this->response);
PHPUnit_Framework_Assert::assertNotEquals($groups, $respondedArray, "", 0.0, 10, true);
PHPUnit_Framework_Assert::assertEquals(200, $this->response->getStatusCode());
}
/**
* @Given /^user "([^"]*)" is subadmin of group "([^"]*)"$/
*/
public function userIsSubadminOfGroup($user, $group) {
$fullUrl = $this->baseUrl . "v2.php/cloud/groups/$group/subadmins";
$client = new Client();
$options = [];
if ($this->currentUser === 'admin') {
$options['auth'] = $this->adminUser;
}
$this->response = $client->get($fullUrl, $options);
$subadmins = array($user);
$respondedArray = $this->getArrayOfSubadminsResponded($this->response);
sort($respondedArray);
PHPUnit_Framework_Assert::assertContains($user, $respondedArray);
PHPUnit_Framework_Assert::assertEquals(200, $this->response->getStatusCode());
}
/**
* @Given /^user "([^"]*)" is not a subadmin of group "([^"]*)"$/
*/
public function userIsNotSubadminOfGroup($user, $group) {
$fullUrl = $this->baseUrl . "v2.php/cloud/groups/$group/subadmins";
$client = new Client();
$options = [];
if ($this->currentUser === 'admin') {
$options['auth'] = $this->adminUser;
}
$this->response = $client->get($fullUrl, $options);
$subadmins = array($user);
$respondedArray = $this->getArrayOfSubadminsResponded($this->response);
sort($respondedArray);
PHPUnit_Framework_Assert::assertNotContains($user, $respondedArray);
PHPUnit_Framework_Assert::assertEquals(200, $this->response->getStatusCode());
}
/**
* @Given /^user "([^"]*)" does not exist$/
*/
@ -233,6 +351,8 @@ class FeatureContext extends BehatContext {
$options = [];
if ($this->currentUser === 'admin') {
$options['auth'] = $this->adminUser;
} else {
$options['auth'] = $this->regularUser;
}
if ($body instanceof \Behat\Gherkin\Node\TableNode) {
$fd = $body->getRowsHash();

View File

@ -1,106 +1,240 @@
Feature: provisioning
Background:
Given using api version "1"
Background:
Given using api version "1"
Scenario: Getting an not existing user
Given As an "admin"
When sending "GET" to "/cloud/users/test"
Then the OCS status code should be "998"
And the HTTP status code should be "200"
Scenario: Getting an not existing user
Given As an "admin"
When sending "GET" to "/cloud/users/test"
Then the OCS status code should be "998"
And the HTTP status code should be "200"
Scenario: Listing all users
Given As an "admin"
When sending "GET" to "/cloud/users"
Then the OCS status code should be "100"
And the HTTP status code should be "200"
Scenario: Listing all users
Given As an "admin"
When sending "GET" to "/cloud/users"
Then the OCS status code should be "100"
And the HTTP status code should be "200"
Scenario: Create a user
Given As an "admin"
And user "brand-new-user" does not exist
When sending "POST" to "/cloud/users" with
| userid | brand-new-user |
| password | 123456 |
Then the OCS status code should be "100"
And the HTTP status code should be "200"
And user "brand-new-user" exists
Scenario: Create a user
Given As an "admin"
And user "brand-new-user" does not exist
When sending "POST" to "/cloud/users" with
| userid | brand-new-user |
| password | 123456 |
Then the OCS status code should be "100"
And the HTTP status code should be "200"
And user "brand-new-user" exists
Scenario: Create an existing user
Given As an "admin"
And user "brand-new-user" exists
When sending "POST" to "/cloud/users" with
| userid | brand-new-user |
| password | 123456 |
Then the OCS status code should be "102"
And the HTTP status code should be "200"
Scenario: Create an existing user
Given As an "admin"
And user "brand-new-user" exists
When sending "POST" to "/cloud/users" with
| userid | brand-new-user |
| password | 123456 |
Then the OCS status code should be "102"
And the HTTP status code should be "200"
Scenario: Get an existing user
Given As an "admin"
When sending "GET" to "/cloud/users/brand-new-user"
Then the OCS status code should be "100"
And the HTTP status code should be "200"
Scenario: Get an existing user
Given As an "admin"
When sending "GET" to "/cloud/users/brand-new-user"
Then the OCS status code should be "100"
And the HTTP status code should be "200"
Scenario: Getting all users
Given As an "admin"
And user "brand-new-user" exists
And user "admin" exists
When sending "GET" to "/cloud/users"
Then users returned are
| brand-new-user |
| admin |
Scenario: Getting all users
Given As an "admin"
And user "brand-new-user" exists
And user "admin" exists
When sending "GET" to "/cloud/users"
And users returned are
| brand-new-user |
| admin |
Scenario: Edit a user
Given As an "admin"
And user "brand-new-user" exists
When sending "PUT" to "/cloud/users/brand-new-user" with
| key | quota |
| value | 12MB |
| key | email |
| value | brand-new-user@gmail.com |
Then the OCS status code should be "100"
And the HTTP status code should be "200"
And user "brand-new-user" exists
Scenario: Create a group
Given As an "admin"
And group "new-group" does not exist
When sending "POST" to "/cloud/groups" with
| groupid | new-group |
| password | 123456 |
Then the OCS status code should be "100"
And the HTTP status code should be "200"
And group "new-group" exists
Scenario: Edit a user
Given As an "admin"
And user "brand-new-user" exists
When sending "PUT" to "/cloud/users/brand-new-user" with
| key | quota |
| value | 12MB |
| key | email |
| value | brand-new-user@gmail.com |
Then the OCS status code should be "100"
And the HTTP status code should be "200"
And user "brand-new-user" exists
Scenario: adding user to a group without sending the group
Given As an "admin"
And user "brand-new-user" exists
When sending "POST" to "/cloud/users/brand-new-user/groups" with
| groupid | |
Then the OCS status code should be "101"
And the HTTP status code should be "200"
Scenario: adding user to a group which doesn't exist
Given As an "admin"
And user "brand-new-user" exists
And group "not-group" does not exist
When sending "POST" to "/cloud/users/brand-new-user/groups" with
| groupid | not-group |
Then the OCS status code should be "102"
And the HTTP status code should be "200"
Scenario: Delete a user
Given As an "admin"
And user "brand-new-user" exists
When sending "DELETE" to "/cloud/users/brand-new-user"
Then the OCS status code should be "100"
And the HTTP status code should be "200"
And user "brand-new-user" does not exist
Scenario: adding user to a group without privileges
Given As an "brand-new-user"
When sending "POST" to "/cloud/users/brand-new-user/groups" with
| groupid | new-group |
Then the OCS status code should be "997"
And the HTTP status code should be "401"
Scenario: adding user to a group
Given As an "admin"
And user "brand-new-user" exists
And group "new-group" exists
When sending "POST" to "/cloud/users/brand-new-user/groups" with
| groupid | new-group |
Then the OCS status code should be "100"
And the HTTP status code should be "200"
Scenario: Create a group
Given As an "admin"
And group "new-group" does not exist
When sending "POST" to "/cloud/groups" with
| groupid | new-group |
| password | 123456 |
Scenario: getting groups of an user
Given As an "admin"
And user "brand-new-user" exists
And group "new-group" exists
When sending "GET" to "/cloud/users/brand-new-user/groups"
Then groups returned are
| new-group |
And the OCS status code should be "100"
Then the OCS status code should be "100"
And the HTTP status code should be "200"
And group "new-group" exists
Scenario: removing a user from a group
Given As an "admin"
And user "brand-new-user" exists
And group "new-group" exists
And user "brand-new-user" belongs to group "new-group"
When sending "DELETE" to "/cloud/users/brand-new-user/groups" with
| groupid | new-group |
Then the OCS status code should be "100"
And user "brand-new-user" does not belong to group "new-group"
Scenario: adding a user which doesn't exist to a group
Given As an "admin"
And user "not-user" does not exist
And group "new-group" exists
When sending "POST" to "/cloud/users/not-user/groups" with
| groupid | new-group |
Then the OCS status code should be "103"
And the HTTP status code should be "200"
Scenario: Getting all groups
Given As an "admin"
And group "new-group" exists
And group "admin" exists
When sending "GET" to "/cloud/groups"
And groups returned are
| admin |
| new-group |
Scenario: getting a group
Given As an "admin"
And group "new-group" exists
When sending "GET" to "/cloud/groups/new-group"
Then the OCS status code should be "100"
And the HTTP status code should be "200"
Scenario: Getting all groups
Given As an "admin"
And group "new-group" exists
And group "admin" exists
When sending "GET" to "/cloud/groups"
Then groups returned are
| admin |
| new-group |
Scenario: Delete a group
Given As an "admin"
And group "new-group" exists
When sending "DELETE" to "/cloud/groups/new-group"
Then the OCS status code should be "100"
And the HTTP status code should be "200"
And group "new-group" does not exist
Scenario: create a subadmin
Given As an "admin"
And user "brand-new-user" exists
And group "new-group" exists
When sending "POST" to "/cloud/users/brand-new-user/subadmins" with
| groupid | new-group |
Then the OCS status code should be "100"
And the HTTP status code should be "200"
Scenario: create a subadmin using a user which not exist
Given As an "admin"
And user "not-user" does not exist
And group "new-group" exists
When sending "POST" to "/cloud/users/not-user/subadmins" with
| groupid | new-group |
Then the OCS status code should be "101"
And the HTTP status code should be "200"
Scenario: create a subadmin using a group which not exist
Given As an "admin"
And user "brand-new-user" exists
And group "not-group" does not exist
When sending "POST" to "/cloud/users/brand-new-user/subadmins" with
| groupid | not-group |
Then the OCS status code should be "102"
And the HTTP status code should be "200"
Scenario: Getting subadmin groups
Given As an "admin"
And user "brand-new-user" exists
And group "new-group" exists
When sending "GET" to "/cloud/users/brand-new-user/subadmins"
Then subadmin groups returned are
| new-group |
Then the OCS status code should be "100"
And the HTTP status code should be "200"
Scenario: Getting subadmin groups of a user which not exist
Given As an "admin"
And user "not-user" does not exist
And group "new-group" exists
When sending "GET" to "/cloud/users/not-user/subadmins"
Then the OCS status code should be "101"
And the HTTP status code should be "200"
Scenario: Getting subadmin users of a group
Given As an "admin"
And user "brand-new-user" exists
And group "new-group" exists
When sending "GET" to "/cloud/groups/new-group/subadmins"
Then subadmin users returned are
| brand-new-user |
And the OCS status code should be "100"
And the HTTP status code should be "200"
Scenario: Getting subadmin users of a group which doesn't exist
Given As an "admin"
And user "brand-new-user" exists
And group "not-group" does not exist
When sending "GET" to "/cloud/groups/not-group/subadmins"
Then the OCS status code should be "101"
And the HTTP status code should be "200"
Scenario: Removing subadmin from a group
Given As an "admin"
And user "brand-new-user" exists
And group "new-group" exists
And user "brand-new-user" is subadmin of group "new-group"
When sending "DELETE" to "/cloud/users/brand-new-user/subadmins" with
| groupid | new-group |
And the OCS status code should be "100"
And the HTTP status code should be "200"
Scenario: Delete a user
Given As an "admin"
And user "brand-new-user" exists
When sending "DELETE" to "/cloud/users/brand-new-user"
Then the OCS status code should be "100"
And the HTTP status code should be "200"
And user "brand-new-user" does not exist
Scenario: Delete a group
Given As an "admin"
And group "new-group" exists
When sending "DELETE" to "/cloud/groups/new-group"
Then the OCS status code should be "100"
And the HTTP status code should be "200"
And group "new-group" does not exist