Skip to content

Commit afba230

Browse files
Add tests for isValidCreateEventSchema
Signed-off-by: MTRNord <[email protected]>
1 parent aa88a7d commit afba230

File tree

1 file changed

+116
-0
lines changed

1 file changed

+116
-0
lines changed

packages/api/src/api/extras/events.test.ts

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,12 @@ import { RoomEvent, StateEvent, ToDeviceMessageEvent } from '../types';
1919
import {
2020
isRoomEvent,
2121
isStateEvent,
22+
isValidCreateEventSchema,
2223
isValidPowerLevelStateEvent,
2324
isValidRoomEvent,
2425
isValidStateEvent,
2526
isValidToDeviceMessageEvent,
27+
StateEventCreateContent,
2628
} from './events';
2729

2830
// Mock console.warn for tests
@@ -315,3 +317,117 @@ describe('isValidPowerLevelStateEvent', () => {
315317
expect(isValidPowerLevelStateEvent(event)).toEqual(false);
316318
});
317319
});
320+
321+
describe('isValidCreateEventSchema', () => {
322+
it('should accept valid create event', () => {
323+
const event: StateEvent<StateEventCreateContent> = {
324+
content: {
325+
room_version: '12',
326+
},
327+
event_id: 'event-id',
328+
origin_server_ts: 0,
329+
room_id: '!room-id:example.com',
330+
sender: '@user-id:example.com',
331+
state_key: '',
332+
type: 'm.room.create',
333+
};
334+
335+
expect(isValidCreateEventSchema(event)).toEqual(true);
336+
});
337+
338+
it('should accept additional properties', () => {
339+
const event: StateEvent<StateEventCreateContent> = {
340+
content: {
341+
room_version: '12',
342+
// @ts-expect-error - additionalProperty is not part of the schema but this is what we want to test
343+
additionalProperty: true,
344+
},
345+
event_id: 'event-id',
346+
origin_server_ts: 0,
347+
room_id: '!room-id:example.com',
348+
sender: '@user-id:example.com',
349+
state_key: '',
350+
type: 'm.room.create',
351+
};
352+
353+
expect(isValidCreateEventSchema(event)).toEqual(true);
354+
});
355+
356+
it('should reject wrong event type', () => {
357+
const event: StateEvent<StateEventCreateContent> = {
358+
content: {
359+
room_version: '12',
360+
},
361+
event_id: 'event-id',
362+
origin_server_ts: 0,
363+
room_id: '!room-id:example.com',
364+
sender: '@user-id:example.com',
365+
state_key: '',
366+
type: 'another-type',
367+
};
368+
369+
expect(isValidCreateEventSchema(event)).toEqual(false);
370+
});
371+
372+
it('should accept room id without a server name', () => {
373+
const event: StateEvent<StateEventCreateContent> = {
374+
content: {
375+
room_version: '12',
376+
},
377+
event_id: 'event-id',
378+
origin_server_ts: 0,
379+
room_id: '!room-id',
380+
sender: '@user-id:example.com',
381+
state_key: '',
382+
type: 'm.room.create',
383+
};
384+
385+
expect(isValidCreateEventSchema(event)).toEqual(true);
386+
});
387+
388+
it('should reject wrong event structure (missing content)', () => {
389+
// @ts-expect-error - we are in a test case
390+
const event: StateEvent<StateEventCreateContent> = {
391+
event_id: 'event-id',
392+
origin_server_ts: 0,
393+
room_id: '!room-id:example.com',
394+
sender: '@user-id:example.com',
395+
state_key: '',
396+
type: 'm.room.create',
397+
};
398+
399+
expect(isValidCreateEventSchema(event)).toEqual(false);
400+
});
401+
402+
it('should reject invalid sender', () => {
403+
const event: StateEvent<StateEventCreateContent> = {
404+
content: {
405+
room_version: '12',
406+
},
407+
event_id: 'event-id',
408+
origin_server_ts: 0,
409+
room_id: '!room-id:example.com',
410+
sender: '@user-id',
411+
state_key: '',
412+
type: 'm.room.create',
413+
};
414+
415+
expect(isValidCreateEventSchema(event)).toEqual(false);
416+
});
417+
418+
it('should reject invalid room id', () => {
419+
const event: StateEvent<StateEventCreateContent> = {
420+
content: {
421+
room_version: '12',
422+
},
423+
event_id: 'event-id',
424+
origin_server_ts: 0,
425+
room_id: '!room-id',
426+
sender: '@user-id',
427+
state_key: '',
428+
type: 'm.room.create',
429+
};
430+
431+
expect(isValidCreateEventSchema(event)).toEqual(false);
432+
});
433+
});

0 commit comments

Comments
 (0)