appwrite/tests/unit/Messaging/MessagingGuestTest.php

133 lines
3.7 KiB
PHP
Raw Normal View History

2021-06-29 13:11:14 +00:00
<?php
2022-08-01 10:22:04 +00:00
namespace Tests\Unit\Messaging;
2021-06-29 13:11:14 +00:00
use Appwrite\Messaging\Adapter\Realtime;
use PHPUnit\Framework\TestCase;
2022-12-14 15:42:25 +00:00
use Utopia\Database\Helpers\ID;
2022-12-14 16:04:06 +00:00
use Utopia\Database\Helpers\Role;
2021-06-29 13:11:14 +00:00
class MessagingGuestTest extends TestCase
{
2022-08-01 10:22:04 +00:00
public function testGuest(): void
2021-06-29 13:11:14 +00:00
{
$realtime = new Realtime();
$realtime->subscribe(
'1',
1,
2026-02-03 08:46:35 +00:00
ID::unique(),
2022-08-19 04:04:33 +00:00
[Role::guests()->toString()],
2026-02-03 08:46:35 +00:00
// Pass plain channel names, Realtime::subscribe will normalize them
['files', 'documents', 'documents.789', 'account.123']
2021-06-29 13:11:14 +00:00
);
$event = [
'project' => '1',
2022-08-19 04:04:33 +00:00
'roles' => [Role::any()->toString()],
2021-06-29 13:11:14 +00:00
'data' => [
'channels' => [
0 => 'documents',
1 => 'documents',
2026-02-03 08:46:35 +00:00
],
2021-06-29 13:11:14 +00:00
]
];
2026-01-29 06:08:20 +00:00
$receivers = array_keys($realtime->getSubscribers($event));
2021-06-29 13:11:14 +00:00
$this->assertCount(1, $receivers);
$this->assertEquals(1, $receivers[0]);
2022-08-19 04:04:33 +00:00
$event['roles'] = [Role::guests()->toString()];
2021-06-29 13:11:14 +00:00
2026-01-29 06:08:20 +00:00
$receivers = array_keys($realtime->getSubscribers($event));
2021-06-29 13:11:14 +00:00
$this->assertCount(1, $receivers);
$this->assertEquals(1, $receivers[0]);
2022-08-19 04:04:33 +00:00
$event['roles'] = [Role::users()->toString()];
2021-06-29 13:11:14 +00:00
2026-01-29 06:08:20 +00:00
$receivers = array_keys($realtime->getSubscribers($event));
2021-06-29 13:11:14 +00:00
$this->assertEmpty($receivers);
2022-08-19 04:04:33 +00:00
$event['roles'] = [Role::user(ID::custom('123'))->toString()];
2021-06-29 13:11:14 +00:00
2026-01-29 06:08:20 +00:00
$receivers = array_keys($realtime->getSubscribers($event));
2021-06-29 13:11:14 +00:00
$this->assertEmpty($receivers);
2022-08-19 04:04:33 +00:00
$event['roles'] = [Role::team(ID::custom('abc'))->toString()];
2021-06-29 13:11:14 +00:00
2026-01-29 06:08:20 +00:00
$receivers = array_keys($realtime->getSubscribers($event));
2021-06-29 13:11:14 +00:00
$this->assertEmpty($receivers);
2022-08-19 04:04:33 +00:00
$event['roles'] = [Role::team(ID::custom('abc'), 'administrator')->toString()];
2021-06-29 13:11:14 +00:00
2026-01-29 06:08:20 +00:00
$receivers = array_keys($realtime->getSubscribers($event));
2021-06-29 13:11:14 +00:00
$this->assertEmpty($receivers);
2022-08-19 04:04:33 +00:00
$event['roles'] = [Role::team(ID::custom('abc'), 'god')->toString()];
2021-06-29 13:11:14 +00:00
2026-01-29 06:08:20 +00:00
$receivers = array_keys($realtime->getSubscribers($event));
2021-06-29 13:11:14 +00:00
$this->assertEmpty($receivers);
2022-08-19 04:04:33 +00:00
$event['roles'] = [Role::team(ID::custom('def'))->toString()];
2021-06-29 13:11:14 +00:00
2026-01-29 06:08:20 +00:00
$receivers = array_keys($realtime->getSubscribers($event));
2021-06-29 13:11:14 +00:00
$this->assertEmpty($receivers);
2022-08-19 04:04:33 +00:00
$event['roles'] = [Role::team(ID::custom('def'), 'guest')->toString()];
2021-06-29 13:11:14 +00:00
2026-01-29 06:08:20 +00:00
$receivers = array_keys($realtime->getSubscribers($event));
2021-06-29 13:11:14 +00:00
$this->assertEmpty($receivers);
2022-08-19 04:04:33 +00:00
$event['roles'] = [Role::user(ID::custom('456'))->toString()];
2021-06-29 13:11:14 +00:00
2026-01-29 06:08:20 +00:00
$receivers = array_keys($realtime->getSubscribers($event));
2021-06-29 13:11:14 +00:00
$this->assertEmpty($receivers);
2022-08-19 04:04:33 +00:00
$event['roles'] = [Role::team(ID::custom('def'), 'member')->toString()];
2021-06-29 13:11:14 +00:00
2026-01-29 06:08:20 +00:00
$receivers = array_keys($realtime->getSubscribers($event));
2021-06-29 13:11:14 +00:00
$this->assertEmpty($receivers);
2022-08-19 04:04:33 +00:00
$event['roles'] = [Role::any()->toString()];
2021-06-29 13:11:14 +00:00
$event['data']['channels'] = ['documents.123'];
2026-01-29 06:08:20 +00:00
$receivers = array_keys($realtime->getSubscribers($event));
2021-06-29 13:11:14 +00:00
$this->assertEmpty($receivers);
$event['data']['channels'] = ['documents.789'];
2026-01-29 06:08:20 +00:00
$receivers = array_keys($realtime->getSubscribers($event));
2021-06-29 13:11:14 +00:00
$this->assertCount(1, $receivers);
$this->assertEquals(1, $receivers[0]);
$event['project'] = '2';
2026-01-29 06:08:20 +00:00
$receivers = array_keys($realtime->getSubscribers($event));
2021-06-29 13:11:14 +00:00
$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);
}
}