Sin descripción

ioc.spec.js 2.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import { test } from '../../restFixture.js';
  2. import { expect } from '@playwright/test';
  3. import crypto from 'node:crypto';
  4. test.beforeEach(async({ page }) => {
  5. await page.goto('/case/ioc?cid=1');
  6. });
  7. test('should be able to update IOC', async ({ page }) => {
  8. const iocValue = `IOC value - ${crypto.randomUUID()}`;
  9. await page.getByRole('button', { name: 'Add IOC' }).click();
  10. await page.getByRole('button', { name: 'None' }).click();
  11. await page.getByRole('listbox').getByRole('option', { name: 'AS', exact: true }).click();
  12. await page.getByLabel('IOC Value *').fill(iocValue);
  13. await page.getByRole('button', { name: 'Save' }).click();
  14. await page.getByRole('link', { name: iocValue }).click();
  15. const newIocValue = `IOC value - ${crypto.randomUUID()}`;
  16. await page.getByLabel('IOC Value *').fill(newIocValue);
  17. await page.getByRole('button', { name: 'Update' }).click();
  18. await expect(page.getByRole('link', { name: newIocValue })).toBeVisible();
  19. });
  20. test('should not be able to create an IOC with the same type and value', async ({ page }) => {
  21. const iocValue = `IOC value - ${crypto.randomUUID()}`;
  22. await page.getByRole('button', { name: 'Add IOC' }).click();
  23. await page.getByRole('button', { name: 'None' }).click();
  24. await page.getByRole('listbox').getByRole('option', { name: 'AS', exact: true }).click();
  25. await page.getByLabel('IOC Value *').fill(iocValue);
  26. await page.getByRole('button', { name: 'Save' }).click();
  27. await page.getByRole('button', { name: 'Add IOC' }).click();
  28. await page.getByRole('button', { name: 'None' }).click();
  29. await page.getByRole('listbox').getByRole('option', { name: 'AS', exact: true }).click();
  30. await page.getByLabel('IOC Value *').fill(iocValue);
  31. await page.getByRole('button', { name: 'Save' }).click();
  32. await expect(page.getByText('IOC with same value and type already exists')).toBeVisible();
  33. await expect(page.getByRole('button', { name: 'Save' })).toBeVisible();
  34. });
  35. test('should paginate the IOCs', async ({ page, rest }) => {
  36. const caseName = `Case - ${crypto.randomUUID()}`;
  37. // TODO maybe should remove cases between each tests (like in the backend tests)
  38. let response = await rest.post('/api/v2/cases', {
  39. data: {
  40. case_name: caseName,
  41. case_description: 'Case description',
  42. case_customer: 1,
  43. case_soc_id: ''
  44. }
  45. });
  46. const caseIdentifier = (await response.json()).case_id;
  47. for (let i = 0; i < 11; i++) {
  48. await rest.post(`/api/v2/cases/${caseIdentifier}/iocs`, {
  49. data: {
  50. ioc_type_id: 1,
  51. ioc_value: `IOC value - ${crypto.randomUUID()}`,
  52. ioc_tlp_id: 2,
  53. ioc_description: 'rewrw',
  54. ioc_tags: ''
  55. }
  56. })
  57. }
  58. await page.goto(`/case/ioc?cid=${caseIdentifier}`);
  59. await expect(page.getByRole('link', { name: '2', exact: true })).toBeVisible();
  60. });