Added more tests and fixed a problem with asort which was returning false positives
This commit is contained in:
parent
64dc222ce5
commit
488728a0fa
|
@ -9,6 +9,7 @@ default:
|
|||
admin:
|
||||
- admin
|
||||
- admin
|
||||
regular_user_password: 123456
|
||||
|
||||
ci:
|
||||
formatter:
|
||||
|
|
|
@ -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,35 @@ 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));
|
||||
sort($usersSimplified);
|
||||
sort($respondedArray);
|
||||
PHPUnit_Framework_Assert::assertEquals($usersSimplified, $respondedArray);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -94,13 +115,40 @@ 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));
|
||||
sort($groups);
|
||||
sort($respondedArray);
|
||||
PHPUnit_Framework_Assert::assertEquals($groupsSimplified, $respondedArray);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @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);
|
||||
sort($groups);
|
||||
sort($respondedArray);
|
||||
PHPUnit_Framework_Assert::assertEquals($groupsSimplified, $respondedArray);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @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 +192,86 @@ 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);
|
||||
sort($groups);
|
||||
sort($respondedArray);
|
||||
PHPUnit_Framework_Assert::assertEquals($groups, $respondedArray);
|
||||
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);
|
||||
sort($groups);
|
||||
sort($respondedArray);
|
||||
PHPUnit_Framework_Assert::assertNotEquals($groups, $respondedArray);
|
||||
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 +361,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();
|
||||
|
|
|
@ -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
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue