/**
* Тест: проверка логики выбора бота в зависимости от окружения
*
- * Проверяет, что используются правильные константы для dev и prod
+ * Проверяет, что токены берутся из переменных окружения TELEGRAM_BOT_TOKEN / TELEGRAM_BOT_TOKEN_PROD
*/
public function testTelegramBotTokenSelectionLogic(): void
{
$reflection = new \ReflectionClass($this->service);
-
- // Ð\9fÑ\80овеÑ\80Ñ\8fем налиÑ\87ие конÑ\81Ñ\82анÑ\82 длÑ\8f Ñ\82окенов боÑ\82ов
- $this->assertTrue(
+
+ // Ð\9aлаÑ\81Ñ\81 Ð\9dÐ\95 должен Ñ\81одеÑ\80жаÑ\82Ñ\8c заÑ\85аÑ\80дкоженнÑ\8bе конÑ\81Ñ\82анÑ\82Ñ\8b Ñ\82окенов
+ $this->assertFalse(
$reflection->hasConstant('TELEGRAM_BOT_DEV'),
- 'Ð\9aонÑ\81Ñ\82анÑ\82а TELEGRAM_BOT_DEV должна Ñ\81Ñ\83Ñ\89еÑ\81Ñ\82воваÑ\82Ñ\8c'
+ 'ТокенÑ\8b не должнÑ\8b Ñ\85Ñ\80аниÑ\82Ñ\8cÑ\81Ñ\8f в конÑ\81Ñ\82анÑ\82аÑ\85 клаÑ\81Ñ\81а'
);
-
- $this->assertTrue(
+ $this->assertFalse(
$reflection->hasConstant('TELEGRAM_BOT_PROD'),
- 'Ð\9aонÑ\81Ñ\82анÑ\82а TELEGRAM_BOT_PROD должна Ñ\81Ñ\83Ñ\89еÑ\81Ñ\82воваÑ\82Ñ\8c'
+ 'ТокенÑ\8b не должнÑ\8b Ñ\85Ñ\80аниÑ\82Ñ\8cÑ\81Ñ\8f в конÑ\81Ñ\82анÑ\82аÑ\85 клаÑ\81Ñ\81а'
);
- $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');
+ }
+ }
}
/**