Publish DevRunbook source
Managed validation / full (push) Successful in 3m18s

This commit is contained in:
DevRunbook release export
2026-09-03 04:09:17 +02:00
commit cfd2804e27
928 changed files with 161642 additions and 0 deletions
+76
View File
@@ -0,0 +1,76 @@
import { describe, expect, it } from 'vitest'
import type { JobRecord } from '@devrunbook/application'
import { createJobHandlers } from './handlers'
function job(payload: JobRecord['payload']): JobRecord {
const timestamp = new Date('2026-07-27T12:00:00.000Z')
return {
id: '00000000-0000-4000-8000-000000000911',
workspaceId: null,
type: 'system.health-probe',
state: 'running',
idempotencyKey: 'probe-1',
payload,
progress: {},
attemptCount: 1,
maxAttempts: 3,
leaseOwner: 'worker:lease',
leaseExpiresAt: timestamp,
availableAt: timestamp,
startedAt: timestamp,
finishedAt: null,
errorCode: null,
errorDetailRedacted: null,
createdAt: timestamp,
updatedAt: timestamp,
}
}
describe('worker job handlers', () => {
it('handles a durable health probe as data without executing payload text', async () => {
const handler = createJobHandlers(
() => new Date('2026-07-27T12:01:00.000Z'),
)['system.health-probe']
if (!handler) throw new Error('Health probe handler is not registered')
await expect(
handler(job({ requestedBy: '$(unsafe command)' }), {
signal: new AbortController().signal,
heartbeat: async () => true,
}),
).resolves.toEqual({
status: 'ok',
checkedAt: '2026-07-27T12:01:00.000Z',
workerProtocol: 1,
})
})
it('rejects unsupported payload fields permanently', async () => {
const handler = createJobHandlers()['system.health-probe']
if (!handler) throw new Error('Health probe handler is not registered')
await expect(
handler(job({ command: 'whoami' }), {
signal: new AbortController().signal,
heartbeat: async () => true,
}),
).rejects.toMatchObject({ code: 'health_probe_payload_invalid' })
})
it('registers repository collection only when explicit dependencies are supplied', () => {
expect(createJobHandlers()['gitea.repository-snapshot']).toBeUndefined()
expect(
createJobHandlers(undefined, {
createReader: async () => {
throw new Error('not used')
},
persistence: {
resolveCollectionTarget: async () => null,
completeCollection: async () => null,
failCollection: async () => false,
},
})['gitea.repository-snapshot'],
).toBeTypeOf('function')
})
})