From 45466b50695f231851c83fcd57c5dd0a9606e547 Mon Sep 17 00:00:00 2001 From: Devin Dissanayaka Date: Thu, 3 Sep 2026 22:05:07 +0530 Subject: [PATCH] fix(notifications): send traefik outdated alerts to the correct topic id (#11526) --- .../Channels/TelegramChannel.php | 3 +- .../TelegramNotificationThreadRoutingTest.php | 89 +++++++++++++++++++ 2 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 tests/Feature/TelegramNotificationThreadRoutingTest.php diff --git a/app/Notifications/Channels/TelegramChannel.php b/app/Notifications/Channels/TelegramChannel.php index 4f311bf681..a52feda087 100644 --- a/app/Notifications/Channels/TelegramChannel.php +++ b/app/Notifications/Channels/TelegramChannel.php @@ -17,6 +17,7 @@ use App\Notifications\Server\DockerCleanupSuccess; use App\Notifications\Server\HighDiskUsage; use App\Notifications\Server\Reachable; use App\Notifications\Server\ServerPatchCheck; +use App\Notifications\Server\TraefikVersionOutdated; use App\Notifications\Server\Unreachable; class TelegramChannel @@ -50,7 +51,7 @@ class TelegramChannel Unreachable::class => $settings->telegram_notifications_server_unreachable_thread_id, Reachable::class => $settings->telegram_notifications_server_reachable_thread_id, ServerPatchCheck::class => $settings->telegram_notifications_server_patch_thread_id, - + TraefikVersionOutdated::class => $settings->telegram_notifications_traefik_outdated_thread_id, default => null, }; diff --git a/tests/Feature/TelegramNotificationThreadRoutingTest.php b/tests/Feature/TelegramNotificationThreadRoutingTest.php new file mode 100644 index 0000000000..474d2b157d --- /dev/null +++ b/tests/Feature/TelegramNotificationThreadRoutingTest.php @@ -0,0 +1,89 @@ + InstanceSettings::query()->firstOrCreate(['id' => 0])); + + $this->team = Team::factory()->create(); + $this->team->telegramNotificationSettings->update([ + 'telegram_enabled' => true, + 'telegram_token' => 'test-token', + 'telegram_chat_id' => '-1001234567890', + ]); + + Queue::fake(); +}); + +function telegramTestServer(Team $team): Server +{ + return Server::factory()->make([ + 'name' => 'Test Server', + 'uuid' => 'test-uuid', + 'team_id' => $team->id, + ]); +} + +function outdatedTraefikServer(Team $team): Server +{ + $server = telegramTestServer($team); + + $server->outdatedInfo = [ + 'current' => '3.5.0', + 'latest' => '3.5.6', + 'type' => 'patch_update', + ]; + + return $server; +} + +it('sends the traefik outdated notification to its configured topic', function () { + $this->team->telegramNotificationSettings->update([ + 'telegram_notifications_traefik_outdated_thread_id' => '42', + ]); + + $notification = new TraefikVersionOutdated(collect([outdatedTraefikServer($this->team)])); + + (new TelegramChannel)->send($this->team->fresh(), $notification); + + Queue::assertPushed( + SendMessageToTelegramJob::class, + fn (SendMessageToTelegramJob $job) => $job->threadId === '42' + ); +}); + +it('sends the server patch notification to its configured topic', function () { + $this->team->telegramNotificationSettings->update([ + 'telegram_notifications_server_patch_thread_id' => '7', + ]); + + $notification = new ServerPatchCheck(telegramTestServer($this->team), ['total_updates' => 3]); + + (new TelegramChannel)->send($this->team->fresh(), $notification); + + Queue::assertPushed( + SendMessageToTelegramJob::class, + fn (SendMessageToTelegramJob $job) => $job->threadId === '7' + ); +}); + +it('falls back to the main chat when no topic is configured', function () { + $notification = new TraefikVersionOutdated(collect([outdatedTraefikServer($this->team)])); + + (new TelegramChannel)->send($this->team->fresh(), $notification); + + Queue::assertPushed( + SendMessageToTelegramJob::class, + fn (SendMessageToTelegramJob $job) => $job->threadId === null + ); +});