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 - admin
- admin - admin
regular_user_password: 123456
ci: ci:
formatter: formatter:

View File

@ -34,6 +34,7 @@ class FeatureContext extends BehatContext {
// Initialize your context here // Initialize your context here
$this->baseUrl = $parameters['baseUrl']; $this->baseUrl = $parameters['baseUrl'];
$this->adminUser = $parameters['admin']; $this->adminUser = $parameters['admin'];
$this->regularUser = $parameters['regular_user_password'];
// in case of ci deployment we take the server url from the environment // in case of ci deployment we take the server url from the environment
$testServerUrl = getenv('TEST_SERVER_URL'); $testServerUrl = getenv('TEST_SERVER_URL');
@ -75,15 +76,33 @@ class FeatureContext extends BehatContext {
return $extractedElementsArray; 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$/ * @Then /^users returned are$/
* @param \Behat\Gherkin\Node\TableNode|null $formData * @param \Behat\Gherkin\Node\TableNode|null $formData
*/ */
public function theUsersShouldBe($usersList) { public function theUsersShouldBe($usersList) {
if ($usersList instanceof \Behat\Gherkin\Node\TableNode) { if ($usersList instanceof \Behat\Gherkin\Node\TableNode) {
$users = $usersList->getRows()[0]; $users = $usersList->getRows();
$usersSimplified = $this->simplifyArray($users);
$respondedArray = $this->getArrayOfUsersResponded($this->response); $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) { public function theGroupsShouldBe($groupsList) {
if ($groupsList instanceof \Behat\Gherkin\Node\TableNode) { if ($groupsList instanceof \Behat\Gherkin\Node\TableNode) {
$groups = $groupsList->getRows()[0]; $groups = $groupsList->getRows();
$groupsSimplified = $this->simplifyArray($groups);
$respondedArray = $this->getArrayOfGroupsResponded($this->response); $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 "([^"]*)"$/ * @Then /^the OCS status code should be "([^"]*)"$/
*/ */
@ -144,6 +186,82 @@ class FeatureContext extends BehatContext {
PHPUnit_Framework_Assert::assertEquals(200, $this->response->getStatusCode()); 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$/ * @Given /^user "([^"]*)" does not exist$/
*/ */
@ -233,6 +351,8 @@ class FeatureContext extends BehatContext {
$options = []; $options = [];
if ($this->currentUser === 'admin') { if ($this->currentUser === 'admin') {
$options['auth'] = $this->adminUser; $options['auth'] = $this->adminUser;
} else {
$options['auth'] = $this->regularUser;
} }
if ($body instanceof \Behat\Gherkin\Node\TableNode) { if ($body instanceof \Behat\Gherkin\Node\TableNode) {
$fd = $body->getRowsHash(); $fd = $body->getRowsHash();

View File

@ -39,17 +39,15 @@ Feature: provisioning
Then the OCS status code should be "100" Then the OCS status code should be "100"
And the HTTP status code should be "200" And the HTTP status code should be "200"
Scenario: Getting all users Scenario: Getting all users
Given As an "admin" Given As an "admin"
And user "brand-new-user" exists And user "brand-new-user" exists
And user "admin" exists And user "admin" exists
When sending "GET" to "/cloud/users" When sending "GET" to "/cloud/users"
And users returned are Then users returned are
| brand-new-user | | brand-new-user |
| admin | | admin |
Scenario: Edit a user Scenario: Edit a user
Given As an "admin" Given As an "admin"
And user "brand-new-user" exists And user "brand-new-user" exists
@ -62,6 +60,165 @@ Feature: provisioning
And the HTTP status code should be "200" And the HTTP status code should be "200"
And user "brand-new-user" exists 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: 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: 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: 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"
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 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: 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 Scenario: Delete a user
Given As an "admin" Given As an "admin"
@ -71,29 +228,6 @@ Feature: provisioning
And the HTTP status code should be "200" And the HTTP status code should be "200"
And user "brand-new-user" does not exist And user "brand-new-user" does not exist
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: 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: Delete a group Scenario: Delete a group
Given As an "admin" Given As an "admin"
And group "new-group" exists And group "new-group" exists