Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/spreed.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Calviño Sánchez <danxuliu@gmail.com>2022-06-29 16:01:44 +0300
committerDaniel Calviño Sánchez <danxuliu@gmail.com>2022-06-29 17:08:57 +0300
commitb00cf0e38ce18e5aed46919f0bf3cee04f6e585e (patch)
treee48cf3ffdb591658da1f20a88efbd38ef50b2bdc
parent4d3dcf866d44a4f5b5a5ee072bb2bda5f58785a8 (diff)
Add schemes to turn:delete OCC commandadd-schemes-to-turn-commands
As no scheme could be set when deleting a TURN server all TURN servers matching the server and protocols were deleted regardless of their scheme. Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
-rw-r--r--lib/Command/Turn/Delete.php11
-rw-r--r--tests/php/Command/Turn/DeleteTest.php70
2 files changed, 75 insertions, 6 deletions
diff --git a/lib/Command/Turn/Delete.php b/lib/Command/Turn/Delete.php
index 7a0e93073..22db99827 100644
--- a/lib/Command/Turn/Delete.php
+++ b/lib/Command/Turn/Delete.php
@@ -44,6 +44,10 @@ class Delete extends Base {
->setName('talk:turn:delete')
->setDescription('Remove an existing TURN server.')
->addArgument(
+ 'schemes',
+ InputArgument::REQUIRED,
+ 'Schemes, can be turn or turns or turn,turns'
+ )->addArgument(
'server',
InputArgument::REQUIRED,
'A domain name, ex. turn.nextcloud.com'
@@ -55,6 +59,7 @@ class Delete extends Base {
}
protected function execute(InputInterface $input, OutputInterface $output): int {
+ $schemes = $input->getArgument('schemes');
$server = $input->getArgument('server');
$protocols = $input->getArgument('protocols');
@@ -66,9 +71,9 @@ class Delete extends Base {
}
$count = count($servers);
- // remove all occurrences which math $server and $protocols
- $servers = array_filter($servers, function ($s) use ($server, $protocols) {
- return $s['server'] !== $server || $s['protocols'] !== $protocols;
+ // remove all occurrences which match $schemes, $server and $protocols
+ $servers = array_filter($servers, function ($s) use ($schemes, $server, $protocols) {
+ return $s['schemes'] !== $schemes || $s['server'] !== $server || $s['protocols'] !== $protocols;
});
$servers = array_values($servers); // reindex
diff --git a/tests/php/Command/Turn/DeleteTest.php b/tests/php/Command/Turn/DeleteTest.php
index 3617e3341..d57d6d1d3 100644
--- a/tests/php/Command/Turn/DeleteTest.php
+++ b/tests/php/Command/Turn/DeleteTest.php
@@ -56,7 +56,9 @@ class DeleteTest extends TestCase {
public function testDeleteIfEmpty() {
$this->input->method('getArgument')
->willReturnCallback(function ($arg) {
- if ($arg === 'server') {
+ if ($arg === 'schemes') {
+ return 'turn,turns';
+ } elseif ($arg === 'server') {
return 'turn.example.com';
} elseif ($arg === 'protocols') {
return 'udp,tcp';
@@ -84,7 +86,9 @@ class DeleteTest extends TestCase {
public function testDelete() {
$this->input->method('getArgument')
->willReturnCallback(function ($arg) {
- if ($arg === 'server') {
+ if ($arg === 'schemes') {
+ return 'turn,turns';
+ } elseif ($arg === 'server') {
return 'turn2.example.com';
} elseif ($arg === 'protocols') {
return 'udp,tcp';
@@ -96,6 +100,7 @@ class DeleteTest extends TestCase {
->with('spreed', 'turn_servers')
->willReturn(json_encode([
[
+ 'schemes' => 'turn,turns',
'server' => 'turn1.example.com',
'secret' => 'my-test-secret-1',
'protocols' => 'udp,tcp'
@@ -108,6 +113,7 @@ class DeleteTest extends TestCase {
$this->equalTo('turn_servers'),
$this->equalTo(json_encode([
[
+ 'schemes' => 'turn,turns',
'server' => 'turn1.example.com',
'secret' => 'my-test-secret-1',
'protocols' => 'udp,tcp'
@@ -124,7 +130,9 @@ class DeleteTest extends TestCase {
public function testNothingToDelete() {
$this->input->method('getArgument')
->willReturnCallback(function ($arg) {
- if ($arg === 'server') {
+ if ($arg === 'schemes') {
+ return 'turn,turns';
+ } elseif ($arg === 'server') {
return 'turn4.example.com';
} elseif ($arg === 'protocols') {
return 'udp,tcp';
@@ -136,16 +144,19 @@ class DeleteTest extends TestCase {
->with('spreed', 'turn_servers')
->willReturn(json_encode([
[
+ 'schemes' => 'turn,turns',
'server' => 'turn1.example.com',
'secret' => 'my-test-secret-1',
'protocols' => 'udp,tcp'
],
[
+ 'schemes' => 'turn,turns',
'server' => 'turn2.example.com',
'secret' => 'my-test-secret-2',
'protocols' => 'udp,tcp'
],
[
+ 'schemes' => 'turn,turns',
'server' => 'turn3.example.com',
'secret' => 'my-test-secret-3',
'protocols' => 'udp,tcp'
@@ -158,16 +169,19 @@ class DeleteTest extends TestCase {
$this->equalTo('turn_servers'),
$this->equalTo(json_encode([
[
+ 'schemes' => 'turn,turns',
'server' => 'turn1.example.com',
'secret' => 'my-test-secret-1',
'protocols' => 'udp,tcp'
],
[
+ 'schemes' => 'turn,turns',
'server' => 'turn2.example.com',
'secret' => 'my-test-secret-2',
'protocols' => 'udp,tcp'
],
[
+ 'schemes' => 'turn,turns',
'server' => 'turn3.example.com',
'secret' => 'my-test-secret-3',
'protocols' => 'udp,tcp'
@@ -180,4 +194,54 @@ class DeleteTest extends TestCase {
$this->invokePrivate($this->command, 'execute', [$this->input, $this->output]);
}
+
+ public function testDeleteMatchingSchemes() {
+ $this->input->method('getArgument')
+ ->willReturnCallback(function ($arg) {
+ if ($arg === 'schemes') {
+ return 'turn,turns';
+ } elseif ($arg === 'server') {
+ return 'turn.example.com';
+ } elseif ($arg === 'protocols') {
+ return 'udp,tcp';
+ }
+ throw new \Exception();
+ });
+ $this->config->expects($this->once())
+ ->method('getAppValue')
+ ->with('spreed', 'turn_servers')
+ ->willReturn(json_encode([
+ [
+ 'schemes' => 'turn,turns',
+ 'server' => 'turn.example.com',
+ 'secret' => 'my-test-secret-1',
+ 'protocols' => 'udp,tcp'
+ ],
+ [
+ 'schemes' => 'turn',
+ 'server' => 'turn.example.com',
+ 'secret' => 'my-test-secret-1',
+ 'protocols' => 'udp,tcp'
+ ]
+ ]));
+ $this->config->expects($this->once())
+ ->method('setAppValue')
+ ->with(
+ $this->equalTo('spreed'),
+ $this->equalTo('turn_servers'),
+ $this->equalTo(json_encode([
+ [
+ 'schemes' => 'turn',
+ 'server' => 'turn.example.com',
+ 'secret' => 'my-test-secret-1',
+ 'protocols' => 'udp,tcp'
+ ]
+ ]))
+ );
+ $this->output->expects($this->once())
+ ->method('writeln')
+ ->with($this->equalTo('<info>Deleted turn.example.com.</info>'));
+
+ $this->invokePrivate($this->command, 'execute', [$this->input, $this->output]);
+ }
}