DUNGEONS-30: add access gateway with Telegram and Discord approvals
Co-authored-by: multica-agent <github@multica.ai>
This commit is contained in:
21
test/helpers.js
Normal file
21
test/helpers.js
Normal file
@@ -0,0 +1,21 @@
|
||||
import { loadConfig } from '../src/config.js';
|
||||
import { AccessStore } from '../src/store.js';
|
||||
import { AccessService } from '../src/bots/service.js';
|
||||
|
||||
export function fixture(options = {}) {
|
||||
let time = Date.now();
|
||||
const config = { ...loadConfig({ SESSION_SECRET: 'test-secret-with-at-least-32-characters', TELEGRAM_ADMIN_IDS: '100,101', DISCORD_ADMIN_IDS: '200' }), ...options };
|
||||
const store = new AccessStore(config, { memory: true, now: () => time });
|
||||
const messages = [];
|
||||
const provider = { async sendUser(userId, text, buttons = []) { messages.push({ userId, text, buttons }); } };
|
||||
const service = new AccessService(config, store, { telegram: provider, discord: provider });
|
||||
return { config, store, service, messages, provider, advance: ms => { time += ms; }, now: () => time };
|
||||
}
|
||||
|
||||
export async function grant(f, userId = '5') {
|
||||
await f.service.request({ platform: 'telegram', user_id: userId, username: 'adventurer' });
|
||||
const request = f.store.state.requests.at(-1);
|
||||
await f.service.decide('telegram', '100', request.id, 'approve');
|
||||
const code = f.messages.findLast(m => m.text.includes('Your number:')).text.match(/Your number: (\d+)/)[1];
|
||||
return { code, request: f.store.getRequest(request.id) };
|
||||
}
|
||||
Reference in New Issue
Block a user