quality / commitlint (push) Skipped
quality / changes (push) Failing after 8s
quality / openapi (push) Skipped
quality / web (push) Skipped
quality / api (push) Skipped
CD / quality (push) Failing after 9s
quality / docker-check (push) Skipped
CD / publish (push) Skipped
- genReqId (uuid) + x-request-id в каждом ответе и request_id в error envelope — корреляция ошибок между клиентом и логами - RBAC: /agents/:id/(stats|blocked-ips|blocked-ports) классифицируются как fw:stats:read (reset остаётся под fw:agents:write) - web: test-скрипт + 10 unit-тестов (filter-utils, fleet-kpis, parseClaims, nav) - typecheck-скрипты для api/shared/db; CI: тесты shared и web, typecheck всех пакетов - гигиена: .node-version (22), актуальный .dockerignore, drizzle out → ./migrations, удалены 12 лишних .gitkeep и пустой apps/api/test
37 lines
1.2 KiB
TypeScript
37 lines
1.2 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import { permissionForRequest } from '@evofw/shared'
|
|
|
|
describe('permissionForRequest', () => {
|
|
it('maps install-links to agents permissions', () => {
|
|
expect(permissionForRequest('GET', '/api/v1/install-links')).toBe(
|
|
'fw:agents:read',
|
|
)
|
|
expect(permissionForRequest('POST', '/api/v1/install-links')).toBe(
|
|
'fw:agents:write',
|
|
)
|
|
})
|
|
|
|
it('maps agent stats endpoints to stats permission, not agents', () => {
|
|
expect(
|
|
permissionForRequest('GET', '/api/v1/agents/a1/stats'),
|
|
).toBe('fw:stats:read')
|
|
expect(
|
|
permissionForRequest('GET', '/api/v1/agents/a1/blocked-ips'),
|
|
).toBe('fw:stats:read')
|
|
// reset is destructive — stays under agents write
|
|
expect(
|
|
permissionForRequest('POST', '/api/v1/agents/a1/stats/reset'),
|
|
).toBe('fw:agents:write')
|
|
expect(permissionForRequest('GET', '/api/v1/agents')).toBe('fw:agents:read')
|
|
})
|
|
|
|
it('maps integrations to lists read / settings admin', () => {
|
|
expect(
|
|
permissionForRequest('GET', '/api/v1/integrations/evobgp/communities'),
|
|
).toBe('fw:lists:read')
|
|
expect(
|
|
permissionForRequest('POST', '/api/v1/integrations/evobgp/refresh'),
|
|
).toBe('fw:settings:admin')
|
|
})
|
|
})
|