From 10fc3cfc1be7d3d22a251ec0bd6932a84e6fd7d7 Mon Sep 17 00:00:00 2001 From: Vladimir Fomichev Date: Tue, 27 Jan 2026 10:41:35 +0300 Subject: [PATCH] =?utf8?q?=D0=9F=D1=80=D0=B0=D0=B2=D0=BA=D0=B8=20=D0=BF?= =?utf8?q?=D0=BE=20=D1=80=D0=B5=D0=B2=D1=8C=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- ...erControlReportServiceNotificationTest.php | 57 ++++++++++++++----- 1 file changed, 42 insertions(+), 15 deletions(-) diff --git a/erp24/tests/unit/services/OrderControlReportServiceNotificationTest.php b/erp24/tests/unit/services/OrderControlReportServiceNotificationTest.php index 977c75f9..96c7dcd7 100644 --- a/erp24/tests/unit/services/OrderControlReportServiceNotificationTest.php +++ b/erp24/tests/unit/services/OrderControlReportServiceNotificationTest.php @@ -182,31 +182,58 @@ class OrderControlReportServiceNotificationTest extends Unit /** * Тест: проверка логики выбора бота в зависимости от окружения * - * Проверяет, что используются правильные константы для dev и prod + * Проверяет, что токены берутся из переменных окружения TELEGRAM_BOT_TOKEN / TELEGRAM_BOT_TOKEN_PROD */ public function testTelegramBotTokenSelectionLogic(): void { $reflection = new \ReflectionClass($this->service); - - // Проверяем наличие констант для токенов ботов - $this->assertTrue( + + // Класс НЕ должен содержать захардкоженные константы токенов + $this->assertFalse( $reflection->hasConstant('TELEGRAM_BOT_DEV'), - 'Константа TELEGRAM_BOT_DEV должна существовать' + 'Токены не должны храниться в константах класса' ); - - $this->assertTrue( + $this->assertFalse( $reflection->hasConstant('TELEGRAM_BOT_PROD'), - 'Константа TELEGRAM_BOT_PROD должна существовать' + 'Токены не должны храниться в константах класса' ); - $devToken = $reflection->getConstant('TELEGRAM_BOT_DEV'); - $prodToken = $reflection->getConstant('TELEGRAM_BOT_PROD'); + // Сохраняем текущие значения окружения + $origToken = getenv('TELEGRAM_BOT_TOKEN'); + $origTokenProd = getenv('TELEGRAM_BOT_TOKEN_PROD'); - $this->assertIsString($devToken); - $this->assertIsString($prodToken); - $this->assertNotEmpty($devToken); - $this->assertNotEmpty($prodToken); - $this->assertNotSame($devToken, $prodToken, 'Dev и Prod токены должны отличаться'); + $testDevToken = '111111:AAFakeDevTokenForTest'; + $testProdToken = '222222:AAFakeProdTokenForTest'; + + try { + putenv("TELEGRAM_BOT_TOKEN={$testDevToken}"); + putenv("TELEGRAM_BOT_TOKEN_PROD={$testProdToken}"); + + $method = $reflection->getMethod('getTelegramBotToken'); + $method->setAccessible(true); + + $token = $method->invoke($this->service); + + // Проверяем, что возвращается один из установленных тестовых токенов + $this->assertContains($token, [$testDevToken, $testProdToken], + 'getTelegramBotToken должен возвращать значение из TELEGRAM_BOT_TOKEN или TELEGRAM_BOT_TOKEN_PROD' + ); + + // Dev и prod токены различаются + $this->assertNotSame($testDevToken, $testProdToken); + } finally { + // Восстанавливаем переменные окружения + if ($origToken !== false) { + putenv("TELEGRAM_BOT_TOKEN={$origToken}"); + } else { + putenv('TELEGRAM_BOT_TOKEN'); + } + if ($origTokenProd !== false) { + putenv("TELEGRAM_BOT_TOKEN_PROD={$origTokenProd}"); + } else { + putenv('TELEGRAM_BOT_TOKEN_PROD'); + } + } } /** -- 2.39.5