- P2: nonce validation, severity levels, RLS withTenant - P3: notification dispatcher severity gating, Slack Block Kit emoji mapping - P4: Meilisearch fallback, service CRUD validation, staged update actions - P5: cost ingestion validation, snooze range, optimistic locking - P6: runbook API validation, approval decisions, execution status machine, Slack signature
49 lines
1.5 KiB
TypeScript
49 lines
1.5 KiB
TypeScript
import { describe, it, expect } from 'vitest';
|
|
|
|
describe('Meilisearch Fallback', () => {
|
|
it('ILIKE pattern escapes special characters', () => {
|
|
const query = 'test%query';
|
|
const escaped = `%${query}%`;
|
|
// In real code, we'd need to escape % and _ in user input
|
|
expect(escaped).toContain(query);
|
|
});
|
|
|
|
it('search results include fallback flag when Meili is down', () => {
|
|
const fallbackResult = { hits: [], total: 0, query: 'test', fallback: true };
|
|
expect(fallbackResult.fallback).toBe(true);
|
|
});
|
|
});
|
|
|
|
describe('Service CRUD Validation', () => {
|
|
it('rejects empty service name', () => {
|
|
const name = '';
|
|
expect(name.length >= 1).toBe(false);
|
|
});
|
|
|
|
it('accepts valid service name', () => {
|
|
const name = 'auth-service';
|
|
expect(name.length >= 1 && name.length <= 200).toBe(true);
|
|
});
|
|
|
|
it('validates lifecycle values', () => {
|
|
const valid = ['active', 'deprecated', 'decommissioned'];
|
|
expect(valid.includes('active')).toBe(true);
|
|
expect(valid.includes('deleted')).toBe(false);
|
|
});
|
|
|
|
it('validates tier values', () => {
|
|
const valid = ['critical', 'high', 'medium', 'low'];
|
|
expect(valid.includes('critical')).toBe(true);
|
|
expect(valid.includes('ultra')).toBe(false);
|
|
});
|
|
});
|
|
|
|
describe('Discovery Staged Updates', () => {
|
|
it('only allows apply or reject actions', () => {
|
|
const validActions = ['apply', 'reject'];
|
|
expect(validActions.includes('apply')).toBe(true);
|
|
expect(validActions.includes('reject')).toBe(true);
|
|
expect(validActions.includes('delete')).toBe(false);
|
|
});
|
|
});
|