Files
Toju/toju-app/src/app/domains/chat/domain/rules/message-revision-signing.rules.spec.ts
Myx eb51f043ac
All checks were successful
Queue Release Build / prepare (push) Successful in 19s
Deploy Web Apps / deploy (push) Successful in 8m12s
Queue Release Build / build-windows (push) Successful in 27m44s
Queue Release Build / build-linux (push) Successful in 48m1s
Queue Release Build / build-android (push) Successful in 22m7s
Queue Release Build / finalize (push) Successful in 2m42s
fix: Major bug cleanup pass 1
2026-06-09 17:59:54 +02:00

47 lines
1.2 KiB
TypeScript

import {
describe,
it,
expect,
vi
} from 'vitest';
import type { MessageRevision } from '../../../../shared-kernel';
import { attachRevisionSignatureIfPossible, shouldAcceptRevisionWithoutRegisteredKey } from './message-revision-signing.rules';
describe('message-revision-signing.rules', () => {
const revision: MessageRevision = {
messageId: 'msg-1',
revision: 0,
prevRevisionHash: '',
headHash: 'hash',
type: 'create',
actorId: 'user-1',
senderId: 'user-1',
roomId: 'room-1',
channelId: 'general',
senderName: 'User',
content: 'hello',
editedAt: 1,
isDeleted: false
};
it('keeps revisions unsigned when signing fails', async () => {
const signed = await attachRevisionSignatureIfPossible(
revision,
vi.fn(async () => {
throw new Error('Ed25519 unavailable');
})
);
expect(signed.signature).toBeUndefined();
});
it('accepts signed revisions while the sender key is still registering', () => {
expect(shouldAcceptRevisionWithoutRegisteredKey({
...revision,
signature: 'signature'
}, null)).toBe(true);
expect(shouldAcceptRevisionWithoutRegisteredKey(revision, null)).toBe(false);
});
});