| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- import { test } from '../../restFixture.js';
- import { expect } from '@playwright/test';
- import crypto from 'node:crypto';
- test.beforeEach(async({ page }) => {
- await page.goto('/case/ioc?cid=1');
- });
- test('should be able to update IOC', async ({ page }) => {
- const iocValue = `IOC value - ${crypto.randomUUID()}`;
- await page.getByRole('button', { name: 'Add IOC' }).click();
- await page.getByRole('button', { name: 'None' }).click();
- await page.getByRole('listbox').getByRole('option', { name: 'AS', exact: true }).click();
- await page.getByLabel('IOC Value *').fill(iocValue);
- await page.getByRole('button', { name: 'Save' }).click();
- await page.getByRole('link', { name: iocValue }).click();
- const newIocValue = `IOC value - ${crypto.randomUUID()}`;
- await page.getByLabel('IOC Value *').fill(newIocValue);
- await page.getByRole('button', { name: 'Update' }).click();
- await expect(page.getByRole('link', { name: newIocValue })).toBeVisible();
- });
- test('should not be able to create an IOC with the same type and value', async ({ page }) => {
- const iocValue = `IOC value - ${crypto.randomUUID()}`;
- await page.getByRole('button', { name: 'Add IOC' }).click();
- await page.getByRole('button', { name: 'None' }).click();
- await page.getByRole('listbox').getByRole('option', { name: 'AS', exact: true }).click();
- await page.getByLabel('IOC Value *').fill(iocValue);
- await page.getByRole('button', { name: 'Save' }).click();
- await page.getByRole('button', { name: 'Add IOC' }).click();
- await page.getByRole('button', { name: 'None' }).click();
- await page.getByRole('listbox').getByRole('option', { name: 'AS', exact: true }).click();
- await page.getByLabel('IOC Value *').fill(iocValue);
- await page.getByRole('button', { name: 'Save' }).click();
- await expect(page.getByText('IOC with same value and type already exists')).toBeVisible();
- await expect(page.getByRole('button', { name: 'Save' })).toBeVisible();
- });
- test('should paginate the IOCs', async ({ page, rest }) => {
- const caseName = `Case - ${crypto.randomUUID()}`;
- // TODO maybe should remove cases between each tests (like in the backend tests)
- let response = await rest.post('/api/v2/cases', {
- data: {
- case_name: caseName,
- case_description: 'Case description',
- case_customer: 1,
- case_soc_id: ''
- }
- });
- const caseIdentifier = (await response.json()).case_id;
- for (let i = 0; i < 11; i++) {
- await rest.post(`/api/v2/cases/${caseIdentifier}/iocs`, {
- data: {
- ioc_type_id: 1,
- ioc_value: `IOC value - ${crypto.randomUUID()}`,
- ioc_tlp_id: 2,
- ioc_description: 'rewrw',
- ioc_tags: ''
- }
- })
- }
- await page.goto(`/case/ioc?cid=${caseIdentifier}`);
- await expect(page.getByRole('link', { name: '2', exact: true })).toBeVisible();
- });
|