This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
cyber-narrator-cn-ui/test/views/charts2/charts/npm/NpmRecentEvents.test.js

163 lines
9.4 KiB
JavaScript

import NpmRecentEvents from '@/views/charts2/charts/npm/NpmRecentEvents'
import { mount } from '@vue/test-utils'
import axios from 'axios'
import ElementPlus from 'element-plus'
// 未下钻
const mockGet = {
data: { status: 200, code: 200, queryKey: '68d8aa5867b08b926b5bd38c36add9e5', success: true, message: null, statistics: { elapsed: 0, rows_read: 2, result_size: 550, result_rows: 5 }, job: null, formatType: 'json', meta: [{ name: 'event_id', type: 'long', category: 'Metric' }, { name: 'event_severity', type: 'string', category: 'Metric' }, { name: 'event_key', type: 'string', category: 'Metric' }, { name: 'event_type', type: 'string', category: 'Metric' }], data: { resultType: 'table', result: [{ eventId: 1173511643475208200, eventSeverity: 'critical', eventKey: '114.114.114.114 dns error', eventType: 'dns error' }, { eventId: 1173504415263352800, eventSeverity: 'high', eventKey: '116.178.78.241 http error', eventType: 'http error' }, { eventId: 1173492761289025500, eventSeverity: 'medium', eventKey: '223.6.6.6 dns error', eventType: 'dns error' }, { eventId: 1173489002890651600, eventSeverity: 'low', eventKey: '114.114.114.114 dns error', eventType: 'dns error' }, { eventId: 1173482380537620500, eventSeverity: 'info', eventKey: '1.1.1.2 dns error', eventType: 'http error' }, { eventId: 1173482380537620500, eventSeverity: 'critical', eventKey: '1.1.1.2 dns error', eventType: 'dns error' }] }, originalUrl: 'http://192.168.44.55:9999?query=SELECT%20event_id%20AS%20event_id%2Cevent_severity%20AS%20event_severity%2C%20event_key%20AS%20event_key%2C%20event_type%20AS%20event_type%20FROM%20performance_event%20WHERE%20start_time%20%3E%3D%201675227528%20AND%20end_time%20%3C%201675231128%20ORDER%20BY%20start_time%20DESC%20%20LIMIT%208%20&format=json&option=real-time', msg: 'OK' }
}
// 下钻
const mockGet1 = {
data: { status: 200, code: 200, queryKey: 'fc0bd92bf3b48a37310d5c004d8b7a7b', success: true, message: null, statistics: { elapsed: 0, rows_read: 2, result_size: 689, result_rows: 7 }, job: null, formatType: 'json', meta: [{ name: 'event_id', type: 'long', category: 'Metric' }, { name: 'event_severity', type: 'string', category: 'Metric' }, { name: 'event_type', type: 'string', category: 'Metric' }, { name: 'start_time', type: 'long', category: 'Metric' }], data: { resultType: 'table', result: [{ eventId: 1132790825086844900, eventSeverity: 'critical', eventType: 'http error', startTime: 1672802700 }, { eventId: 1132132403379142700, eventSeverity: 'high', eventType: 'dns error', startTime: 1672763400 }, { eventId: 1131441760155689000, eventSeverity: 'low', eventType: 'dns error', startTime: 1672722300 }, { eventId: 1131411523384598500, eventSeverity: 'medium', eventType: 'http error', startTime: 1672720500 }, { eventId: 1131390214323789800, eventSeverity: 'info', eventType: 'dns error', startTime: 1672719300 }, { eventId: 1131306200132968400, eventSeverity: 'critical', eventType: 'http error', startTime: 1672714200 }] }, originalUrl: 'http://192.168.44.55:9999?query=SELECT%20event_id%20AS%20event_id%2Cevent_severity%20AS%20event_severity%2C%20event_type%20AS%20event_type%2C%20start_time%20AS%20start_time%20FROM%20performance_event%20WHERE%20start_time%20%3E%3D%201672675200%20AND%20start_time%20%3C%201677513600%20AND%20server_ip%20%3D%20%27116.178.236.216%27%20ORDER%20BY%20start_time%20DESC&format=json&option=real-time', msg: 'OK' }
}
const query = {
curTab: 'country',
dimensionType: 'ip',
fourthMenu: '116.178.214.84',
fourthPanel: '8',
networkOverviewBeforeTab: 'ip',
panelName: '116.178.214.84',
queryCondition: "common_client_ip='116.178.214.84' OR common_server_ip='116.178.214.84'",
t: '1675236779453',
tabIndex: '1',
tabOperationBeforeType: '',
tabOperationType: '4',
thirdMenu: 'network.ips',
thirdPanel: '12'
}
const timeFilter = {
dateRangeValue: -1,
startTime: 1675043912,
endTime: 1675047512
}
describe('views/charts2/charts/npm/NpmRecentEvents.vue测试', () => {
test('npm events 近期事件表格 未下钻', async () => {
require('vue-router').useRoute.mockReturnValue({ query: {} })
// 模拟 axios 返回数据
axios.get.mockResolvedValue(mockGet)
const wrapper = mount(NpmRecentEvents, {
propsData: {
timeFilter
},
global: {
plugins: [ElementPlus]
}
})
await new Promise(resolve => setTimeout(() => {
const severity0 = wrapper.get('[test-id="eventSeverity-critical-0"]')
const severity1 = wrapper.get('[test-id="eventSeverity-high-1"]')
const severity2 = wrapper.get('[test-id="eventSeverity-medium-2"]')
const severity3 = wrapper.get('[test-id="eventSeverity-low-3"]')
const severity4 = wrapper.get('[test-id="eventSeverity-info-4"]')
const severity5 = wrapper.get('[test-id="eventSeverity-critical-5"]')
expect(severity0.text()).toEqual('critical')
expect(severity1.text()).toEqual('high')
expect(severity2.text()).toEqual('medium')
expect(severity3.text()).toEqual('low')
expect(severity4.text()).toEqual('info')
expect(severity5.text()).toEqual('critical')
expect(severity0.classes()).toContain('critical')
expect(severity1.classes()).toContain('high')
expect(severity2.classes()).toContain('medium')
expect(severity3.classes()).toContain('low')
expect(severity4.classes()).toContain('info')
expect(severity5.classes()).toContain('critical')
const eventKey0 = wrapper.get('[test-id="eventKey-114.114.114.114-0"]')
const eventKey1 = wrapper.get('[test-id="eventKey-116.178.78.241-1"]')
const eventKey2 = wrapper.get('[test-id="eventKey-223.6.6.6-2"]')
const eventKey3 = wrapper.get('[test-id="eventKey-114.114.114.114-3"]')
const eventKey4 = wrapper.get('[test-id="eventKey-1.1.1.2-4"]')
expect(eventKey0.text()).toEqual('114.114.114.114')
expect(eventKey1.text()).toEqual('116.178.78.241')
expect(eventKey2.text()).toEqual('223.6.6.6')
expect(eventKey3.text()).toEqual('114.114.114.114')
expect(eventKey4.text()).toEqual('1.1.1.2')
const eventType0 = wrapper.get('[test-id="eventType-dns error-0"]')
const eventType1 = wrapper.get('[test-id="eventType-http error-1"]')
const eventType2 = wrapper.get('[test-id="eventType-dns error-2"]')
const eventType3 = wrapper.get('[test-id="eventType-dns error-3"]')
const eventType4 = wrapper.get('[test-id="eventType-http error-4"]')
expect(eventType0.text()).toEqual('dns error')
expect(eventType1.text()).toEqual('http error')
expect(eventType2.text()).toEqual('dns error')
expect(eventType3.text()).toEqual('dns error')
expect(eventType4.text()).toEqual('http error')
resolve()
}, 200))
})
test('npm events 近期事件表格 下钻', async () => {
require('vue-router').useRoute.mockReturnValue({ query: query })
// 模拟 axios 返回数据
axios.get.mockResolvedValue(mockGet1)
const wrapper = mount(NpmRecentEvents, {
propsData: {
timeFilter
},
global: {
plugins: [ElementPlus]
}
})
await new Promise(resolve => setTimeout(() => {
const severity0 = wrapper.get('[test-id="eventSeverity-critical-0"]')
const severity1 = wrapper.get('[test-id="eventSeverity-high-1"]')
const severity2 = wrapper.get('[test-id="eventSeverity-low-2"]')
const severity3 = wrapper.get('[test-id="eventSeverity-medium-3"]')
const severity4 = wrapper.get('[test-id="eventSeverity-info-4"]')
const severity5 = wrapper.get('[test-id="eventSeverity-critical-5"]')
expect(severity0.text()).toEqual('critical')
expect(severity1.text()).toEqual('high')
expect(severity2.text()).toEqual('low')
expect(severity3.text()).toEqual('medium')
expect(severity4.text()).toEqual('info')
expect(severity5.text()).toEqual('critical')
expect(severity0.classes()).toContain('critical')
expect(severity1.classes()).toContain('high')
expect(severity2.classes()).toContain('low')
expect(severity3.classes()).toContain('medium')
expect(severity4.classes()).toContain('info')
expect(severity5.classes()).toContain('critical')
const eventType0 = wrapper.get('[test-id="eventType-http error-0"]')
const eventType1 = wrapper.get('[test-id="eventType-dns error-1"]')
const eventType2 = wrapper.get('[test-id="eventType-dns error-2"]')
const eventType3 = wrapper.get('[test-id="eventType-http error-3"]')
const eventType4 = wrapper.get('[test-id="eventType-dns error-4"]')
expect(eventType0.text()).toEqual('http error')
expect(eventType1.text()).toEqual('dns error')
expect(eventType2.text()).toEqual('dns error')
expect(eventType3.text()).toEqual('http error')
expect(eventType4.text()).toEqual('dns error')
const startTime0 = wrapper.get('[test-id="startTime-0"]')
const startTime1 = wrapper.get('[test-id="startTime-1"]')
const startTime2 = wrapper.get('[test-id="startTime-2"]')
const startTime3 = wrapper.get('[test-id="startTime-3"]')
const startTime4 = wrapper.get('[test-id="startTime-4"]')
expect(startTime0.text()).toEqual('2023-01-04T11:25:00+08:00')
expect(startTime1.text()).toEqual('2023-01-04T00:30:00+08:00')
expect(startTime2.text()).toEqual('2023-01-03T13:05:00+08:00')
expect(startTime3.text()).toEqual('2023-01-03T12:35:00+08:00')
expect(startTime4.text()).toEqual('2023-01-03T12:15:00+08:00')
resolve()
}, 300))
})
})