difuse-playwright/tests/dashboards/network-analyzer/deep-packet-inspection.spec.js

337 lines
13 KiB
JavaScript

import { test, expect } from '@playwright/test';
test.describe('General - Dashboard - Network Analyzer - Deep Packet Inspection', () => {
test.describe('Overview', () => {
test.beforeEach(async ({ page }) => {
await page.goto('network-analyzer/deep-packet-inspector', { waitUntil: 'load' });
});
test('Title', async ({ page }) => {
const title = await page.title();
expect(title).toBe(
'Difuse - Dashboard - Network Analyzer - Deep Packet Inspector (DPI)'
);
});
test('Deep Packet Inspection (DPI)', async ({ page }) => {
expect(await page.$('p:has-text("Deep Packet Inspection (DPI)")')).toBeTruthy();
});
test('Tabs', async ({ page }) => {
const overviewTab = await page.locator('#overview-tab-dpi');
const detailExplorerTab = await page.locator('#detail-tab-dpi');
const liveViewTab = await page.locator('#liveview-tab-dpi');
const settingsTab = await page.locator('#settings-tab-dpi');
expect(overviewTab && detailExplorerTab && liveViewTab && settingsTab).toBeTruthy();
});
test('Overview Top Cards', async ({ page }) => {
const inspectedFlows = await page.getByRole('heading', { name: 'Inspected Flows' });
const inspectedFlowsIcon = await page.locator('.mdi-magnify');
const inspectedFlowsValue = await page.textContent('#tip');
expect(typeof parseInt(inspectedFlowsValue)).toBe('number');
const applications = await page.getByRole('heading', { name: 'Applications' });
const applicationsIcon = await page.locator('.mdi-apps');
const applicationsValue = await page.textContent('#tia');
expect(typeof parseInt(applicationsValue)).toBe('number');
const countries = await page.getByRole('heading', { name: 'Countries' });
const countriesIcon = await page.locator('.mdi-earth');
const countriesValue = await page.textContent('#tcc');
expect(typeof parseInt(countriesValue)).toBe('number');
const domains = await page.getByRole('heading', { name: 'Domains' });
const domainsIcon = await page.locator('.mdi-server');
const domainsValue = await page.textContent('#tia');
expect(typeof parseInt(domainsValue)).toBe('number');
expect(inspectedFlows && applications && countries && domains).toBeTruthy();
expect(inspectedFlowsIcon && applicationsIcon && countriesIcon && domainsIcon).toBeTruthy();
});
test('Connections by Country', async ({ page }) => {
expect(await page.$('p:has-text("Connections by Country")')).toBeTruthy();
});
test('DPI Map', async ({ page }) => {
const dpiMap = await page.locator('#dpi-map');
const isVisible = await dpiMap.isVisible();
const isEnabled = await dpiMap.isEnabled();
expect(isVisible && isEnabled).toBeTruthy();
});
test('Detected Applications', async ({ page }) => {
expect(await page.$('p:has-text("Detected Application")')).toBeTruthy();
});
test('Detected Applications Filter', async ({ page }) => {
const filterField = await page.locator('#filter-field-apps');
expect(filterField).toBeTruthy();
const typeField = await page.locator('#filter-type-apps');
expect(typeField).toBeTruthy();
const valueField = await page.locator('#filter-value-categories');
expect(valueField).toBeTruthy();
});
test('Clear Filter', async ({ page }) => {
const clearFilter = await page.locator('#filter-clear-apps');
expect(clearFilter).toBeTruthy();
});
test('Download PDF Button', async ({ page }) => {
const button = await page.$('button[data-type="PDF"].download-table-apps');
expect(button).toBeTruthy();
const buttonName = await button.textContent();
expect(buttonName).toBe('Download PDF');
});
test('Download XLSX Button', async ({ page }) => {
const button = await page.$('button[data-type="XLSX"].download-table-apps');
expect(button).toBeTruthy();
const buttonName = await button.textContent();
expect(buttonName).toBe('Download XLSX');
});
test('Download CSV Button', async ({ page }) => {
const button = await page.$('button[data-type="CSV"].download-table-apps');
expect(button).toBeTruthy();
const buttonName = await button.textContent();
expect(buttonName).toBe('Download CSV');
});
test('Download JSON Button', async ({ page }) => {
const button = await page.$('button[data-type="JSON"].download-table-apps');
expect(button).toBeTruthy();
const buttonName = await button.textContent();
expect(buttonName).toBe('Download JSON');
});
});
test.describe('Detail Explorer Tab', () => {
test.beforeEach(async ({ page }) => {
await page.goto('network-analyzer/deep-packet-inspector', {
waitUntil: 'networkidle'
});
await page.click('#detail-tab-dpi');
await page.waitForTimeout(15000);
});
test('Detail Explorer Top Cards', async ({ page }) => {
const disoveredIps = await page.$('header', { name: 'Discovered IPs' });
const dicoveredIpsIcon = await page.locator('.mdi-magnify');
const disoveredIpsValue = await page.textContent('#deips');
expect(typeof parseInt(disoveredIpsValue)).toBe('number');
const disoveredMacS = await page.$('header', { name: 'Discovered MACs' });
const disoveredMacSicon = await page.locator('.mdi-magnify');
const disoveredMacSValue = await page.textContent('#demacs');
expect(typeof parseInt(disoveredMacSValue)).toBe('number');
expect(disoveredIps && disoveredMacS).toBeTruthy();
expect(dicoveredIpsIcon && disoveredMacSicon).toBeTruthy();
});
test('Detected Network Peers', async ({ page }) => {
expect(await page.$('p:has-text("Detected Network Peers")')).toBeTruthy();
});
test('Detected Network Filter', async ({ page }) => {
const filterField = await page.locator('#filter-field-de1');
const loadFilterField = await filterField.isVisible();
expect(loadFilterField).toBeTruthy();
const typeField = await page.locator('#filter-type-de1');
const loadType = await typeField.isVisible();
expect(loadType).toBeTruthy();
const valueField = await page.locator('#filter-value-de1');
const loadValue = await valueField.isVisible();
expect(loadValue).toBeTruthy();
});
test('Explorer Clear Filter Button', async ({ page }) => {
const clearFilter = await page.locator('#filter-clear-de1');
expect(await clearFilter.isVisible()).toBeTruthy();
});
test('Explorer Download PDF Button', async ({ page }) => {
const button = await page.$('button[data-type="PDF"].download-table-de1');
const isVisible = await button.isVisible();
const isEnabled = await button.isEnabled();
const buttonName = await button.textContent();
expect(isVisible && isEnabled).toBeTruthy();
expect(buttonName).toBe('Download PDF');
});
test('Explorer Download XLSX Button', async ({ page }) => {
const button = await page.$('button[data-type="XLSX"].download-table-de1');
const isVisible = await button.isVisible();
const buttonName = await button.textContent();
expect(isVisible).toBeTruthy();
expect(buttonName).toBe('Download XLSX');
});
test('Explorer Download CSV Button', async ({ page }) => {
const button = await page.$('button[data-type="CSV"].download-table-de1');
const isVisible = await button.isVisible();
const isEnabled = await button.isEnabled();
const buttonName = await button.textContent();
expect(isVisible && isEnabled).toBeTruthy();
expect(buttonName).toBe('Download CSV');
});
test('Explorer Download JSON Button', async ({ page }) => {
const button = await page.$('button[data-type="JSON"].download-table-de1');
const isVisible = await button.isVisible();
const isEnabled = await button.isEnabled();
const buttonName = await button.textContent();
expect(isVisible && isEnabled).toBeTruthy();
expect(buttonName).toBe('Download JSON');
});
test('Explore Peer Table', async ({ page }) => {
const table = page.locator('#de2-sec');
await expect(table).toBeHidden();
});
});
test.describe('Live View Tab', () => {
test.beforeEach(async ({ page }) => {
await page.goto('network-analyzer/deep-packet-inspector', { waitUntil: 'networkidle' });
await page.click('#liveview-tab-dpi');
await page.waitForTimeout(15000);
});
test('Toggle icon is Pause', async ({ page }) => {
const toggleIcon = await page.locator('#toggle-icon');
const classAttribute = await toggleIcon.getAttribute('class');
expect(classAttribute).toContain('mdi-pause');
});
test('Toggle icon is Play', async ({ page }) => {
await page.click('#toggle-icon');
const toggleIcon = await page.locator('#toggle-icon');
const classAttribute = await toggleIcon.getAttribute('class');
expect(classAttribute).toContain('mdi-play');
});
test('Live Code Check', async ({ page }) => {
const code = await page.locator('#liveview');
expect(code).toBeTruthy();
const codeData = await code.getAttribute('class');
expect(codeData).toContain('json');
});
});
test.describe('Settings', () => {
test.beforeEach(async ({ page }) => {
await page.goto('network-analyzer/deep-packet-inspector', { waitUntil: 'networkidle' });
await page.click('#settings-tab-dpi');
await page.waitForTimeout(15000);
});
test('Enable Label', async ({ page }) => {
expect(await page.$('label:has-text("Enable")')).toBeTruthy();
});
test('Enable Checkbox', async ({ page }) => {
const checkbox = await page.locator('input.cb-enable');
expect(checkbox).toBeTruthy();
});
test('Enable Switch Function', async ({ page }) => {
const checkBox = page.locator('.cb-enable');
const isChecked = await checkBox.isChecked();
if (!isChecked) {
await page.evaluate((checkbox) => checkbox.click(), await checkBox.elementHandle());
const saveButton = await page.getByRole('button', { name: 'Save' });
await saveButton.click();
await page.waitForTimeout(8000);
}
const overviewTab = await page.locator('#overview-tab-dpi');
const overviewTabElement = await overviewTab.elementHandle();
const overviewIsEnabled = await overviewTabElement.isEnabled();
const detailExplorerTab = await page.locator('#detail-tab-dpi');
const detailExplorerTabElement = await detailExplorerTab.elementHandle();
const detailExplorerTabIsEnabled = await detailExplorerTabElement.isEnabled();
const liveViewTab = await page.locator('#liveview-tab-dpi');
const liveViewTabElement = await liveViewTab.elementHandle();
const liveViewIsEnabled = await liveViewTabElement.isEnabled();
expect(overviewIsEnabled && detailExplorerTabIsEnabled && liveViewIsEnabled).toBe(true);
});
test('Disable Switch Function', async ({ page }) => {
const checkBox = page.locator('.cb-enable');
const isChecked = await checkBox.isChecked();
if (isChecked) {
await page.evaluate((checkbox) => checkbox.click(), await checkBox.elementHandle());
const saveButton = await page.getByRole('button', { name: 'Save' });
await saveButton.click();
await page.waitForTimeout(8000);
}
const overviewTabElement = await page.locator('#overview-tab-dpi').elementHandle();
const detailExplorerTabElement = await page.locator('#detail-tab-dpi').elementHandle();
const liveViewTabElement = await page.locator('#liveview-tab-dpi').elementHandle();
const overviewIsDisable = await overviewTabElement.getAttribute('disabled');
const detailExplorerIsDisable = await detailExplorerTabElement.getAttribute('disabled');
const liveViewIsDisable = await liveViewTabElement.getAttribute('disabled');
expect(overviewIsDisable && detailExplorerIsDisable && liveViewIsDisable).toBe('disabled');
});
test('Ignore Bittorrent Traffic', async ({ page }) => {
expect(await page.$('label:has-text("Ignore Bittorrent Traffic")')).toBeTruthy();
});
test('Ignore Bittorrent Traffic Checkbox', async ({ page }) => {
const checkbox = await page.locator('input.cb-ignorebtt');
expect(checkbox).toBeTruthy();
});
test('Maximum Storage', async ({ page }) => {
expect(await page.$('label:has-text("Maximum Storage")')).toBeTruthy();
});
test('Maximum Storage Input', async ({ page }) => {
const input = await page.locator('#max-storage');
expect(input).toBeTruthy();
});
test('Save Button', async ({ page }) => {
const button = await page.getByRole('button', { name: 'Save' });
const visible = await button.isVisible();
expect(visible).toBeTruthy();
const type = await button.getAttribute('type');
expect(type).toBe('submit');
});
});
});