외교 메시지 응답과 알림 권한 정리
This commit is contained in:
@@ -12,6 +12,7 @@ const payload = (
|
||||
| 'access.general'
|
||||
| 'dashboard.global'
|
||||
| 'messages.mailbox'
|
||||
| 'messages.diplomacyMailbox'
|
||||
| 'tournament'
|
||||
| 'betting'
|
||||
) => ({
|
||||
@@ -19,7 +20,11 @@ const payload = (
|
||||
changes: [
|
||||
[
|
||||
domain,
|
||||
domain === 'front.general' || domain === 'access.general' ? 7 : domain === 'messages.mailbox' ? 9999 : 0,
|
||||
domain === 'front.general' || domain === 'access.general'
|
||||
? 7
|
||||
: domain === 'messages.mailbox' || domain === 'messages.diplomacyMailbox'
|
||||
? 9999
|
||||
: 0,
|
||||
'1',
|
||||
],
|
||||
],
|
||||
@@ -114,6 +119,25 @@ describe('ReadModelOutboxWorker', () => {
|
||||
});
|
||||
});
|
||||
|
||||
it('labels diplomacy-only mailbox wake-ups for viewer permission filtering', async () => {
|
||||
const fixture = createFixture([{ id: 15n, payload: payload('messages.diplomacyMailbox'), attempts: 1 }]);
|
||||
const worker = new ReadModelOutboxWorker(fixture.db, fixture.redis, 'che:default', {
|
||||
owner: 'worker-test',
|
||||
intervalMs: 60_000,
|
||||
});
|
||||
|
||||
worker.start();
|
||||
await vi.waitFor(() => expect(fixture.executeRaw).toHaveBeenCalledTimes(1));
|
||||
await worker.stop();
|
||||
|
||||
expect(fixture.incr).not.toHaveBeenCalled();
|
||||
expect(JSON.parse(String(fixture.publish.mock.calls[0]?.[1]))).toEqual({
|
||||
type: 'messagesChanged',
|
||||
mailboxes: [],
|
||||
diplomacyMailboxes: [9999],
|
||||
});
|
||||
});
|
||||
|
||||
it('coalesces repeated wakeups into one trailing batch and waits for it on shutdown', async () => {
|
||||
let releaseFirst: (() => void) | undefined;
|
||||
const first = new Promise<readonly object[]>((resolve) => {
|
||||
|
||||
Reference in New Issue
Block a user