42 lines
1.8 KiB
JavaScript
42 lines
1.8 KiB
JavaScript
import request from '@/utils/request'
|
|
import { getAlert, listAlerts } from '@/api/bell/alert'
|
|
import { getEvent, getEventRuleResults, listEvents } from '@/api/bell/event'
|
|
import { createRule, listRules, setRuleEnabled, updateRule } from '@/api/bell/rule'
|
|
|
|
jest.mock('@/utils/request', () => jest.fn(config => Promise.resolve(config)))
|
|
|
|
describe('Bell rule-alert API adapters', () => {
|
|
beforeEach(() => request.mockClear())
|
|
|
|
it('maps read operations to the versioned Bell routes', async() => {
|
|
await listAlerts({ status: 'open' })
|
|
await getAlert('alert-1')
|
|
await listEvents({ severity: 'high' })
|
|
await getEvent('event-1')
|
|
await getEventRuleResults('event-1')
|
|
await listRules({ enabled: true })
|
|
|
|
expect(request.mock.calls.map(call => call[0])).toEqual([
|
|
{ url: '/api/v1/bell/alerts', method: 'get', params: { status: 'open' }},
|
|
{ url: '/api/v1/bell/alerts/alert-1', method: 'get' },
|
|
{ url: '/api/v1/bell/events', method: 'get', params: { severity: 'high' }},
|
|
{ url: '/api/v1/bell/events/event-1', method: 'get' },
|
|
{ url: '/api/v1/bell/events/event-1/rule-results', method: 'get' },
|
|
{ url: '/api/v1/bell/rules', method: 'get', params: { enabled: true }}
|
|
])
|
|
})
|
|
|
|
it('maps administrator writes without exposing unrelated operations', async() => {
|
|
const payload = { name: '区域规则', minimumSeverity: 'high' }
|
|
await createRule(payload)
|
|
await updateRule('rule-1', payload)
|
|
await setRuleEnabled('rule-1', false)
|
|
|
|
expect(request.mock.calls.map(call => call[0])).toEqual([
|
|
{ url: '/api/v1/bell/rules', method: 'post', data: payload },
|
|
{ url: '/api/v1/bell/rules/rule-1', method: 'put', data: payload },
|
|
{ url: '/api/v1/bell/rules/rule-1/enabled', method: 'put', data: { enabled: false }}
|
|
])
|
|
})
|
|
})
|