adapt to review
This commit is contained in:
parent
c89f7b4c1f
commit
882686952e
|
@ -206,7 +206,7 @@ App::shutdown(function ($utopia, $request, $response, $project, $events, $audits
|
|||
$response->getPayload(),
|
||||
$events->getParam('event'),
|
||||
$target['channels'],
|
||||
$target['permissions'],
|
||||
$target['roles'],
|
||||
[
|
||||
'permissionsChanged' => $target['permissionsChanged'],
|
||||
'userId' => $events->getParam('userId')
|
||||
|
|
|
@ -96,12 +96,12 @@ $server->onWorkerStart(function (int $workerId) use ($server, $register, $stats,
|
|||
$event = [
|
||||
'event' => 'stats.connections',
|
||||
'channels' => ['project'],
|
||||
'permissions' => ['role:member'],
|
||||
'roles' => ['role:member'],
|
||||
'timestamp' => time(),
|
||||
'payload' => $payload
|
||||
];
|
||||
|
||||
$server->send($realtime->getReceivers($event), json_encode($event));
|
||||
$server->send($realtime->getSubscribers($event), json_encode($event));
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -156,7 +156,7 @@ $server->onWorkerStart(function (int $workerId) use ($server, $register, $stats,
|
|||
$register->get('redisPool')->put($cache);
|
||||
}
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
$receivers = $realtime->getSubscribers($event);
|
||||
|
||||
// Temporarily print debug logs by default for Alpha testing.
|
||||
// if (App::isDevelopment() && !empty($receivers)) {
|
||||
|
@ -263,7 +263,7 @@ $server->onOpen(function (int $connection, SwooleRequest $request) use ($server,
|
|||
|
||||
$roles = Auth::getRoles($user);
|
||||
|
||||
$channels = Realtime::convertChannels($request->getQuery('channels', []), $user);
|
||||
$channels = Realtime::convertChannels($request->getQuery('channels', []), $user->getId());
|
||||
|
||||
/**
|
||||
* Channels Check
|
||||
|
|
|
@ -450,12 +450,12 @@ class FunctionsV1 extends Worker
|
|||
else {
|
||||
Console::info('Container is ready to run');
|
||||
}
|
||||
|
||||
|
||||
$stdout = '';
|
||||
$stderr = '';
|
||||
|
||||
$executionStart = \microtime(true);
|
||||
|
||||
|
||||
$exitCode = Console::execute("docker exec ".\implode(" ", $vars)." {$container} {$command}"
|
||||
, '', $stdout, $stderr, $function->getAttribute('timeout', (int) App::getEnv('_APP_FUNCTIONS_TIMEOUT', 900)));
|
||||
|
||||
|
@ -466,7 +466,7 @@ class FunctionsV1 extends Worker
|
|||
Console::info("Function executed in " . ($executionEnd - $executionStart) . " seconds with exit code {$exitCode}");
|
||||
|
||||
Authorization::disable();
|
||||
|
||||
|
||||
$execution = $database->updateDocument(array_merge($execution->getArrayCopy(), [
|
||||
'tagId' => $tag->getId(),
|
||||
'status' => $functionStatus,
|
||||
|
@ -475,7 +475,7 @@ class FunctionsV1 extends Worker
|
|||
'stderr' => \mb_substr($stderr, -4000), // log last 4000 chars output
|
||||
'time' => $executionTime,
|
||||
]));
|
||||
|
||||
|
||||
Authorization::reset();
|
||||
|
||||
if (false === $function) {
|
||||
|
@ -501,7 +501,7 @@ class FunctionsV1 extends Worker
|
|||
$execution->getArrayCopy(),
|
||||
'functions.executions.update',
|
||||
$target['channels'],
|
||||
$target['permissions']
|
||||
$target['roles']
|
||||
);
|
||||
|
||||
$usage = new Event('v1-usage', 'UsageV1');
|
||||
|
@ -515,7 +515,7 @@ class FunctionsV1 extends Worker
|
|||
->setParam('networkRequestSize', 0)
|
||||
->setParam('networkResponseSize', 0)
|
||||
;
|
||||
|
||||
|
||||
if(App::getEnv('_APP_USAGE_STATS', 'enabled') == 'enabled') {
|
||||
$usage->trigger();
|
||||
}
|
||||
|
|
|
@ -43,6 +43,7 @@ class Realtime extends Adapter
|
|||
*/
|
||||
public function subscribe(string $projectId, mixed $connection, array $roles, array $channels): void
|
||||
{
|
||||
//TODO: merge project & channel to a single layer
|
||||
if (!isset($this->subscriptions[$projectId])) { // Init Project
|
||||
$this->subscriptions[$projectId] = [];
|
||||
}
|
||||
|
@ -65,7 +66,7 @@ class Realtime extends Adapter
|
|||
}
|
||||
|
||||
/**
|
||||
* Removes Subscription.
|
||||
* Removes Subscription.
|
||||
*
|
||||
* @param mixed $connection
|
||||
* @return void
|
||||
|
@ -101,10 +102,11 @@ class Realtime extends Adapter
|
|||
* @param string $projectId
|
||||
* @param string $role
|
||||
* @param string $channel
|
||||
* @return bool
|
||||
* @return bool
|
||||
*/
|
||||
public function hasSubscriber(string $projectId, string $role, string $channel = ''): bool
|
||||
{
|
||||
//TODO: look into moving it to an abstract class in the parent class
|
||||
if (empty($channel)) {
|
||||
return array_key_exists($projectId, $this->subscriptions)
|
||||
&& array_key_exists($role, $this->subscriptions[$projectId]);
|
||||
|
@ -121,22 +123,22 @@ class Realtime extends Adapter
|
|||
* @param array $payload
|
||||
* @param string $event
|
||||
* @param array $channels
|
||||
* @param array $permissions
|
||||
* @param array $roles
|
||||
* @param array $options
|
||||
* @return void
|
||||
*/
|
||||
public static function send(string $project, array $payload, string $event, array $channels, array $permissions, array $options = []): void
|
||||
public static function send(string $project, array $payload, string $event, array $channels, array $roles, array $options = []): void
|
||||
{
|
||||
if (empty($channels) || empty($permissions) || empty($project)) return;
|
||||
|
||||
$permissionsChanged = array_key_exists('permissionsChanged', $options) && $options['permissionsChanged'];
|
||||
$userId = array_key_exists('userId', $options) ? $options['userId'] : null;
|
||||
|
||||
$redis = new \Redis();
|
||||
$redis = new \Redis(); //TODO: make this part of the constructor
|
||||
$redis->connect(App::getEnv('_APP_REDIS_HOST', ''), App::getEnv('_APP_REDIS_PORT', ''));
|
||||
$redis->publish('realtime', json_encode([
|
||||
'project' => $project,
|
||||
'permissions' => $permissions,
|
||||
'roles' => $roles,
|
||||
'permissionsChanged' => $permissionsChanged,
|
||||
'userId' => $userId,
|
||||
'data' => [
|
||||
|
@ -161,18 +163,19 @@ class Realtime extends Adapter
|
|||
*
|
||||
* @param array $event
|
||||
*/
|
||||
public function getReceivers(array $event)
|
||||
public function getSubscribers(array $event)
|
||||
{
|
||||
//TODO: do comments
|
||||
$receivers = [];
|
||||
if (isset($this->subscriptions[$event['project']])) {
|
||||
foreach ($this->subscriptions[$event['project']] as $role => $subscription) {
|
||||
foreach ($event['data']['channels'] as $channel) {
|
||||
if (
|
||||
\array_key_exists($channel, $this->subscriptions[$event['project']][$role])
|
||||
&& (\in_array($role, $event['permissions']) || \in_array('*', $event['permissions']))
|
||||
&& (\in_array($role, $event['roles']) || \in_array('*', $event['roles']))
|
||||
) {
|
||||
foreach (array_keys($this->subscriptions[$event['project']][$role][$channel]) as $ids) {
|
||||
$receivers[$ids] = 0;
|
||||
foreach (array_keys($this->subscriptions[$event['project']][$role][$channel]) as $id) {
|
||||
$receivers[$id] = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -187,10 +190,10 @@ class Realtime extends Adapter
|
|||
* Converts the channels from the Query Params into an array.
|
||||
* Also renames the account channel to account.USER_ID and removes all illegal account channel variations.
|
||||
* @param array $channels
|
||||
* @param Document $user
|
||||
* @param string $userId
|
||||
* @return array
|
||||
*/
|
||||
public static function convertChannels(array $channels, Document $user): array
|
||||
public static function convertChannels(array $channels, string $userId): array
|
||||
{
|
||||
$channels = array_flip($channels);
|
||||
|
||||
|
@ -201,8 +204,8 @@ class Realtime extends Adapter
|
|||
break;
|
||||
|
||||
case $key === 'account':
|
||||
if (!empty($user->getId())) {
|
||||
$channels['account.' . $user->getId()] = $value;
|
||||
if (!empty($userId)) {
|
||||
$channels['account.' . $userId] = $value;
|
||||
}
|
||||
unset($channels['account']);
|
||||
break;
|
||||
|
@ -210,8 +213,8 @@ class Realtime extends Adapter
|
|||
}
|
||||
|
||||
if (\array_key_exists('account', $channels)) {
|
||||
if ($user->getId()) {
|
||||
$channels['account.' . $user->getId()] = $channels['account'];
|
||||
if ($userId) {
|
||||
$channels['account.' . $userId] = $channels['account'];
|
||||
}
|
||||
unset($channels['account']);
|
||||
}
|
||||
|
@ -227,7 +230,7 @@ class Realtime extends Adapter
|
|||
public static function fromPayload(string $event, Document $payload): array
|
||||
{
|
||||
$channels = [];
|
||||
$permissions = [];
|
||||
$roles = [];
|
||||
$permissionsChanged = false;
|
||||
|
||||
switch (true) {
|
||||
|
@ -236,46 +239,46 @@ class Realtime extends Adapter
|
|||
case strpos($event, 'account.verification.') === 0:
|
||||
$channels[] = 'account';
|
||||
$channels[] = 'account.' . $payload->getAttribute('userId');
|
||||
$permissions = ['user:' . $payload->getAttribute('userId')];
|
||||
$roles = ['user:' . $payload->getAttribute('userId')];
|
||||
|
||||
break;
|
||||
case strpos($event, 'account.') === 0:
|
||||
$channels[] = 'account';
|
||||
$channels[] = 'account.' . $payload->getId();
|
||||
$permissions = ['user:' . $payload->getId()];
|
||||
$roles = ['user:' . $payload->getId()];
|
||||
|
||||
break;
|
||||
case strpos($event, 'teams.memberships') === 0:
|
||||
$permissionsChanged = in_array($event, ['teams.memberships.update', 'teams.memberships.delete', 'teams.memberships.update.status']);
|
||||
$channels[] = 'memberships';
|
||||
$channels[] = 'memberships.' . $payload->getId();
|
||||
$permissions = ['team:' . $payload->getAttribute('teamId')];
|
||||
$roles = ['team:' . $payload->getAttribute('teamId')];
|
||||
|
||||
break;
|
||||
case strpos($event, 'teams.') === 0:
|
||||
$permissionsChanged = $event === 'teams.create';
|
||||
$channels[] = 'teams';
|
||||
$channels[] = 'teams.' . $payload->getId();
|
||||
$permissions = ['team:' . $payload->getId()];
|
||||
$roles = ['team:' . $payload->getId()];
|
||||
|
||||
break;
|
||||
case strpos($event, 'database.collections.') === 0:
|
||||
$channels[] = 'collections';
|
||||
$channels[] = 'collections.' . $payload->getId();
|
||||
$permissions = $payload->getAttribute('$permissions.read');
|
||||
$roles = $payload->getAttribute('$permissions.read');
|
||||
|
||||
break;
|
||||
case strpos($event, 'database.documents.') === 0:
|
||||
$channels[] = 'documents';
|
||||
$channels[] = 'collections.' . $payload->getAttribute('$collection') . '.documents';
|
||||
$channels[] = 'documents.' . $payload->getId();
|
||||
$permissions = $payload->getAttribute('$permissions.read');
|
||||
$roles = $payload->getAttribute('$permissions.read');
|
||||
|
||||
break;
|
||||
case strpos($event, 'storage.') === 0:
|
||||
$channels[] = 'files';
|
||||
$channels[] = 'files.' . $payload->getId();
|
||||
$permissions = $payload->getAttribute('$permissions.read');
|
||||
$roles = $payload->getAttribute('$permissions.read');
|
||||
|
||||
break;
|
||||
case strpos($event, 'functions.executions.') === 0:
|
||||
|
@ -283,14 +286,14 @@ class Realtime extends Adapter
|
|||
$channels[] = 'executions';
|
||||
$channels[] = 'executions.' . $payload->getId();
|
||||
$channels[] = 'functions.' . $payload->getAttribute('functionId');
|
||||
$permissions = $payload->getAttribute('$permissions.read');
|
||||
$roles = $payload->getAttribute('$permissions.read');
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return [
|
||||
'channels' => $channels,
|
||||
'permissions' => $permissions,
|
||||
'roles' => $roles,
|
||||
'permissionsChanged' => $permissionsChanged
|
||||
];
|
||||
}
|
||||
|
|
|
@ -62,7 +62,7 @@ class MessagingChannelsTest extends TestCase
|
|||
|
||||
$roles = Auth::getRoles($user);
|
||||
|
||||
$parsedChannels = Realtime::convertChannels([0 => $channel], $user);
|
||||
$parsedChannels = Realtime::convertChannels([0 => $channel], $user->getId());
|
||||
|
||||
$this->realtime->subscribe(
|
||||
'1',
|
||||
|
@ -86,7 +86,7 @@ class MessagingChannelsTest extends TestCase
|
|||
|
||||
$roles = Auth::getRoles($user);
|
||||
|
||||
$parsedChannels = Realtime::convertChannels([0 => $channel], $user);
|
||||
$parsedChannels = Realtime::convertChannels([0 => $channel], $user->getId());
|
||||
|
||||
$this->realtime->subscribe(
|
||||
'1',
|
||||
|
@ -153,7 +153,7 @@ class MessagingChannelsTest extends TestCase
|
|||
foreach ($this->allChannels as $index => $channel) {
|
||||
$event = [
|
||||
'project' => '1',
|
||||
'permissions' => ['*'],
|
||||
'roles' => ['*'],
|
||||
'data' => [
|
||||
'channels' => [
|
||||
0 => $channel,
|
||||
|
@ -161,7 +161,7 @@ class MessagingChannelsTest extends TestCase
|
|||
]
|
||||
];
|
||||
|
||||
$receivers = $this->realtime->getReceivers($event);
|
||||
$receivers = $this->realtime->getSubscribers($event);
|
||||
|
||||
/**
|
||||
* Every Client subscribed to the Wildcard should receive this event.
|
||||
|
@ -186,7 +186,7 @@ class MessagingChannelsTest extends TestCase
|
|||
|
||||
$event = [
|
||||
'project' => '1',
|
||||
'permissions' => $permissions,
|
||||
'roles' => $permissions,
|
||||
'data' => [
|
||||
'channels' => [
|
||||
0 => $channel,
|
||||
|
@ -194,7 +194,7 @@ class MessagingChannelsTest extends TestCase
|
|||
]
|
||||
];
|
||||
|
||||
$receivers = $this->realtime->getReceivers($event);
|
||||
$receivers = $this->realtime->getSubscribers($event);
|
||||
|
||||
/**
|
||||
* Every Role subscribed to a Channel should receive this event.
|
||||
|
@ -220,7 +220,7 @@ class MessagingChannelsTest extends TestCase
|
|||
}
|
||||
$event = [
|
||||
'project' => '1',
|
||||
'permissions' => $permissions,
|
||||
'roles' => $permissions,
|
||||
'data' => [
|
||||
'channels' => [
|
||||
0 => $channel,
|
||||
|
@ -228,7 +228,7 @@ class MessagingChannelsTest extends TestCase
|
|||
]
|
||||
];
|
||||
|
||||
$receivers = $this->realtime->getReceivers($event);
|
||||
$receivers = $this->realtime->getSubscribers($event);
|
||||
|
||||
/**
|
||||
* Every Client subscribed to a Channel should receive this event.
|
||||
|
@ -254,7 +254,7 @@ class MessagingChannelsTest extends TestCase
|
|||
}
|
||||
$event = [
|
||||
'project' => '1',
|
||||
'permissions' => $permissions,
|
||||
'roles' => $permissions,
|
||||
'data' => [
|
||||
'channels' => [
|
||||
0 => $channel,
|
||||
|
@ -262,7 +262,7 @@ class MessagingChannelsTest extends TestCase
|
|||
]
|
||||
];
|
||||
|
||||
$receivers = $this->realtime->getReceivers($event);
|
||||
$receivers = $this->realtime->getSubscribers($event);
|
||||
|
||||
/**
|
||||
* Every Team Member should receive this event.
|
||||
|
@ -280,7 +280,7 @@ class MessagingChannelsTest extends TestCase
|
|||
|
||||
$event = [
|
||||
'project' => '1',
|
||||
'permissions' => $permissions,
|
||||
'roles' => $permissions,
|
||||
'data' => [
|
||||
'channels' => [
|
||||
0 => $channel,
|
||||
|
@ -288,7 +288,7 @@ class MessagingChannelsTest extends TestCase
|
|||
]
|
||||
];
|
||||
|
||||
$receivers = $this->realtime->getReceivers($event);
|
||||
$receivers = $this->realtime->getSubscribers($event);
|
||||
|
||||
/**
|
||||
* Only 1 Team Member of a role should have access to a specific channel.
|
||||
|
|
|
@ -20,7 +20,7 @@ class MessagingGuestTest extends TestCase
|
|||
|
||||
$event = [
|
||||
'project' => '1',
|
||||
'permissions' => ['*'],
|
||||
'roles' => ['*'],
|
||||
'data' => [
|
||||
'channels' => [
|
||||
0 => 'documents',
|
||||
|
@ -29,89 +29,89 @@ class MessagingGuestTest extends TestCase
|
|||
]
|
||||
];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
$receivers = $realtime->getSubscribers($event);
|
||||
|
||||
$this->assertCount(1, $receivers);
|
||||
$this->assertEquals(1, $receivers[0]);
|
||||
|
||||
$event['permissions'] = ['role:guest'];
|
||||
$event['roles'] = ['role:guest'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
$receivers = $realtime->getSubscribers($event);
|
||||
|
||||
$this->assertCount(1, $receivers);
|
||||
$this->assertEquals(1, $receivers[0]);
|
||||
|
||||
$event['permissions'] = ['role:member'];
|
||||
$event['roles'] = ['role:member'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
$receivers = $realtime->getSubscribers($event);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
$event['permissions'] = ['user:123'];
|
||||
$event['roles'] = ['user:123'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
$receivers = $realtime->getSubscribers($event);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
$event['permissions'] = ['team:abc'];
|
||||
$event['roles'] = ['team:abc'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
$receivers = $realtime->getSubscribers($event);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
$event['permissions'] = ['team:abc/administrator'];
|
||||
$event['roles'] = ['team:abc/administrator'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
$receivers = $realtime->getSubscribers($event);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
$event['permissions'] = ['team:abc/god'];
|
||||
$event['roles'] = ['team:abc/god'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
$receivers = $realtime->getSubscribers($event);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
$event['permissions'] = ['team:def'];
|
||||
$event['roles'] = ['team:def'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
$receivers = $realtime->getSubscribers($event);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
$event['permissions'] = ['team:def/guest'];
|
||||
$event['roles'] = ['team:def/guest'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
$receivers = $realtime->getSubscribers($event);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
$event['permissions'] = ['user:456'];
|
||||
$event['roles'] = ['user:456'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
$receivers = $realtime->getSubscribers($event);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
$event['permissions'] = ['team:def/member'];
|
||||
$event['roles'] = ['team:def/member'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
$receivers = $realtime->getSubscribers($event);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
$event['permissions'] = ['*'];
|
||||
$event['roles'] = ['*'];
|
||||
$event['data']['channels'] = ['documents.123'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
$receivers = $realtime->getSubscribers($event);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
$event['data']['channels'] = ['documents.789'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
$receivers = $realtime->getSubscribers($event);
|
||||
|
||||
$this->assertCount(1, $receivers);
|
||||
$this->assertEquals(1, $receivers[0]);
|
||||
|
||||
$event['project'] = '2';
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
$receivers = $realtime->getSubscribers($event);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@ class MessagingTest extends TestCase
|
|||
|
||||
$event = [
|
||||
'project' => '1',
|
||||
'permissions' => ['*'],
|
||||
'roles' => ['*'],
|
||||
'data' => [
|
||||
'channels' => [
|
||||
0 => 'account.123',
|
||||
|
@ -37,89 +37,89 @@ class MessagingTest extends TestCase
|
|||
]
|
||||
];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
$receivers = $realtime->getSubscribers($event);
|
||||
|
||||
$this->assertCount(1, $receivers);
|
||||
$this->assertEquals(1, $receivers[0]);
|
||||
|
||||
$event['permissions'] = ['role:member'];
|
||||
$event['roles'] = ['role:member'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
$receivers = $realtime->getSubscribers($event);
|
||||
|
||||
$this->assertCount(1, $receivers);
|
||||
$this->assertEquals(1, $receivers[0]);
|
||||
|
||||
$event['permissions'] = ['user:123'];
|
||||
$event['roles'] = ['user:123'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
$receivers = $realtime->getSubscribers($event);
|
||||
|
||||
$this->assertCount(1, $receivers);
|
||||
$this->assertEquals(1, $receivers[0]);
|
||||
|
||||
$event['permissions'] = ['team:abc'];
|
||||
$event['roles'] = ['team:abc'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
$receivers = $realtime->getSubscribers($event);
|
||||
|
||||
$this->assertCount(1, $receivers);
|
||||
$this->assertEquals(1, $receivers[0]);
|
||||
|
||||
$event['permissions'] = ['team:abc/administrator'];
|
||||
$event['roles'] = ['team:abc/administrator'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
$receivers = $realtime->getSubscribers($event);
|
||||
|
||||
$this->assertCount(1, $receivers);
|
||||
$this->assertEquals(1, $receivers[0]);
|
||||
|
||||
$event['permissions'] = ['team:abc/moderator'];
|
||||
$event['roles'] = ['team:abc/moderator'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
$receivers = $realtime->getSubscribers($event);
|
||||
|
||||
$this->assertCount(1, $receivers);
|
||||
$this->assertEquals(1, $receivers[0]);
|
||||
|
||||
$event['permissions'] = ['team:def'];
|
||||
$event['roles'] = ['team:def'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
$receivers = $realtime->getSubscribers($event);
|
||||
|
||||
$this->assertCount(1, $receivers);
|
||||
$this->assertEquals(1, $receivers[0]);
|
||||
|
||||
$event['permissions'] = ['team:def/guest'];
|
||||
$event['roles'] = ['team:def/guest'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
$receivers = $realtime->getSubscribers($event);
|
||||
|
||||
$this->assertCount(1, $receivers);
|
||||
$this->assertEquals(1, $receivers[0]);
|
||||
|
||||
$event['permissions'] = ['user:456'];
|
||||
$event['roles'] = ['user:456'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
$receivers = $realtime->getSubscribers($event);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
$event['permissions'] = ['team:def/member'];
|
||||
$event['roles'] = ['team:def/member'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
$receivers = $realtime->getSubscribers($event);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
$event['permissions'] = ['*'];
|
||||
$event['roles'] = ['*'];
|
||||
$event['data']['channels'] = ['documents.123'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
$receivers = $realtime->getSubscribers($event);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
$event['data']['channels'] = ['documents.789'];
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
$receivers = $realtime->getSubscribers($event);
|
||||
|
||||
$this->assertCount(1, $receivers);
|
||||
$this->assertEquals(1, $receivers[0]);
|
||||
|
||||
$event['project'] = '2';
|
||||
|
||||
$receivers = $realtime->getReceivers($event);
|
||||
$receivers = $realtime->getSubscribers($event);
|
||||
|
||||
$this->assertEmpty($receivers);
|
||||
|
||||
|
@ -148,7 +148,7 @@ class MessagingTest extends TestCase
|
|||
4 => 'account.456'
|
||||
];
|
||||
|
||||
$channels = Realtime::convertChannels($channels, $user);
|
||||
$channels = Realtime::convertChannels($channels, $user->getId());
|
||||
$this->assertCount(3, $channels);
|
||||
$this->assertArrayHasKey('files', $channels);
|
||||
$this->assertArrayHasKey('documents', $channels);
|
||||
|
@ -185,7 +185,7 @@ class MessagingTest extends TestCase
|
|||
4 => 'account.456'
|
||||
];
|
||||
|
||||
$channels = Realtime::convertChannels($channels, $user);
|
||||
$channels = Realtime::convertChannels($channels, $user->getId());
|
||||
|
||||
$this->assertCount(4, $channels);
|
||||
$this->assertArrayHasKey('files', $channels);
|
||||
|
|
Loading…
Reference in a new issue