Split V5 dashboard behavior into domain controllers and policies, add agent token rotation/revocation, status reconciliation jobs, ingress firewall syncing, and canvas connection APIs. Add migrations for V5 status tracking, server capabilities, resource connection aliases, and revoked agent tokens.
71 lines
2.1 KiB
PHP
71 lines
2.1 KiB
PHP
<?php
|
|
|
|
use App\Models\Team;
|
|
use App\Models\User;
|
|
use Illuminate\Support\Facades\Config;
|
|
|
|
beforeEach(function () {
|
|
resetV5DashboardTestState();
|
|
createSharedUserAndTeamTables();
|
|
|
|
Config::set('broadcasting.default', 'pusher');
|
|
Config::set('broadcasting.connections.pusher.key', 'test-key');
|
|
Config::set('broadcasting.connections.pusher.secret', 'test-secret');
|
|
Config::set('broadcasting.connections.pusher.app_id', 'test-app-id');
|
|
Config::set('broadcasting.connections.pusher.options', [
|
|
'host' => '127.0.0.1',
|
|
'port' => 6001,
|
|
'scheme' => 'http',
|
|
'useTLS' => false,
|
|
]);
|
|
});
|
|
|
|
it('authorizes team members on their private team channel', function () {
|
|
[$user, $team] = createV5UserWithTeam();
|
|
|
|
$this
|
|
->actingAs($user)
|
|
->postJson('/broadcasting/auth', [
|
|
'channel_name' => "private-team.{$team->id}",
|
|
'socket_id' => '1234.5678',
|
|
])
|
|
->assertSuccessful()
|
|
->assertJsonStructure(['auth']);
|
|
});
|
|
|
|
it('rejects users outside the team on the private team channel', function () {
|
|
[, $team] = createV5UserWithTeam();
|
|
|
|
$outsider = User::withoutEvents(fn () => User::query()->create([
|
|
'name' => 'Outsider',
|
|
'email' => 'outsider@example.com',
|
|
'email_verified_at' => now(),
|
|
'password' => 'password',
|
|
]));
|
|
$otherTeam = Team::withoutEvents(fn () => Team::query()->create([
|
|
'name' => 'Another Team',
|
|
'description' => null,
|
|
'personal_team' => false,
|
|
'show_boarding' => false,
|
|
]));
|
|
$outsider->teams()->attach($otherTeam, ['role' => 'owner']);
|
|
|
|
$this
|
|
->actingAs($outsider)
|
|
->postJson('/broadcasting/auth', [
|
|
'channel_name' => "private-team.{$team->id}",
|
|
'socket_id' => '1234.5678',
|
|
])
|
|
->assertForbidden();
|
|
});
|
|
|
|
it('rejects guests on the private team channel', function () {
|
|
[, $team] = createV5UserWithTeam();
|
|
|
|
$this
|
|
->postJson('/broadcasting/auth', [
|
|
'channel_name' => "private-team.{$team->id}",
|
|
'socket_id' => '1234.5678',
|
|
])
|
|
->assertForbidden();
|
|
});
|