feat(session): add pairing_approved table and getPairingStore()

This commit is contained in:
William Valentin
2026-02-09 21:46:51 -08:00
parent 1e1a68924e
commit ecd3aca7c1
2 changed files with 73 additions and 0 deletions
+38
View File
@@ -62,4 +62,42 @@ describe('SessionStore', () => {
expect(sessions).toContain('session-a');
expect(sessions).toContain('session-b');
});
describe('pairing persistence', () => {
it('getPairingStore returns a PairingStore', () => {
const pairingStore = store.getPairingStore();
expect(pairingStore).toBeDefined();
expect(pairingStore.loadApproved).toBeInstanceOf(Function);
expect(pairingStore.saveApproved).toBeInstanceOf(Function);
expect(pairingStore.removeApproved).toBeInstanceOf(Function);
});
it('saveApproved and loadApproved round-trip', () => {
const ps = store.getPairingStore();
ps.saveApproved({ channel: 'telegram', senderId: '123', approvedAt: 1000, codeUsed: 'AABB11' });
ps.saveApproved({ channel: 'discord', senderId: '456', approvedAt: 2000, codeUsed: 'CC33DD' });
const loaded = ps.loadApproved();
expect(loaded).toHaveLength(2);
expect(loaded).toEqual(expect.arrayContaining([
expect.objectContaining({ channel: 'telegram', senderId: '123', codeUsed: 'AABB11' }),
expect.objectContaining({ channel: 'discord', senderId: '456', codeUsed: 'CC33DD' }),
]));
});
it('removeApproved deletes a sender', () => {
const ps = store.getPairingStore();
ps.saveApproved({ channel: 'telegram', senderId: '123', approvedAt: 1000, codeUsed: 'AABB11' });
ps.removeApproved('telegram', '123');
expect(ps.loadApproved()).toHaveLength(0);
});
it('saveApproved upserts on duplicate channel+senderId', () => {
const ps = store.getPairingStore();
ps.saveApproved({ channel: 'telegram', senderId: '123', approvedAt: 1000, codeUsed: 'FIRST1' });
ps.saveApproved({ channel: 'telegram', senderId: '123', approvedAt: 2000, codeUsed: 'SECOND' });
const loaded = ps.loadApproved();
expect(loaded).toHaveLength(1);
expect(loaded[0].codeUsed).toBe('SECOND');
});
});
});