summaryrefslogtreecommitdiffstats
path: root/build/integration/features/bootstrap/FederationContext.php
blob: 4e8e79ba63efe0baf5946012530d2b5fc55e5521 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php

use Behat\Behat\Context\Context;
use Behat\Behat\Context\SnippetAcceptingContext;
use GuzzleHttp\Client;
use GuzzleHttp\Message\ResponseInterface;

require __DIR__ . '/../../vendor/autoload.php';

/**
 * Federation context.
 */
class FederationContext implements Context, SnippetAcceptingContext {

	use Sharing;

	/**
	 * @When /^User "([^"]*)" from server "([^"]*)" shares "([^"]*)" with user "([^"]*)" from server "([^"]*)"$/
	 */
	public function federateSharing($userLocal, $serverLocal, $pathLocal, $userRemote, $serverRemote){
		if ($serverRemote == "REMOTE"){
			$shareWith = "$userRemote@" . substr($this->remoteBaseUrl, 0, -4);
		} elseif ($serverRemote == "LOCAL") {
			$shareWith = "$userRemote@" . substr($this->localBaseUrl, 0, -4);
		}
		$this->createShare($userLocal, $pathLocal, 6, $shareWith, null, null, null);
	}

	/**
	 * @When /^User "([^"]*)" from server "([^"]*)" accepts last pending share$/
	 */
	public function acceptLastPendingShare($user, $server){
		$this->usingServer($server);
		$this->asAn($user);
		$this->sendingToWith('GET', "/apps/files_sharing/api/v1/remote_shares/pending", null);
		$this->theHTTPStatusCodeShouldBe('200');
		$this->theOCSStatusCodeShouldBe('100');
		$share_id = $this->response->xml()->data[0]->element[0]->id;
		$this->sendingToWith('POST', "/apps/files_sharing/api/v1/remote_shares/pending/{$share_id}", null);
		$this->theHTTPStatusCodeShouldBe('200');
		$this->theOCSStatusCodeShouldBe('100');
	}

	/**
	 * @param string $app
	 * @param string $parameter
	 * @param string $value
	 */
	protected function modifyServerConfig($app, $parameter, $value) {
		$body = new \Behat\Gherkin\Node\TableNode([['value', $value]]);
		$this->sendingToWith('post', "/apps/testing/api/v1/app/{$app}/{$parameter}", $body);
		$this->theHTTPStatusCodeShouldBe('200');
		$this->theOCSStatusCodeShouldBe('100');
	}

}