Files
coolify/tests/Feature/TrafficAnalytics/ServerSettingTrafficTest.php
T

76 lines
2.8 KiB
PHP

<?php
use App\Models\Server;
use App\Models\ServerSetting;
use App\Models\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Facades\Queue;
uses(RefreshDatabase::class);
beforeEach(function () {
Queue::fake();
$user = User::factory()->create();
$this->team = $user->teams()->first();
});
it('defaults traffic analytics to disabled for a normal server and exposes a server helper', function () {
$server = Server::factory()->create(['team_id' => $this->team->id]);
expect($server->settings->is_traffic_analytics_enabled)->toBeFalse();
expect($server->isTrafficAnalyticsEnabled())->toBeFalse();
$server->settings->is_traffic_analytics_enabled = true;
$server->settings->save();
expect($server->fresh()->isTrafficAnalyticsEnabled())->toBeTrue();
});
it('defaults traffic analytics to disabled for a swarm server', function () {
$server = Server::factory()->create(['team_id' => $this->team->id]);
$setting = ServerSetting::create([
'server_id' => $server->id,
'is_swarm_manager' => true,
]);
expect($setting->is_traffic_analytics_enabled)->toBeFalse();
});
it('defaults traffic analytics to disabled for a build server', function () {
$server = Server::factory()->create(['team_id' => $this->team->id]);
$setting = ServerSetting::create([
'server_id' => $server->id,
'is_build_server' => true,
]);
expect($setting->is_traffic_analytics_enabled)->toBeFalse();
});
it('respects an explicit enabled traffic analytics value on creation', function () {
$server = Server::factory()->create(['team_id' => $this->team->id]);
$setting = ServerSetting::create([
'server_id' => $server->id,
'is_traffic_analytics_enabled' => true,
]);
expect($setting->is_traffic_analytics_enabled)->toBeTrue();
});
it('defaults traffic collection and geoip settings to sentinel values', function () {
$server = Server::factory()->create(['team_id' => $this->team->id]);
expect($server->settings->traffic_topn)->toBe(50)
->and($server->settings->traffic_sample_threshold)->toBe(0)
->and($server->settings->traffic_retention_1h_days)->toBe(30)
->and($server->settings->traffic_retention_1d_days)->toBe(395)
->and($server->settings->is_geoip_enabled)->toBeTrue()
->and($server->settings->geoip_refresh_days)->toBe(30);
});
it('encrypts the maxmind license key and hides it from array output', function () {
$server = Server::factory()->create(['team_id' => $this->team->id]);
$server->settings->geoip_maxmind_license_key = 'secret-key';
$server->settings->save();
expect($server->settings->fresh()->geoip_maxmind_license_key)->toBe('secret-key');
expect(array_key_exists('geoip_maxmind_license_key', $server->settings->fresh()->toArray()))->toBeFalse();
});