validate Telegram bot token in production

This commit is contained in:
2026-09-06 18:03:39 +03:00
parent e70126b312
commit 64919270d8
3 changed files with 26 additions and 2 deletions
+15 -1
View File
@@ -4,13 +4,27 @@ import {mkdtempSync,rmSync} from 'node:fs';
import {join} from 'node:path';
import {tmpdir} from 'node:os';
import {createTelegramLinker} from '../server/telegram-link.mjs';
import {kodIleBagla} from '../server/telegram.mjs';
import {kodIleBagla,telegramConfigured} from '../server/telegram.mjs';
const directory=mkdtempSync(join(tmpdir(),'telegram-link-'));
process.env.IHALEIST_USER_DATA_DIR=directory;
const store=await import('../server/user-store.mjs');
after(()=>rmSync(directory,{recursive:true,force:true}));
const found={chatId:'123',ad:'Test'};
test('production rejects malformed Telegram bot token values',()=>{
const oldNode=process.env.NODE_ENV,oldToken=process.env.TELEGRAM_BOT_TOKEN;
process.env.NODE_ENV='production';
try {
process.env.TELEGRAM_BOT_TOKEN='synthetic-token';
assert.equal(telegramConfigured(),false);
process.env.TELEGRAM_BOT_TOKEN='123456:abcdefghijklmnopqrstuvwxyz';
assert.equal(telegramConfigured(),true);
} finally {
if(oldNode===undefined)delete process.env.NODE_ENV;else process.env.NODE_ENV=oldNode;
if(oldToken===undefined)delete process.env.TELEGRAM_BOT_TOKEN;else process.env.TELEGRAM_BOT_TOKEN=oldToken;
}
});
test('server challenge belongs to its account, expires, rotates and is consumed once',async()=>{
let time=1000000;const linker=createTelegramLinker(store,()=>time),email='link@example.test';
const first=linker.issue(email);assert.match(first.kod,/^[a-f0-9]{48}$/);