Split the context so we don't reset the config on each test
This commit is contained in:
parent
c4b0a1cdfd
commit
cb56dfec6b
4 changed files with 82 additions and 57 deletions
|
@ -42,6 +42,16 @@ default:
|
|||
- admin
|
||||
- admin
|
||||
regular_user_password: 123456
|
||||
sharees:
|
||||
paths:
|
||||
- %paths.base%/../sharees_features
|
||||
contexts:
|
||||
- ShareesContext:
|
||||
baseUrl: http://localhost:8080/ocs/
|
||||
admin:
|
||||
- admin
|
||||
- admin
|
||||
regular_user_password: 123456
|
||||
|
||||
|
||||
|
||||
|
|
72
build/integration/features/bootstrap/ShareesContext.php
Normal file
72
build/integration/features/bootstrap/ShareesContext.php
Normal file
|
@ -0,0 +1,72 @@
|
|||
<?php
|
||||
|
||||
use Behat\Behat\Context\Context;
|
||||
use Behat\Behat\Context\SnippetAcceptingContext;
|
||||
use GuzzleHttp\Message\ResponseInterface;
|
||||
|
||||
require __DIR__ . '/../../vendor/autoload.php';
|
||||
|
||||
|
||||
/**
|
||||
* Features context.
|
||||
*/
|
||||
class ShareesContext implements Context, SnippetAcceptingContext {
|
||||
use Provisioning;
|
||||
use AppConfiguration;
|
||||
|
||||
/**
|
||||
* @When /^getting sharees for$/
|
||||
* @param \Behat\Gherkin\Node\TableNode $body
|
||||
*/
|
||||
public function whenGettingShareesFor($body) {
|
||||
$url = '/apps/files_sharing/api/v1/sharees';
|
||||
if ($body instanceof \Behat\Gherkin\Node\TableNode) {
|
||||
$parameters = [];
|
||||
foreach ($body->getRowsHash() as $key => $value) {
|
||||
$parameters[] = $key . '=' . $value;
|
||||
}
|
||||
if (!empty($parameters)) {
|
||||
$url .= '?' . implode('&', $parameters);
|
||||
}
|
||||
}
|
||||
|
||||
$this->sendingTo('GET', $url);
|
||||
}
|
||||
|
||||
/**
|
||||
* @Then /^"([^"]*)" sharees returned (are|is empty)$/
|
||||
* @param string $shareeType
|
||||
* @param string $isEmpty
|
||||
* @param \Behat\Gherkin\Node\TableNode|null $shareesList
|
||||
*/
|
||||
public function thenListOfSharees($shareeType, $isEmpty, $shareesList = null) {
|
||||
if ($isEmpty !== 'is empty') {
|
||||
$sharees = $shareesList->getRows();
|
||||
$respondedArray = $this->getArrayOfShareesResponded($this->response, $shareeType);
|
||||
PHPUnit_Framework_Assert::assertEquals($sharees, $respondedArray);
|
||||
} else {
|
||||
$respondedArray = $this->getArrayOfShareesResponded($this->response, $shareeType);
|
||||
PHPUnit_Framework_Assert::assertEmpty($respondedArray);
|
||||
}
|
||||
}
|
||||
|
||||
public function getArrayOfShareesResponded(ResponseInterface $response, $shareeType) {
|
||||
$elements = $response->xml()->data;
|
||||
$elements = json_decode(json_encode($elements), 1);
|
||||
if (strpos($shareeType, 'exact ') === 0) {
|
||||
$elements = $elements['exact'];
|
||||
$shareeType = substr($shareeType, 6);
|
||||
}
|
||||
|
||||
$sharees = [];
|
||||
foreach ($elements[$shareeType] as $element) {
|
||||
$sharees[] = [$element['label'], $element['value']['shareType'], $element['value']['shareWith']];
|
||||
}
|
||||
return $sharees;
|
||||
}
|
||||
|
||||
protected function resetAppConfigs() {
|
||||
$this->modifyServerConfig('core', 'shareapi_only_share_with_group_members', 'no');
|
||||
$this->modifyServerConfig('core', 'shareapi_allow_share_dialog_user_enumeration', 'yes');
|
||||
}
|
||||
}
|
|
@ -9,7 +9,6 @@ require __DIR__ . '/../../vendor/autoload.php';
|
|||
|
||||
trait Sharing {
|
||||
use Provisioning;
|
||||
use AppConfiguration;
|
||||
|
||||
/** @var int */
|
||||
private $sharingApiVersion = 1;
|
||||
|
@ -470,61 +469,5 @@ trait Sharing {
|
|||
throw new \Exception('Expected the same link share to be returned');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @When /^getting sharees for$/
|
||||
* @param \Behat\Gherkin\Node\TableNode $body
|
||||
*/
|
||||
public function whenGettingShareesFor($body) {
|
||||
$url = '/apps/files_sharing/api/v1/sharees';
|
||||
if ($body instanceof \Behat\Gherkin\Node\TableNode) {
|
||||
$parameters = [];
|
||||
foreach ($body->getRowsHash() as $key => $value) {
|
||||
$parameters[] = $key . '=' . $value;
|
||||
}
|
||||
if (!empty($parameters)) {
|
||||
$url .= '?' . implode('&', $parameters);
|
||||
}
|
||||
}
|
||||
|
||||
$this->sendingTo('GET', $url);
|
||||
}
|
||||
|
||||
/**
|
||||
* @Then /^"([^"]*)" sharees returned (are|is empty)$/
|
||||
* @param string $shareeType
|
||||
* @param string $isEmpty
|
||||
* @param \Behat\Gherkin\Node\TableNode|null $shareesList
|
||||
*/
|
||||
public function thenListOfSharees($shareeType, $isEmpty, $shareesList = null) {
|
||||
if ($isEmpty !== 'is empty') {
|
||||
$sharees = $shareesList->getRows();
|
||||
$respondedArray = $this->getArrayOfShareesResponded($this->response, $shareeType);
|
||||
PHPUnit_Framework_Assert::assertEquals($sharees, $respondedArray);
|
||||
} else {
|
||||
$respondedArray = $this->getArrayOfShareesResponded($this->response, $shareeType);
|
||||
PHPUnit_Framework_Assert::assertEmpty($respondedArray);
|
||||
}
|
||||
}
|
||||
|
||||
public function getArrayOfShareesResponded(ResponseInterface $response, $shareeType) {
|
||||
$elements = $response->xml()->data;
|
||||
$elements = json_decode(json_encode($elements), 1);
|
||||
if (strpos($shareeType, 'exact ') === 0) {
|
||||
$elements = $elements['exact'];
|
||||
$shareeType = substr($shareeType, 6);
|
||||
}
|
||||
|
||||
$sharees = [];
|
||||
foreach ($elements[$shareeType] as $element) {
|
||||
$sharees[] = [$element['label'], $element['value']['shareType'], $element['value']['shareWith']];
|
||||
}
|
||||
return $sharees;
|
||||
}
|
||||
|
||||
protected function resetAppConfigs() {
|
||||
$this->modifyServerConfig('core', 'shareapi_only_share_with_group_members', 'no');
|
||||
$this->modifyServerConfig('core', 'shareapi_allow_share_dialog_user_enumeration', 'yes');
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue