refactor: centralize task runtime contracts (#199)
This commit is contained in:
@@ -1,43 +1,39 @@
|
||||
import { describe, expect, it } from 'vitest';
|
||||
|
||||
import {
|
||||
isBotMessageSourceKind,
|
||||
inferMessageSourceKindFromBotFlag,
|
||||
normalizeMessageSourceKind,
|
||||
resolveInjectedMessageSourceKind,
|
||||
} from './message-source.js';
|
||||
import { DEFAULT_MESSAGE_SOURCE_KIND, MESSAGE_SOURCE_KINDS } from './types.js';
|
||||
|
||||
describe('message source helpers', () => {
|
||||
it('defaults IPC injected messages to trusted human-equivalent provenance', () => {
|
||||
describe('message source kind helpers', () => {
|
||||
it('uses the canonical source kind list', () => {
|
||||
expect(MESSAGE_SOURCE_KINDS).toEqual([
|
||||
'human',
|
||||
'bot',
|
||||
'trusted_external_bot',
|
||||
'ipc_injected_human',
|
||||
'ipc_injected_bot',
|
||||
]);
|
||||
expect(DEFAULT_MESSAGE_SOURCE_KIND).toBe('human');
|
||||
});
|
||||
|
||||
it('normalizes unknown source kinds to the default', () => {
|
||||
expect(normalizeMessageSourceKind('trusted_external_bot')).toBe(
|
||||
'trusted_external_bot',
|
||||
);
|
||||
expect(normalizeMessageSourceKind('unknown')).toBe('human');
|
||||
});
|
||||
|
||||
it('derives source kinds from legacy and injected inputs', () => {
|
||||
expect(inferMessageSourceKindFromBotFlag(true)).toBe('bot');
|
||||
expect(inferMessageSourceKindFromBotFlag(false)).toBe('human');
|
||||
expect(resolveInjectedMessageSourceKind({ treatAsHuman: true })).toBe(
|
||||
'trusted_external_bot',
|
||||
);
|
||||
expect(
|
||||
isBotMessageSourceKind(
|
||||
resolveInjectedMessageSourceKind({ treatAsHuman: true }),
|
||||
),
|
||||
).toBe(false);
|
||||
});
|
||||
|
||||
it('defaults non-human IPC injected messages to bot-equivalent provenance', () => {
|
||||
expect(resolveInjectedMessageSourceKind({ treatAsHuman: false })).toBe(
|
||||
'ipc_injected_bot',
|
||||
);
|
||||
expect(
|
||||
isBotMessageSourceKind(
|
||||
resolveInjectedMessageSourceKind({ treatAsHuman: false }),
|
||||
),
|
||||
).toBe(true);
|
||||
});
|
||||
|
||||
it('honors valid explicit source kinds and normalizes invalid values', () => {
|
||||
expect(
|
||||
resolveInjectedMessageSourceKind({
|
||||
treatAsHuman: true,
|
||||
sourceKind: 'ipc_injected_human',
|
||||
}),
|
||||
).toBe('ipc_injected_human');
|
||||
|
||||
expect(normalizeMessageSourceKind('bot', 'human')).toBe('bot');
|
||||
expect(normalizeMessageSourceKind('not-real', 'human')).toBe('human');
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user