Files
coolify/tests/Feature/TrafficAnalytics/ConfigureTrafficAnalyticsTest.php
T
Aditya Tripathi 859258e0a1 feat(traffic): add enable/disable orchestration action
Adds ConfigureTrafficAnalytics::run(Server, bool) which sets the
is_traffic_analytics_enabled flag, force-regenerates the proxy config,
dispatches RestartProxyJob, and recreates Sentinel with restart: true.
2026-08-10 19:41:18 +00:00

42 lines
1.4 KiB
PHP

<?php
use App\Actions\Proxy\GetProxyConfiguration;
use App\Actions\Server\ConfigureTrafficAnalytics;
use App\Actions\Server\StartSentinel;
use App\Jobs\RestartProxyJob;
use App\Models\Server;
use App\Models\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Facades\Queue;
uses(RefreshDatabase::class);
beforeEach(function () {
$user = User::factory()->create();
$this->team = $user->teams()->first();
});
it('enables analytics, regenerates proxy config and recreates sentinel', function () {
Queue::fake();
StartSentinel::partialMock()->shouldReceive('handle')->atLeast()->once();
GetProxyConfiguration::partialMock()->shouldReceive('handle')->atLeast()->once();
$server = Server::factory()->create(['team_id' => $this->team->id]);
ConfigureTrafficAnalytics::run($server, true);
expect($server->fresh()->isTrafficAnalyticsEnabled())->toBeTrue();
Queue::assertPushed(RestartProxyJob::class);
});
it('disables analytics', function () {
Queue::fake();
StartSentinel::partialMock()->shouldReceive('handle')->atLeast()->once();
GetProxyConfiguration::partialMock()->shouldReceive('handle')->atLeast()->once();
$server = Server::factory()->create(['team_id' => $this->team->id]);
ConfigureTrafficAnalytics::run($server, true);
ConfigureTrafficAnalytics::run($server, false);
expect($server->fresh()->isTrafficAnalyticsEnabled())->toBeFalse();
});