import { describe, expect, it } from 'vitest' import { listEntriesBodySchema, listEntryKindSchema, listNestedChildIds, parseListEntry, } from '../src/list-entries.js' describe('list entry kinds', () => { it('includes list kind', () => { expect(listEntryKindSchema.parse('list')).toBe('list') }) it('parses ip/cidr/hostname but not list ids from plaintext', () => { expect(parseListEntry('8.8.8.8').kind).toBe('ip') expect(parseListEntry('10.0.0.0/8').kind).toBe('cidr') expect(parseListEntry('bad.example.com').kind).toBe('hostname') expect(() => parseListEntry('not-a-valid-token')).toThrow() }) it('accepts values or items in body', () => { expect( listEntriesBodySchema.parse({ values: ['8.8.8.8'] }).values, ).toEqual(['8.8.8.8']) expect( listEntriesBodySchema.parse({ items: [{ kind: 'list', value: 'abc' }], }).items, ).toEqual([{ kind: 'list', value: 'abc' }]) expect(() => listEntriesBodySchema.parse({})).toThrow() }) it('reads nested child ids from config', () => { const ids = listNestedChildIds( JSON.stringify({ items: [ { kind: 'ip', value: '1.1.1.1' }, { kind: 'list', value: 'child-1' }, { kind: 'list', value: 'child-2' }, ], }), ) expect(ids).toEqual(['child-1', 'child-2']) }) })