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
47 lines
1.2 KiB
TypeScript
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);
|
|
});
|
|
});
|