Skip to content

Commit e8cd226

Browse files
committed
Add integration tests for deleting federated shares
The federated server needs to be stopped during the tests, so it is now stopped in the FederationContext for each scenario instead of just once in the run.sh script. Signed-off-by: Daniel Calviño Sánchez <[email protected]>
1 parent 7a892a3 commit e8cd226

File tree

3 files changed

+96
-12
lines changed

3 files changed

+96
-12
lines changed

build/integration/features/bootstrap/FederationContext.php

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,28 @@ class FederationContext implements Context, SnippetAcceptingContext {
3838
use WebDav;
3939
use AppConfiguration;
4040

41+
/**
42+
* @var string
43+
*/
44+
private static $phpFederatedServerPid = '';
45+
46+
/**
47+
* @BeforeScenario
48+
* @AfterScenario
49+
*
50+
* The server is started also after the scenarios to ensure that it is
51+
* properly cleaned up if stopped.
52+
*/
53+
public function startFederatedServer() {
54+
if (self::$phpFederatedServerPid !== '') {
55+
return;
56+
}
57+
58+
$port = getenv('PORT_FED');
59+
60+
self::$phpFederatedServerPid = exec('php -S localhost:' . $port . ' -t ../../ >/dev/null & echo $!');
61+
}
62+
4163
/**
4264
* @Given /^User "([^"]*)" from server "(LOCAL|REMOTE)" shares "([^"]*)" with user "([^"]*)" from server "(LOCAL|REMOTE)"$/
4365
*
@@ -97,6 +119,19 @@ public function acceptLastPendingShare($user, $server) {
97119
$this->usingServer($previous);
98120
}
99121

122+
/**
123+
* @When /^remote server is stopped$/
124+
*/
125+
public function remoteServerIsStopped() {
126+
if (self::$phpFederatedServerPid === '') {
127+
return;
128+
}
129+
130+
exec('kill ' . self::$phpFederatedServerPid);
131+
132+
self::$phpFederatedServerPid = '';
133+
}
134+
100135
protected function resetAppConfigs() {
101136
$this->deleteServerConfig('files_sharing', 'incoming_server2server_group_share_enabled');
102137
$this->deleteServerConfig('files_sharing', 'outgoing_server2server_group_share_enabled');

build/integration/federation_features/federated.feature

Lines changed: 59 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -278,13 +278,64 @@ Feature: federated
278278

279279

280280

281+
Scenario: Delete federate share with another server
282+
Given Using server "LOCAL"
283+
And user "user0" exists
284+
Given Using server "REMOTE"
285+
And user "user1" exists
286+
# Rename file so it has a unique name in the target server (as the target
287+
# server may have its own /textfile0.txt" file)
288+
And User "user1" copies file "/textfile0.txt" to "/remote-share.txt"
289+
And User "user1" from server "REMOTE" shares "/remote-share.txt" with user "user0" from server "LOCAL"
290+
And Using server "LOCAL"
291+
And User "user0" from server "LOCAL" accepts last pending share
292+
And as "user0" the file "/remote-share.txt" exists
293+
And Using server "REMOTE"
294+
When As an "user1"
295+
And Deleting last share
296+
Then the OCS status code should be "100"
297+
And the HTTP status code should be "200"
298+
# Received remote shares can not be checked using the share API controller;
299+
# that the file no longer exists needs to be checked instead.
300+
And Using server "LOCAL"
301+
And as "user0" the file "/remote-share.txt" does not exist
281302

303+
Scenario: Delete federate share from another server
304+
Given Using server "LOCAL"
305+
And user "user0" exists
306+
Given Using server "REMOTE"
307+
And user "user1" exists
308+
# Rename file so it has a unique name in the target server (as the target
309+
# server may have its own /textfile0.txt" file)
310+
And User "user1" copies file "/textfile0.txt" to "/remote-share.txt"
311+
And User "user1" from server "REMOTE" shares "/remote-share.txt" with user "user0" from server "LOCAL"
312+
And As an "user1"
313+
And sending "GET" to "/apps/files_sharing/api/v1/shares"
314+
And the list of returned shares has 1 shares
315+
And Using server "LOCAL"
316+
And User "user0" from server "LOCAL" accepts last pending share
317+
# Received remote shares can not be deleted using the share API controller;
318+
# the file needs to be deleted instead.
319+
When User "user0" deletes file "/remote-share.txt"
320+
Then the HTTP status code should be "204"
321+
And Using server "REMOTE"
322+
And As an "user1"
323+
And sending "GET" to "/apps/files_sharing/api/v1/shares"
324+
And the list of returned shares has 0 shares
282325

283-
284-
285-
286-
287-
288-
289-
290-
326+
Scenario: Delete federate share from another server no longer reachable
327+
Given Using server "LOCAL"
328+
And user "user0" exists
329+
Given Using server "REMOTE"
330+
And user "user1" exists
331+
# Rename file so it has a unique name in the target server (as the target
332+
# server may have its own /textfile0.txt" file)
333+
And User "user1" copies file "/textfile0.txt" to "/remote-share.txt"
334+
And User "user1" from server "REMOTE" shares "/remote-share.txt" with user "user0" from server "LOCAL"
335+
And Using server "LOCAL"
336+
And User "user0" from server "LOCAL" accepts last pending share
337+
And remote server is stopped
338+
# Received remote shares can not be deleted using the share API controller;
339+
# the file needs to be deleted instead.
340+
When User "user0" deletes file "/remote-share.txt"
341+
Then the HTTP status code should be "204"

build/integration/run.sh

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,10 @@ php -S localhost:$PORT -t ../.. &
3838
PHPPID=$!
3939
echo $PHPPID
4040

41+
# The federated server is started and stopped by the tests themselves
4142
PORT_FED=$((8180 + $EXECUTOR_NUMBER))
4243
echo $PORT_FED
43-
php -S localhost:$PORT_FED -t ../.. &
44-
PHPPID_FED=$!
45-
echo $PHPPID_FED
44+
export PORT_FED
4645

4746
export TEST_SERVER_URL="http://localhost:$PORT/ocs/"
4847
export TEST_SERVER_FED_URL="http://localhost:$PORT_FED/ocs/"
@@ -65,7 +64,6 @@ vendor/bin/behat --strict -f junit -f pretty $TAGS $SCENARIO_TO_RUN
6564
RESULT=$?
6665

6766
kill $PHPPID
68-
kill $PHPPID_FED
6967

7068
if [ "$INSTALLED" == "true" ]; then
7169

0 commit comments

Comments
 (0)