From: Vladimir Fomichev Date: Tue, 27 Jan 2026 07:41:35 +0000 (+0300) Subject: Правки по ревью X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=10fc3cfc1be7d3d22a251ec0bd6932a84e6fd7d7;p=erp24_rep%2Fyii-erp24%2F.git Правки по ревью --- 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'); + } + } } /**