fix(schedule): validate restored seed logs
This commit is contained in:
@@ -32,6 +32,9 @@ const install: InvariantInstaller = Object.assign((ctx: Context, fail: Invariant
|
||||
for (const session of ctx.sessions.list()) {
|
||||
validate(session.events, session.header.seedLength ?? 0, fail)
|
||||
}
|
||||
ctx.on('session/created', (session) => {
|
||||
validate(session.events, session.header.seedLength ?? 0, fail)
|
||||
}, { global: true })
|
||||
ctx.on('internal/dispatch', (_mode, eventName, args) => {
|
||||
if (eventName !== 'session/event') return
|
||||
const [session, event] = args as [Session, SessionEvent]
|
||||
|
||||
@@ -64,6 +64,16 @@ describe('Schedule package invariant', () => {
|
||||
await ctx.fiber.dispose()
|
||||
})
|
||||
|
||||
it('rejects a malformed seeded session created after companion setup', async () => {
|
||||
const { ctx } = await harness()
|
||||
const id = SessionId('schedule-invalid-future-seed')
|
||||
expect(() => ctx.sessions.create(id, {
|
||||
seed: [event({ version: 9, operation: 'delete', id: 'schedule-1' }, 0)],
|
||||
})).toThrow(InvariantError)
|
||||
expect(ctx.sessions.get(id)).toBeUndefined()
|
||||
await ctx.fiber.dispose()
|
||||
})
|
||||
|
||||
it('ignores inherited Schedule events before a fork seed boundary', async () => {
|
||||
const ctx = new Context()
|
||||
await ctx.plugin(SessionStore)
|
||||
|
||||
Reference in New Issue
Block a user