fix tests
This commit is contained in:
parent
8106631452
commit
e232b2a723
|
@ -196,4 +196,47 @@ class AuthTest extends TestCase
|
|||
$this->assertEquals(false, Auth::isAppUser(['role:'.Auth::USER_ROLE_OWNER => true, 'role:'.Auth::USER_ROLE_GUEST => true]));
|
||||
$this->assertEquals(false, Auth::isAppUser(['role:'.Auth::USER_ROLE_OWNER => true, 'role:'.Auth::USER_ROLE_ADMIN => true, 'role:'.Auth::USER_ROLE_DEVELOPER => true]));
|
||||
}
|
||||
|
||||
public function testGuestRoles()
|
||||
{
|
||||
$user = new Document([
|
||||
'$id' => ''
|
||||
]);
|
||||
|
||||
$roles = Auth::getRoles($user);
|
||||
$this->assertCount(0, $roles);
|
||||
$this->assertEmpty($roles);
|
||||
}
|
||||
|
||||
public function testUserRoles()
|
||||
{
|
||||
$user = new Document([
|
||||
'$id' => '123',
|
||||
'memberships' => [
|
||||
[
|
||||
'teamId' => 'abc',
|
||||
'roles' => [
|
||||
'administrator',
|
||||
'moderator'
|
||||
]
|
||||
],
|
||||
[
|
||||
'teamId' => 'def',
|
||||
'roles' => [
|
||||
'guest'
|
||||
]
|
||||
]
|
||||
]
|
||||
]);
|
||||
|
||||
$roles = Auth::getRoles($user);
|
||||
|
||||
$this->assertCount(6, $roles);
|
||||
$this->assertContains('user:123', $roles);
|
||||
$this->assertContains('team:abc', $roles);
|
||||
$this->assertContains('team:abc/administrator', $roles);
|
||||
$this->assertContains('team:abc/moderator', $roles);
|
||||
$this->assertContains('team:def', $roles);
|
||||
$this->assertContains('team:def/guest', $roles);
|
||||
}
|
||||
}
|
||||
|
|
73
tests/unit/Event/RealtimeTest.php
Normal file
73
tests/unit/Event/RealtimeTest.php
Normal file
|
@ -0,0 +1,73 @@
|
|||
<?php
|
||||
|
||||
namespace Appwrite\Tests;
|
||||
|
||||
use Appwrite\Database\Document;
|
||||
use Appwrite\Event\Event;
|
||||
use Appwrite\Event\Realtime;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Utopia\App;
|
||||
|
||||
class RealtimeTest extends TestCase
|
||||
{
|
||||
public function testConvertChannelsGuest()
|
||||
{
|
||||
$user = new Document([
|
||||
'$id' => ''
|
||||
]);
|
||||
$channels = [
|
||||
0 => 'files',
|
||||
1 => 'documents',
|
||||
2 => 'documents.789',
|
||||
3 => 'account',
|
||||
4 => 'account.456'
|
||||
];
|
||||
|
||||
$channels = Realtime::convertChannels($channels, $user);
|
||||
$this->assertCount(3, $channels);
|
||||
$this->assertArrayHasKey('files', $channels);
|
||||
$this->assertArrayHasKey('documents', $channels);
|
||||
$this->assertArrayHasKey('documents.789', $channels);
|
||||
$this->assertArrayNotHasKey('account', $channels);
|
||||
$this->assertArrayNotHasKey('account.456', $channels);
|
||||
}
|
||||
|
||||
public function testConvertChannelsUser()
|
||||
{
|
||||
$user = new Document([
|
||||
'$id' => '123',
|
||||
'memberships' => [
|
||||
[
|
||||
'teamId' => 'abc',
|
||||
'roles' => [
|
||||
'administrator',
|
||||
'moderator'
|
||||
]
|
||||
],
|
||||
[
|
||||
'teamId' => 'def',
|
||||
'roles' => [
|
||||
'guest'
|
||||
]
|
||||
]
|
||||
]
|
||||
]);
|
||||
$channels = [
|
||||
0 => 'files',
|
||||
1 => 'documents',
|
||||
2 => 'documents.789',
|
||||
3 => 'account',
|
||||
4 => 'account.456'
|
||||
];
|
||||
|
||||
$channels = Realtime::convertChannels($channels, $user);
|
||||
|
||||
$this->assertCount(4, $channels);
|
||||
$this->assertArrayHasKey('files', $channels);
|
||||
$this->assertArrayHasKey('documents', $channels);
|
||||
$this->assertArrayHasKey('documents.789', $channels);
|
||||
$this->assertArrayHasKey('account.123', $channels);
|
||||
$this->assertArrayNotHasKey('account', $channels);
|
||||
$this->assertArrayNotHasKey('account.456', $channels);
|
||||
}
|
||||
}
|
|
@ -2,19 +2,21 @@
|
|||
|
||||
namespace Appwrite\Tests;
|
||||
|
||||
use Appwrite\Auth\Auth;
|
||||
use Appwrite\Database\Document;
|
||||
use Appwrite\Realtime;
|
||||
use Appwrite\Event\Realtime as EventRealtime;
|
||||
use Appwrite\Messaging;
|
||||
use Appwrite\Messaging\Adapter\Realtime;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class RealtimeChannelsTest extends TestCase
|
||||
class MessagingChannelsTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* Configures how many Connections the Test should Mock.
|
||||
*/
|
||||
public $connectionsPerChannel = 10;
|
||||
|
||||
public $connections = [];
|
||||
public $subscriptions = [];
|
||||
public Realtime $realtime;
|
||||
public $connectionsCount = 0;
|
||||
public $connectionsAuthenticated = 0;
|
||||
public $connectionsGuest = 0;
|
||||
|
@ -41,12 +43,14 @@ class RealtimeChannelsTest extends TestCase
|
|||
$this->connectionsGuest = count($this->allChannels) * $this->connectionsPerChannel;
|
||||
$this->connectionsTotal = $this->connectionsAuthenticated + $this->connectionsGuest;
|
||||
|
||||
$this->realtime = new Realtime();
|
||||
|
||||
/**
|
||||
* Add Authenticated Clients
|
||||
*/
|
||||
for ($i = 0; $i < $this->connectionsPerChannel; $i++) {
|
||||
foreach ($this->allChannels as $index => $channel) {
|
||||
Realtime\Parser::setUser(new Document([
|
||||
$user = new Document([
|
||||
'$id' => 'user' . $this->connectionsCount,
|
||||
'memberships' => [
|
||||
[
|
||||
|
@ -56,16 +60,19 @@ class RealtimeChannelsTest extends TestCase
|
|||
]
|
||||
]
|
||||
]
|
||||
]));
|
||||
$roles = Realtime\Parser::getRoles();
|
||||
$parsedChannels = Realtime\Parser::parseChannels([0 => $channel]);
|
||||
]);
|
||||
|
||||
Realtime\Parser::subscribe(
|
||||
$roles = [
|
||||
'role:' . (($user->isEmpty()) ? Auth::USER_ROLE_GUEST : Auth::USER_ROLE_MEMBER),
|
||||
...Auth::getRoles($user)
|
||||
];
|
||||
|
||||
$parsedChannels = EventRealtime::convertChannels([0 => $channel], $user);
|
||||
|
||||
$this->realtime->subscribe(
|
||||
'1',
|
||||
$this->connectionsCount,
|
||||
$roles,
|
||||
$this->subscriptions,
|
||||
$this->connections,
|
||||
$parsedChannels
|
||||
);
|
||||
|
||||
|
@ -78,19 +85,21 @@ class RealtimeChannelsTest extends TestCase
|
|||
*/
|
||||
for ($i = 0; $i < $this->connectionsPerChannel; $i++) {
|
||||
foreach ($this->allChannels as $index => $channel) {
|
||||
Realtime\Parser::setUser(new Document([
|
||||
$user = new Document([
|
||||
'$id' => ''
|
||||
]));
|
||||
]);
|
||||
|
||||
$roles = Realtime\Parser::getRoles();
|
||||
$parsedChannels = Realtime\Parser::parseChannels([0 => $channel]);
|
||||
$roles = [
|
||||
'role:' . (($user->isEmpty()) ? Auth::USER_ROLE_GUEST : Auth::USER_ROLE_MEMBER),
|
||||
...Auth::getRoles($user)
|
||||
];
|
||||
|
||||
Realtime\Parser::subscribe(
|
||||
$parsedChannels = EventRealtime::convertChannels([0 => $channel], $user);
|
||||
|
||||
$this->realtime->subscribe(
|
||||
'1',
|
||||
$this->connectionsCount,
|
||||
$roles,
|
||||
$this->subscriptions,
|
||||
$this->connections,
|
||||
$parsedChannels
|
||||
);
|
||||
|
||||
|
@ -101,8 +110,7 @@ class RealtimeChannelsTest extends TestCase
|
|||
|
||||
public function tearDown(): void
|
||||
{
|
||||
$this->connections = [];
|
||||
$this->subscriptions = [];
|
||||
unset($this->realtime);
|
||||
$this->connectionsCount = 0;
|
||||
}
|
||||
|
||||
|
@ -111,7 +119,7 @@ class RealtimeChannelsTest extends TestCase
|
|||
/**
|
||||
* Check for 1 project.
|
||||
*/
|
||||
$this->assertCount(1, $this->subscriptions);
|
||||
$this->assertCount(1, $this->realtime->subscriptions);
|
||||
|
||||
/**
|
||||
* Check for correct amount of subscriptions:
|
||||
|
@ -121,28 +129,28 @@ class RealtimeChannelsTest extends TestCase
|
|||
* - 1 role:guest
|
||||
* - 1 role:member
|
||||
*/
|
||||
$this->assertCount(($this->connectionsAuthenticated + (3 * $this->connectionsPerChannel) + 2), $this->subscriptions['1']);
|
||||
$this->assertCount(($this->connectionsAuthenticated + (3 * $this->connectionsPerChannel) + 2), $this->realtime->subscriptions['1']);
|
||||
|
||||
/**
|
||||
* Check for connections
|
||||
* - Authenticated
|
||||
* - Guests
|
||||
*/
|
||||
$this->assertCount($this->connectionsTotal, $this->connections);
|
||||
$this->assertCount($this->connectionsTotal, $this->realtime->connections);
|
||||
|
||||
$this->realtime->unsubscribe(-1);
|
||||
|
||||
Realtime\Parser::unsubscribe(-1, $this->subscriptions, $this->connections);
|
||||
|
||||
$this->assertCount($this->connectionsTotal, $this->connections);
|
||||
$this->assertCount(($this->connectionsAuthenticated + (3 * $this->connectionsPerChannel) + 2), $this->subscriptions['1']);
|
||||
$this->assertCount($this->connectionsTotal, $this->realtime->connections);
|
||||
$this->assertCount(($this->connectionsAuthenticated + (3 * $this->connectionsPerChannel) + 2), $this->realtime->subscriptions['1']);
|
||||
|
||||
for ($i = 0; $i < $this->connectionsCount; $i++) {
|
||||
Realtime\Parser::unsubscribe($i, $this->subscriptions, $this->connections);
|
||||
$this->realtime->unsubscribe($i);
|
||||
|
||||
$this->assertCount(($this->connectionsCount - $i - 1), $this->connections);
|
||||
$this->assertCount(($this->connectionsCount - $i - 1), $this->realtime->connections);
|
||||
}
|
||||
|
||||
$this->assertEmpty($this->connections);
|
||||
$this->assertEmpty($this->subscriptions);
|
||||
$this->assertEmpty($this->realtime->connections);
|
||||
$this->assertEmpty($this->realtime->subscriptions);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -161,10 +169,7 @@ class RealtimeChannelsTest extends TestCase
|
|||
]
|
||||
];
|
||||
|
||||
$receivers = Realtime\Parser::identifyReceivers(
|
||||
$event,
|
||||
$this->subscriptions
|
||||
);
|
||||
$receivers = $this->realtime->getReceivers($event);
|
||||
|
||||
/**
|
||||
* Every Client subscribed to the Wildcard should receive this event.
|
||||
|
@ -197,10 +202,7 @@ class RealtimeChannelsTest extends TestCase
|
|||
]
|
||||
];
|
||||
|
||||
$receivers = Realtime\Parser::identifyReceivers(
|
||||
$event,
|
||||
$this->subscriptions
|
||||
);
|
||||
$receivers = $this->realtime->getReceivers($event);
|
||||
|
||||
/**
|
||||
* Every Role subscribed to a Channel should receive this event.
|
||||
|
@ -234,10 +236,7 @@ class RealtimeChannelsTest extends TestCase
|
|||
]
|
||||
];
|
||||
|
||||
$receivers = Realtime\Parser::identifyReceivers(
|
||||
$event,
|
||||
$this->subscriptions
|
||||
);
|
||||
$receivers = $this->realtime->getReceivers($event);
|
||||
|
||||
/**
|
||||
* Every Client subscribed to a Channel should receive this event.
|
||||
|
@ -271,10 +270,7 @@ class RealtimeChannelsTest extends TestCase
|
|||
]
|
||||
];
|
||||
|
||||
$receivers = Realtime\Parser::identifyReceivers(
|
||||
$event,
|
||||
$this->subscriptions
|
||||
);
|
||||
$receivers = $this->realtime->getReceivers($event);
|
||||
|
||||
/**
|
||||
* Every Team Member should receive this event.
|
||||
|
@ -300,10 +296,7 @@ class RealtimeChannelsTest extends TestCase
|
|||
]
|
||||
];
|
||||
|
||||
$receivers = Realtime\Parser::identifyReceivers(
|
||||
$event,
|
||||
$this->subscriptions
|
||||
);
|
||||
$receivers = $this->realtime->getReceivers($event);
|
||||
|
||||
/**
|
||||
* Only 1 Team Member of a role should have access to a specific channel.
|
128
tests/unit/Messaging/MessagingGuestTest.php
Normal file
128
tests/unit/Messaging/MessagingGuestTest.php
Normal file
|
@ -0,0 +1,128 @@
|
|||
<?php
|
||||
|
||||
namespace Appwrite\Tests;
|
||||
|
||||
use Appwrite\Messaging\Adapter\Realtime;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class MessagingGuestTest extends TestCase
|
||||
{
|
||||
public function testGuest()
|
||||
{
|
||||
$realtime = new Realtime();
|
||||
|
||||
$realtime->subscribe(
|
||||
'1',
|
||||
1,
|
||||
['role:guest'],
|
||||
['files' => 0, 'documents' => 0, 'documents.789' => 0, 'account.123' => 0]
|
||||
);
|
||||
|
||||
$event = [
|
||||
'project' => '1',
|
||||
'permissions' => ['*'],
|
||||
'data' => [
|
||||
'channels' => [
|
||||
0 => 'documents',
|
||||
1 => 'documents',
|
||||
]
|
||||
]
|
||||
];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
|
||||
$this->assertCount(1, $receivers);
|
||||
$this->assertEquals(1, $receivers[0]);
|
||||
|
||||
$event['permissions'] = ['role:guest'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
|
||||
$this->assertCount(1, $receivers);
|
||||
$this->assertEquals(1, $receivers[0]);
|
||||
|
||||
$event['permissions'] = ['role:member'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
$event['permissions'] = ['user:123'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
$event['permissions'] = ['team:abc'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
$event['permissions'] = ['team:abc/administrator'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
$event['permissions'] = ['team:abc/god'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
$event['permissions'] = ['team:def'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
$event['permissions'] = ['team:def/guest'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
$event['permissions'] = ['user:456'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
$event['permissions'] = ['team:def/member'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
$event['permissions'] = ['*'];
|
||||
$event['data']['channels'] = ['documents.123'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
$event['data']['channels'] = ['documents.789'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
|
||||
$this->assertCount(1, $receivers);
|
||||
$this->assertEquals(1, $receivers[0]);
|
||||
|
||||
$event['project'] = '2';
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
$realtime->unsubscribe(2);
|
||||
|
||||
$this->assertCount(1, $realtime->connections);
|
||||
$this->assertCount(1, $realtime->subscriptions['1']);
|
||||
|
||||
$realtime->unsubscribe(1);
|
||||
|
||||
$this->assertEmpty($realtime->connections);
|
||||
$this->assertEmpty($realtime->subscriptions);
|
||||
}
|
||||
}
|
135
tests/unit/Messaging/MessagingTest.php
Normal file
135
tests/unit/Messaging/MessagingTest.php
Normal file
|
@ -0,0 +1,135 @@
|
|||
<?php
|
||||
|
||||
namespace Appwrite\Tests;
|
||||
|
||||
use Appwrite\Messaging\Adapter\Realtime;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class MessagingTest extends TestCase
|
||||
{
|
||||
public function setUp(): void
|
||||
{
|
||||
}
|
||||
|
||||
public function tearDown(): void
|
||||
{
|
||||
}
|
||||
|
||||
public function testUser()
|
||||
{
|
||||
$realtime = new Realtime();
|
||||
|
||||
$realtime->subscribe(
|
||||
'1',
|
||||
1,
|
||||
['user:123', 'role:member', 'team:abc', 'team:abc/administrator', 'team:abc/moderator', 'team:def', 'team:def/guest'],
|
||||
['files' => 0, 'documents' => 0, 'documents.789' => 0, 'account.123' => 0]
|
||||
);
|
||||
|
||||
$event = [
|
||||
'project' => '1',
|
||||
'permissions' => ['*'],
|
||||
'data' => [
|
||||
'channels' => [
|
||||
0 => 'account.123',
|
||||
]
|
||||
]
|
||||
];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
|
||||
$this->assertCount(1, $receivers);
|
||||
$this->assertEquals(1, $receivers[0]);
|
||||
|
||||
$event['permissions'] = ['role:member'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
|
||||
$this->assertCount(1, $receivers);
|
||||
$this->assertEquals(1, $receivers[0]);
|
||||
|
||||
$event['permissions'] = ['user:123'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
|
||||
$this->assertCount(1, $receivers);
|
||||
$this->assertEquals(1, $receivers[0]);
|
||||
|
||||
$event['permissions'] = ['team:abc'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
|
||||
$this->assertCount(1, $receivers);
|
||||
$this->assertEquals(1, $receivers[0]);
|
||||
|
||||
$event['permissions'] = ['team:abc/administrator'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
|
||||
$this->assertCount(1, $receivers);
|
||||
$this->assertEquals(1, $receivers[0]);
|
||||
|
||||
$event['permissions'] = ['team:abc/moderator'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
|
||||
$this->assertCount(1, $receivers);
|
||||
$this->assertEquals(1, $receivers[0]);
|
||||
|
||||
$event['permissions'] = ['team:def'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
|
||||
$this->assertCount(1, $receivers);
|
||||
$this->assertEquals(1, $receivers[0]);
|
||||
|
||||
$event['permissions'] = ['team:def/guest'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
|
||||
$this->assertCount(1, $receivers);
|
||||
$this->assertEquals(1, $receivers[0]);
|
||||
|
||||
$event['permissions'] = ['user:456'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
$event['permissions'] = ['team:def/member'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
$event['permissions'] = ['*'];
|
||||
$event['data']['channels'] = ['documents.123'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
$event['data']['channels'] = ['documents.789'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
|
||||
$this->assertCount(1, $receivers);
|
||||
$this->assertEquals(1, $receivers[0]);
|
||||
|
||||
$event['project'] = '2';
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
$realtime->unsubscribe(2);
|
||||
|
||||
$this->assertCount(1, $realtime->connections);
|
||||
$this->assertCount(7, $realtime->subscriptions['1']);
|
||||
|
||||
$realtime->unsubscribe(1);
|
||||
|
||||
$this->assertEmpty($realtime->connections);
|
||||
$this->assertEmpty($realtime->subscriptions);
|
||||
}
|
||||
}
|
|
@ -1,191 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace Appwrite\Tests;
|
||||
|
||||
use Appwrite\Database\Document;
|
||||
use Appwrite\Realtime;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class RealtimeGuestTest extends TestCase
|
||||
{
|
||||
public $connections = [];
|
||||
public $subscriptions = [];
|
||||
|
||||
public function testGuest()
|
||||
{
|
||||
Realtime\Parser::setUser(new Document([
|
||||
'$id' => ''
|
||||
]));
|
||||
|
||||
$roles = Realtime\Parser::getRoles();
|
||||
$this->assertCount(1, $roles);
|
||||
$this->assertContains('role:guest', $roles);
|
||||
|
||||
$channels = [
|
||||
0 => 'files',
|
||||
1 => 'documents',
|
||||
2 => 'documents.789',
|
||||
3 => 'account',
|
||||
4 => 'account.456'
|
||||
];
|
||||
|
||||
$channels = Realtime\Parser::parseChannels($channels);
|
||||
$this->assertCount(3, $channels);
|
||||
$this->assertArrayHasKey('files', $channels);
|
||||
$this->assertArrayHasKey('documents', $channels);
|
||||
$this->assertArrayHasKey('documents.789', $channels);
|
||||
$this->assertArrayNotHasKey('account', $channels);
|
||||
$this->assertArrayNotHasKey('account.456', $channels);
|
||||
|
||||
Realtime\Parser::subscribe('1', 1, $roles, $this->subscriptions, $this->connections, $channels);
|
||||
|
||||
$event = [
|
||||
'project' => '1',
|
||||
'permissions' => ['*'],
|
||||
'data' => [
|
||||
'channels' => [
|
||||
0 => 'documents',
|
||||
1 => 'documents',
|
||||
]
|
||||
]
|
||||
];
|
||||
|
||||
$receivers = Realtime\Parser::identifyReceivers(
|
||||
$event,
|
||||
$this->subscriptions
|
||||
);
|
||||
|
||||
$this->assertCount(1, $receivers);
|
||||
$this->assertEquals(1, $receivers[0]);
|
||||
|
||||
$event['permissions'] = ['role:guest'];
|
||||
|
||||
$receivers = Realtime\Parser::identifyReceivers(
|
||||
$event,
|
||||
$this->subscriptions
|
||||
);
|
||||
|
||||
$this->assertCount(1, $receivers);
|
||||
$this->assertEquals(1, $receivers[0]);
|
||||
|
||||
$event['permissions'] = ['role:member'];
|
||||
|
||||
$receivers = Realtime\Parser::identifyReceivers(
|
||||
$event,
|
||||
$this->subscriptions
|
||||
);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
$event['permissions'] = ['user:123'];
|
||||
|
||||
$receivers = Realtime\Parser::identifyReceivers(
|
||||
$event,
|
||||
$this->subscriptions
|
||||
);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
$event['permissions'] = ['team:abc'];
|
||||
|
||||
$receivers = Realtime\Parser::identifyReceivers(
|
||||
$event,
|
||||
$this->subscriptions
|
||||
);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
$event['permissions'] = ['team:abc/administrator'];
|
||||
|
||||
$receivers = Realtime\Parser::identifyReceivers(
|
||||
$event,
|
||||
$this->subscriptions
|
||||
);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
$event['permissions'] = ['team:abc/god'];
|
||||
|
||||
$receivers = Realtime\Parser::identifyReceivers(
|
||||
$event,
|
||||
$this->subscriptions
|
||||
);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
$event['permissions'] = ['team:def'];
|
||||
|
||||
$receivers = Realtime\Parser::identifyReceivers(
|
||||
$event,
|
||||
$this->subscriptions
|
||||
);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
$event['permissions'] = ['team:def/guest'];
|
||||
|
||||
$receivers = Realtime\Parser::identifyReceivers(
|
||||
$event,
|
||||
$this->subscriptions
|
||||
);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
$event['permissions'] = ['user:456'];
|
||||
|
||||
$receivers = Realtime\Parser::identifyReceivers(
|
||||
$event,
|
||||
$this->subscriptions
|
||||
);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
$event['permissions'] = ['team:def/member'];
|
||||
|
||||
$receivers = Realtime\Parser::identifyReceivers(
|
||||
$event,
|
||||
$this->subscriptions
|
||||
);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
$event['permissions'] = ['*'];
|
||||
$event['data']['channels'] = ['documents.123'];
|
||||
|
||||
$receivers = Realtime\Parser::identifyReceivers(
|
||||
$event,
|
||||
$this->subscriptions
|
||||
);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
$event['data']['channels'] = ['documents.789'];
|
||||
|
||||
$receivers = Realtime\Parser::identifyReceivers(
|
||||
$event,
|
||||
$this->subscriptions
|
||||
);
|
||||
|
||||
$this->assertCount(1, $receivers);
|
||||
$this->assertEquals(1, $receivers[0]);
|
||||
|
||||
$event['project'] = '2';
|
||||
|
||||
$receivers = Realtime\Parser::identifyReceivers(
|
||||
$event,
|
||||
$this->subscriptions
|
||||
);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
Realtime\Parser::unsubscribe(2, $this->subscriptions, $this->connections);
|
||||
|
||||
$this->assertCount(1, $this->connections);
|
||||
$this->assertCount(1, $this->subscriptions['1']);
|
||||
|
||||
Realtime\Parser::unsubscribe(1, $this->subscriptions, $this->connections);
|
||||
|
||||
$this->assertEmpty($this->connections);
|
||||
$this->assertEmpty($this->subscriptions);
|
||||
}
|
||||
}
|
|
@ -1,220 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace Appwrite\Tests;
|
||||
|
||||
use Appwrite\Database\Document;
|
||||
use Appwrite\Realtime;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class RealtimeTest extends TestCase
|
||||
{
|
||||
public $connections = [];
|
||||
public $subscriptions = [];
|
||||
|
||||
public function setUp(): void
|
||||
{
|
||||
}
|
||||
|
||||
public function tearDown(): void
|
||||
{
|
||||
}
|
||||
|
||||
public function testUser()
|
||||
{
|
||||
Realtime\Parser::setUser(new Document([
|
||||
'$id' => '123',
|
||||
'memberships' => [
|
||||
[
|
||||
'teamId' => 'abc',
|
||||
'roles' => [
|
||||
'administrator',
|
||||
'god'
|
||||
]
|
||||
],
|
||||
[
|
||||
'teamId' => 'def',
|
||||
'roles' => [
|
||||
'guest'
|
||||
]
|
||||
]
|
||||
]
|
||||
]));
|
||||
|
||||
$roles = Realtime\Parser::getRoles();
|
||||
|
||||
$this->assertCount(7, $roles);
|
||||
$this->assertContains('user:123', $roles);
|
||||
$this->assertContains('role:member', $roles);
|
||||
$this->assertContains('team:abc', $roles);
|
||||
$this->assertContains('team:abc/administrator', $roles);
|
||||
$this->assertContains('team:abc/god', $roles);
|
||||
$this->assertContains('team:def', $roles);
|
||||
$this->assertContains('team:def/guest', $roles);
|
||||
|
||||
$channels = [
|
||||
0 => 'files',
|
||||
1 => 'documents',
|
||||
2 => 'documents.789',
|
||||
3 => 'account',
|
||||
4 => 'account.456'
|
||||
];
|
||||
|
||||
$channels = Realtime\Parser::parseChannels($channels);
|
||||
|
||||
$this->assertCount(4, $channels);
|
||||
$this->assertArrayHasKey('files', $channels);
|
||||
$this->assertArrayHasKey('documents', $channels);
|
||||
$this->assertArrayHasKey('documents.789', $channels);
|
||||
$this->assertArrayHasKey('account.123', $channels);
|
||||
$this->assertArrayNotHasKey('account', $channels);
|
||||
$this->assertArrayNotHasKey('account.456', $channels);
|
||||
|
||||
Realtime\Parser::subscribe('1', 1, $roles, $this->subscriptions, $this->connections, $channels);
|
||||
|
||||
$event = [
|
||||
'project' => '1',
|
||||
'permissions' => ['*'],
|
||||
'data' => [
|
||||
'channels' => [
|
||||
0 => 'account.123',
|
||||
]
|
||||
]
|
||||
];
|
||||
|
||||
$receivers = Realtime\Parser::identifyReceivers(
|
||||
$event,
|
||||
$this->subscriptions
|
||||
);
|
||||
|
||||
$this->assertCount(1, $receivers);
|
||||
$this->assertEquals(1, $receivers[0]);
|
||||
|
||||
$event['permissions'] = ['role:member'];
|
||||
|
||||
$receivers = Realtime\Parser::identifyReceivers(
|
||||
$event,
|
||||
$this->subscriptions
|
||||
);
|
||||
|
||||
$this->assertCount(1, $receivers);
|
||||
$this->assertEquals(1, $receivers[0]);
|
||||
|
||||
$event['permissions'] = ['user:123'];
|
||||
|
||||
$receivers = Realtime\Parser::identifyReceivers(
|
||||
$event,
|
||||
$this->subscriptions
|
||||
);
|
||||
|
||||
$this->assertCount(1, $receivers);
|
||||
$this->assertEquals(1, $receivers[0]);
|
||||
|
||||
$event['permissions'] = ['team:abc'];
|
||||
|
||||
$receivers = Realtime\Parser::identifyReceivers(
|
||||
$event,
|
||||
$this->subscriptions
|
||||
);
|
||||
|
||||
$this->assertCount(1, $receivers);
|
||||
$this->assertEquals(1, $receivers[0]);
|
||||
|
||||
$event['permissions'] = ['team:abc/administrator'];
|
||||
|
||||
$receivers = Realtime\Parser::identifyReceivers(
|
||||
$event,
|
||||
$this->subscriptions
|
||||
);
|
||||
|
||||
$this->assertCount(1, $receivers);
|
||||
$this->assertEquals(1, $receivers[0]);
|
||||
|
||||
$event['permissions'] = ['team:abc/god'];
|
||||
|
||||
$receivers = Realtime\Parser::identifyReceivers(
|
||||
$event,
|
||||
$this->subscriptions
|
||||
);
|
||||
|
||||
$this->assertCount(1, $receivers);
|
||||
$this->assertEquals(1, $receivers[0]);
|
||||
|
||||
$event['permissions'] = ['team:def'];
|
||||
|
||||
$receivers = Realtime\Parser::identifyReceivers(
|
||||
$event,
|
||||
$this->subscriptions
|
||||
);
|
||||
|
||||
$this->assertCount(1, $receivers);
|
||||
$this->assertEquals(1, $receivers[0]);
|
||||
|
||||
$event['permissions'] = ['team:def/guest'];
|
||||
|
||||
$receivers = Realtime\Parser::identifyReceivers(
|
||||
$event,
|
||||
$this->subscriptions
|
||||
);
|
||||
|
||||
$this->assertCount(1, $receivers);
|
||||
$this->assertEquals(1, $receivers[0]);
|
||||
|
||||
$event['permissions'] = ['user:456'];
|
||||
|
||||
$receivers = Realtime\Parser::identifyReceivers(
|
||||
$event,
|
||||
$this->subscriptions
|
||||
);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
$event['permissions'] = ['team:def/member'];
|
||||
|
||||
$receivers = Realtime\Parser::identifyReceivers(
|
||||
$event,
|
||||
$this->subscriptions
|
||||
);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
$event['permissions'] = ['*'];
|
||||
$event['data']['channels'] = ['documents.123'];
|
||||
|
||||
$receivers = Realtime\Parser::identifyReceivers(
|
||||
$event,
|
||||
$this->subscriptions
|
||||
);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
$event['data']['channels'] = ['documents.789'];
|
||||
|
||||
$receivers = Realtime\Parser::identifyReceivers(
|
||||
$event,
|
||||
$this->subscriptions
|
||||
);
|
||||
|
||||
$this->assertCount(1, $receivers);
|
||||
$this->assertEquals(1, $receivers[0]);
|
||||
|
||||
$event['project'] = '2';
|
||||
|
||||
$receivers = Realtime\Parser::identifyReceivers(
|
||||
$event,
|
||||
$this->subscriptions
|
||||
);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
Realtime\Parser::unsubscribe(2, $this->subscriptions, $this->connections);
|
||||
|
||||
$this->assertCount(1, $this->connections);
|
||||
$this->assertCount(7, $this->subscriptions['1']);
|
||||
|
||||
|
||||
Realtime\Parser::unsubscribe(1, $this->subscriptions, $this->connections);
|
||||
|
||||
$this->assertEmpty($this->connections);
|
||||
$this->assertEmpty($this->subscriptions);
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue