diff --git a/alfa-client/apps/admin/src/test/helm/network_policy_test.yaml b/alfa-client/apps/admin/src/test/helm/network_policy_test.yaml index 7f7cedbca17f4c24972c206bf45d4d079cf771c7..2032db88a659c5b7fcf67aa199d6dba893bf5397 100644 --- a/alfa-client/apps/admin/src/test/helm/network_policy_test.yaml +++ b/alfa-client/apps/admin/src/test/helm/network_policy_test.yaml @@ -28,20 +28,26 @@ release: namespace: by-helm-test templates: - templates/network_policy.yaml -set: - networkPolicy: - dnsServerNamespace: kube-system - ssoPublicIp: 1.1.1.1/32 + tests: - it: should match apiVersion + set: + networkPolicy: + dnsServerNamespace: kube-system asserts: - isAPIVersion: of: networking.k8s.io/v1 - it: should match kind + set: + networkPolicy: + dnsServerNamespace: kube-system asserts: - isKind: of: NetworkPolicy - it: validate metadata + set: + networkPolicy: + dnsServerNamespace: kube-system asserts: - equal: path: metadata @@ -50,6 +56,9 @@ tests: namespace: by-helm-test - it: should add egress rule to administration service + set: + networkPolicy: + dnsServerNamespace: kube-system asserts: - contains: path: spec.egress @@ -84,7 +93,6 @@ tests: - it: should add additionalIngressConfig local set: networkPolicy: - ssoPublicIp: 51.89.117.53/32 dnsServerNamespace: test-namespace-dns additionalIngressConfigLocal: - from: @@ -102,7 +110,6 @@ tests: - it: should add additionalIngressConfig global set: networkPolicy: - ssoPublicIp: 51.89.117.53/32 dnsServerNamespace: test-namespace-dns additionalIngressConfigGlobal: - from: @@ -121,7 +128,6 @@ tests: - it: should add additionalEgressConfig local set: networkPolicy: - ssoPublicIp: 51.89.117.53/32 dnsServerNamespace: test-dns-namespace additionalEgressConfigLocal: - to: @@ -138,7 +144,6 @@ tests: - it: should add additionalEgressConfig global set: networkPolicy: - ssoPublicIp: 51.89.117.53/32 dnsServerNamespace: test-dns-namespace additionalEgressConfigGlobal: - to: @@ -164,9 +169,23 @@ tests: - it: test network policy unset should be disabled set: networkPolicy: - ssoPublicIp: 1.1.1.1 disabled: false dnsServerNamespace: test-dns-server-namespace asserts: - hasDocuments: count: 1 + - it: test network policy dnsServerNamespace must be set message + set: + networkPolicy: + disabled: false + asserts: + - failedTemplate: + errorMessage: networkPolicy.dnsServerNamespace must be set + + - it: test network policy should be enabled by default + set: + networkPolicy: + dnsServerNamespace: test-dns-server-namespace + asserts: + - hasDocuments: + count: 1 \ No newline at end of file diff --git a/alfa-client/apps/alfa-e2e/docker-compose.yml b/alfa-client/apps/alfa-e2e/docker-compose.yml index 552a59c14cb9264c1e1c090cf624ca9303f2566f..e87654d697b9a340f65e9a666dff2fcca1b5ad98 100644 --- a/alfa-client/apps/alfa-e2e/docker-compose.yml +++ b/alfa-client/apps/alfa-e2e/docker-compose.yml @@ -94,8 +94,6 @@ services: - LOGGING_CONFIG=classpath:log4j2-local.xml - BPL_DEBUG_ENABLED=true - BPL_DEBUG_PORT=5000 - # bescheid-wizard - - OZGCLOUD_FEATURE_BESCHEID-WIZARD=true - OZGCLOUD_VORGANG_BESCHEID_0_FORM_ENGINE_NAME=FormSolutions - OZGCLOUD_VORGANG_BESCHEID_0_FORM_ID=KFAS_STAGE_KI_10_Haltverbot_LANDESHACKATHON ports: diff --git a/alfa-client/apps/alfa-e2e/src/components/attachment/attachment.e2e.component.ts b/alfa-client/apps/alfa-e2e/src/components/attachment/attachment.e2e.component.ts index 4c4377f0230fec13df94e92332742f5776c6cec3..c9fa056dfbab2bc5a36c3d600cbc7c135a78db99 100644 --- a/alfa-client/apps/alfa-e2e/src/components/attachment/attachment.e2e.component.ts +++ b/alfa-client/apps/alfa-e2e/src/components/attachment/attachment.e2e.component.ts @@ -21,7 +21,6 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { getTestElement } from '../../support/cypress-helper'; import { convertToDataTestId } from '../../support/tech.util'; export class AttachmentContainerE2EComponent { @@ -39,7 +38,7 @@ export class AttachmentContainerE2EComponent { export class AttachmentListE2EComponent { private readonly locatorRoot: string = 'file-list'; - private readonly downloadAttachmentsButton: string = 'download-button'; + private readonly downloadAttachmentsButton: string = 'download-archive-file-button'; public getRoot() { return cy.getTestElement(this.locatorRoot); @@ -50,11 +49,11 @@ export class AttachmentListE2EComponent { } public getDownloadAttachmentsButton(): Cypress.Chainable<JQuery<HTMLElement>> { - return getTestElement(this.downloadAttachmentsButton); + return this.getRoot().findTestElementWithClass(this.downloadAttachmentsButton); } - public downloadAttachments() { - return this.getDownloadAttachmentsButton().should('exist').click(); + public downloadAttachments(): Cypress.Chainable<any> { + return this.getDownloadAttachmentsButton().click(); } } diff --git a/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-views.e2e.component.ts b/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-views.e2e.component.ts index f1240912ebb55269bfea578cd2a72a23187a61a6..446c287de76ee0c62fd746f6df9241c95ed0ce92 100644 --- a/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-views.e2e.component.ts +++ b/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-views.e2e.component.ts @@ -87,6 +87,6 @@ export class VorgangViewE2EComponent { } public getButton() { - return this.getRoot().getTestElementWithClass(this.button); + return this.getRoot().findTestElementWithClass(this.button); } } diff --git a/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang.formular-daten.historie.e2e.component.ts b/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang.formular-daten.historie.e2e.component.ts index 2b0fe296fec1a11d59f843624c441ae14788dea9..d4b039afbb15779a709339c390a2a4f6d8c70e73 100644 --- a/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang.formular-daten.historie.e2e.component.ts +++ b/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang.formular-daten.historie.e2e.component.ts @@ -205,14 +205,14 @@ export class BescheidHistorieItemE2EComponent { } public getStatus() { - return cy.getTestElementWithClass(this.status); + return this.getRoot().findTestElementWithClass(this.status); } public getBescheidDokumentText() { - return cy.getTestElementWithClass(this.bescheidDokument); + return this.getRoot().findTestElementWithClass(this.bescheidDokument); } public getBescheidAnhaengeText() { - return cy.getTestElementWithClass(this.bescheidAnhaenge); + return this.getRoot().findTestElementWithClass(this.bescheidAnhaenge); } } diff --git a/alfa-client/apps/alfa-e2e/src/e2e/einheitlicher-ansprechpartner/vorgang-detail/vorgang-loeschen-anfordern.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/einheitlicher-ansprechpartner/vorgang-detail/vorgang-loeschen-anfordern.cy.ts index 91617d3639ed07f3107ce74e274de36b9d319262..c22d4da4f7d654fdbf843bc28381da807dd31771 100644 --- a/alfa-client/apps/alfa-e2e/src/e2e/einheitlicher-ansprechpartner/vorgang-detail/vorgang-loeschen-anfordern.cy.ts +++ b/alfa-client/apps/alfa-e2e/src/e2e/einheitlicher-ansprechpartner/vorgang-detail/vorgang-loeschen-anfordern.cy.ts @@ -32,7 +32,7 @@ import { } from '../../../model/vorgang'; import { MainPage, waitForSpinnerToDisappear } from '../../../page-objects/main.po'; import { VorgangPage } from '../../../page-objects/vorgang.po'; -import { dropCollections } from '../../../support/cypress-helper'; +import { dropCollections, wait } from '../../../support/cypress-helper'; import { contains, exist, haveText, notExist } from '../../../support/cypress.util'; import { loginAsEmil } from '../../../support/user-util'; import { buildVorgang, initVorgaenge, objectIds } from '../../../support/vorgang-util'; @@ -167,6 +167,8 @@ describe('Vorgang löschen anfordern', () => { it('should show status Abgeschlossen', () => { notExist(vorgangPage.getProgressBar()); + wait(2000, 'Statusänderung flaky'); + cy.scrollTo(0, -500); haveText( vorgangPage.getVorgangDetailHeader().getStatus(), @@ -277,6 +279,10 @@ describe('Vorgang löschen anfordern', () => { it('should show status Verworfen', () => { notExist(vorgangPage.getProgressBar()); + wait(2000, 'Statusänderung im UI nicht schnell genug'); + cy.scrollTo(0, -500); + + vorgangPage.getVorgangDetailHeader().getStatus(); haveText( vorgangPage.getVorgangDetailHeader().getStatus(), vorgangStatusLabelE2E[VorgangStatusE2E.VERWORFEN], diff --git a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/loesch-anforderung/loeschen-anfordern.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/loesch-anforderung/loeschen-anfordern.cy.ts index 6ae63d71c0d8c4d0c7477a53749f5784fcd19a96..6eb2921858a19d25aeb0423fd4c03a2a4378831e 100644 --- a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/loesch-anforderung/loeschen-anfordern.cy.ts +++ b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/loesch-anforderung/loeschen-anfordern.cy.ts @@ -21,7 +21,7 @@ import { } from '../../../model/vorgang'; import { MainPage, waitForSpinnerToDisappear } from '../../../page-objects/main.po'; import { VorgangPage } from '../../../page-objects/vorgang.po'; -import { dropCollections, visitUrl } from '../../../support/cypress-helper'; +import { dropCollections, visitUrl, wait } from '../../../support/cypress-helper'; import { contains, exist, haveText, notExist } from '../../../support/cypress.util'; import { loginAsLudwig, loginAsSabine } from '../../../support/user-util'; import { buildVorgang, initVorgaenge, initVorgang, objectIds } from '../../../support/vorgang-util'; @@ -161,6 +161,9 @@ describe('Vorgang Löschen anfordern', () => { }); it('should have status zu Löschen', () => { + wait(2000, 'Statusänderung im UI nicht schnell genug'); + cy.scrollTo(0, -500); + haveText( vorgangPage.getVorgangDetailHeader().getStatus(), vorgangStatusLabelE2E[VorgangStatusE2E.ZU_LOESCHEN], @@ -299,6 +302,9 @@ describe('Vorgang Löschen anfordern', () => { it('should show status Abgeschlossen', () => { notExist(vorgangPage.getProgressBar()); + wait(2000, 'Statusänderung im UI nicht schnell genug'); + cy.scrollTo(0, -500); + haveText( vorgangPage.getVorgangDetailHeader().getStatus(), vorgangStatusLabelE2E[VorgangStatusE2E.ABGESCHLOSSEN], @@ -408,6 +414,9 @@ describe('Vorgang Löschen anfordern', () => { it('should show status Verworfen', () => { notExist(vorgangPage.getProgressBar()); + wait(2000, 'Statusänderung im UI nicht schnell genug'); + cy.scrollTo(0, -500); + haveText( vorgangPage.getVorgangDetailHeader().getStatus(), vorgangStatusLabelE2E[VorgangStatusE2E.VERWORFEN], diff --git a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-anhang/vorgang-anhang-herunterladen.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-anhang/vorgang-anhang-herunterladen.cy.ts index 81e7d7c8526043a1cf2690022eefc9dce35bb5a3..946a0c86da3a2c4dade2896dbaeb09ab0734084a 100644 --- a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-anhang/vorgang-anhang-herunterladen.cy.ts +++ b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-anhang/vorgang-anhang-herunterladen.cy.ts @@ -43,6 +43,7 @@ import { } from '../../../support/binary-file-util'; import { countDownloadFiles, + deleteDownloadFolder, dropCollections, getDownloadFiles, readFileFromDownloads, @@ -68,6 +69,8 @@ describe('Vorgang Anhänge', () => { const attachmentList: AttachmentListE2EComponent = new AttachmentListE2EComponent(); const formularDatenContainer: VorgangFormularDatenE2EComponent = vorgangPage.getFormularDatenContainer(); + const vorgangDatenFormular: VorgangFormularDatenE2EComponent = + vorgangPage.getFormularDatenContainer(); const xmlRepresentation: FileDataE2E = createXmlRepresentation(); @@ -138,14 +141,18 @@ describe('Vorgang Anhänge', () => { exist(readFileFromDownloads(buildDownloadFileName(pdfAttachmentName))); }); - it('should download attachments', () => { - attachmentList.downloadAttachments().then(() => { - getDownloadFiles().then((files) => { - unzipDownloadFile(files[0]); - }); + it('should download attachment zip file', () => { + deleteDownloadFolder().then(() => { + attachmentList.downloadAttachments(); + }); + }); - countDownloadFiles().then((count) => { - expect(count).to.eq(6); + it('should unzip attachment file', () => { + getDownloadFiles().then((files) => { + unzipDownloadFile(files[0]).then(() => { + countDownloadFiles().then((count) => { + expect(count).to.eq(3); + }); }); }); }); diff --git a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-bescheid/vorgang-bescheid-abbrechen.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-bescheid/vorgang-bescheid-abbrechen.cy.ts index c711f48169700c17117d351e530c258d6b7a2784..81ce0e4386153c2cc241067a25805d9e5ac2d97f 100644 --- a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-bescheid/vorgang-bescheid-abbrechen.cy.ts +++ b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-bescheid/vorgang-bescheid-abbrechen.cy.ts @@ -14,7 +14,7 @@ import 'cypress-real-events/support'; import { VorgangListE2EComponent } from '../../../components/vorgang/vorgang-list.e2e.component'; import { MainPage, waitForSpinnerToDisappear } from '../../../page-objects/main.po'; import { VorgangPage } from '../../../page-objects/vorgang.po'; -import { dropCollections, wait } from '../../../support/cypress-helper'; +import { dropCollections } from '../../../support/cypress-helper'; import { contains, exist, haveText, notExist } from '../../../support/cypress.util'; import { TEST_FILE_BESCHEID_ANHANG_VALID, @@ -58,7 +58,7 @@ describe('Vorgang - Bescheid abbrechen', () => { dropCollections(); }); - describe('Discard changes after click on Verwerfen', () => { + describe.skip('Sollte gefixt sein nach OZG-6185 - Discard changes after click on Verwerfen', () => { it('should click abgelehnt, enter date, and continue to step 2', () => { vorgangList.getListItem(bescheidVorgang.name).getRoot().click(); waitForSpinnerToDisappear(); @@ -103,8 +103,12 @@ describe('Vorgang - Bescheid abbrechen', () => { }); describe('Keep changes after click on Entwurf speichern', () => { + it('click Vorgang', () => { + vorgangList.getListItem(bescheidVorgang.name).getRoot().click(); + waitForSpinnerToDisappear(); + }); + it('should have default Bescheid status and continue to step 2', () => { - wait(1000); vorgangFormularButtons.getBescheidenButton().click(); contains(bescheidWizard.getStatusText(), bewilligtText + ' ' + getAdjustedDateGerman(0)); bescheidWizard.weiter(); diff --git a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-dateien-tab.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-dateien-tab.cy.ts index ffb27bceffefc12a051fddd406c9037ca77b876d..85fe66298c9e1653dd2d47ddb8b6e4108c71fc2c 100644 --- a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-dateien-tab.cy.ts +++ b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-dateien-tab.cy.ts @@ -127,7 +127,7 @@ describe('Dateien Tab', () => { it('should show attachments and download button', () => { exist(vorgangDatenFormular.getFileElementByName(jpgFileName)); exist(vorgangDatenFormular.getFileElementByName(pdfFileName)); - exist(attachmentList.getDownloadAttachmentsButton()); + exist(attachmentList.getDownloadAttachmentsButton(vorgangDatenFormular.getRoot())); }); }); }); diff --git a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/wiedervorlage/wiedervorlage.erledigen.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/wiedervorlage/wiedervorlage.erledigen.cy.ts index 6d63193ad9a0fae0dacccbd7b9f79cab989cdb88..18f70ef0d366d1d15565d424f8bfe8759c44b43a 100644 --- a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/wiedervorlage/wiedervorlage.erledigen.cy.ts +++ b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/wiedervorlage/wiedervorlage.erledigen.cy.ts @@ -308,20 +308,19 @@ describe('Wiedervorlage erledigen/wiedereroeffnen', () => { }); //Test an die richtige Stelle verschieben und den Test vereinfachen - describe('View item icon', () => { + describe('View Wiedervorlage view icon', () => { const wiedervorlage: WiedervorlageInVorgangE2EComponent = wiedervorlageContainerInVorgang.getWiedervorlage(wiedervorlageZumWiedereroeffnen.betreff); const locatorIconIsOverdue: string = 'wiedervorlage-icon-is-overdue'; const locatorIconDefault: string = 'wiedervorlage-icon-default'; it('back to vorgang list', () => { - wait(500); vorgangPage.getSubnavigation().getBackButton().click(); waitForSpinnerToDisappear(); }); it('should show red icon', () => { - exist(wiedervorlagenView.getRoot().getTestElementWithClass(locatorIconIsOverdue)); + exist(wiedervorlagenView.getRoot().findTestElementWithClass(locatorIconIsOverdue)); }); it('Open Vorgang-Detail-Page', () => { @@ -330,8 +329,9 @@ describe('Wiedervorlage erledigen/wiedereroeffnen', () => { }); it('should mark as erledigt', () => { - wait(500); - wiedervorlage.getLink().click(); + wait(500, 'Flaky - page content changed while waiting'); + const link = wiedervorlage.getLink(); + link.click(); waitForSpinnerToDisappear(); subnavigation.erledigen(); waitForSpinnerToDisappear(); @@ -340,13 +340,12 @@ describe('Wiedervorlage erledigen/wiedereroeffnen', () => { }); it('back to vorgang list', () => { - wait(500); vorgangPage.getSubnavigation().getBackButton().click(); waitForSpinnerToDisappear(); }); it('should show default icon', () => { - exist(wiedervorlagenView.getRoot().getTestElementWithClass(locatorIconDefault)); + exist(wiedervorlagenView.getRoot().findTestElementWithClass(locatorIconDefault)); }); }); }); diff --git a/alfa-client/apps/alfa-e2e/src/fixtures/argocd/by-main-dev.yaml b/alfa-client/apps/alfa-e2e/src/fixtures/argocd/by-main-dev.yaml index 480b4e1dd5db361f8aff3f159d6302851b98a875..c73587a0b07ff1fb36e484323bd8f5ea31a19300 100644 --- a/alfa-client/apps/alfa-e2e/src/fixtures/argocd/by-main-dev.yaml +++ b/alfa-client/apps/alfa-e2e/src/fixtures/argocd/by-main-dev.yaml @@ -4,12 +4,11 @@ ozgcloud: e2eTest: true project: destinations: - - namespace: '*' + - namespace: "*" server: https://kubernetes.default.svc alfa: env: - overrideSpringProfiles: 'oc,e2e,dev' - ozgcloud_feature_bescheid-wizard: "true" + overrideSpringProfiles: "oc,e2e,dev" ingress: use_staging_cert: true ozgcloud: @@ -20,7 +19,7 @@ alfa: vorgang_manager: env: - overrideSpringProfiles: 'oc,e2e,dev' + overrideSpringProfiles: "oc,e2e,dev" ozgcloud_bescheid_smart_documents_url: http://smocker:8080/smartdocuments ozgcloud_bescheid_smart_documents_basic_auth_username: MGM ozgcloud_bescheid_smart_documents_basic_auth_password: MGM @@ -80,7 +79,7 @@ smocker: response: status: 500 headers: - body: 'Da ist etwas schiefgelaufen' + body: "Da ist etwas schiefgelaufen" # bayernid - request: diff --git a/alfa-client/apps/alfa-e2e/src/support/commands.ts b/alfa-client/apps/alfa-e2e/src/support/commands.ts index 1d1403d708893387744dec0e12e7783f116802a6..180457361a59046324cdf21cdb28989945f81b79 100644 --- a/alfa-client/apps/alfa-e2e/src/support/commands.ts +++ b/alfa-client/apps/alfa-e2e/src/support/commands.ts @@ -91,6 +91,9 @@ Cypress.Commands.add('getTestElement', (selector, ...args) => { }); Cypress.Commands.add('getTestElementWithClass', (selector, ...args) => { + console.log( + 'Achtung: Potentiell nicht eindeutiges Ergebnis, weil eine data-test-class mit cy.get() von der DOM-Root aus gesucht wird.', + ); return cy.get(`[${DATA_TEST_CLASS}="${selector}"]`, ...args); }); @@ -106,7 +109,7 @@ Cypress.Commands.add( }, ); -Cypress.Commands.add('findElement', { prevSubject: true }, (subject: any, selector) => { +Cypress.Commands.add('findElement', { prevSubject: true }, (subject: any, selector: string) => { return subject.find(selector); }); @@ -250,8 +253,8 @@ Cypress.Commands.add('addMockToSmocker', (mock) => { url: `${getSmockerUrl()}/mocks`, body: mockFile, headers: { - "Content-Type": "application/x-yaml" - } + 'Content-Type': 'application/x-yaml', + }, }); }); }); @@ -270,4 +273,4 @@ function getSmockerUrl(): string { function getSmockerEnv(): string { return Cypress.env(CypressEnv.SMOCKER); -} \ No newline at end of file +} diff --git a/alfa-client/apps/alfa-e2e/src/support/cypress-helper.ts b/alfa-client/apps/alfa-e2e/src/support/cypress-helper.ts index 729036172148758e8b0c9563f107f5a15b7d8d0a..90c0c0b4058f983b0cb51861d8b632084cb2a8a3 100644 --- a/alfa-client/apps/alfa-e2e/src/support/cypress-helper.ts +++ b/alfa-client/apps/alfa-e2e/src/support/cypress-helper.ts @@ -138,8 +138,8 @@ export function deleteDownloadFolder() { return cy.task(CypressTasks.DELETE_FOLDER, DOWNLOAD_FOLDER); } -export function unzipDownloadFile(file: string): void { - cy.task(CypressTasks.UNZIP_FILE, { folderName: DOWNLOAD_FOLDER, fileName: file }); +export function unzipDownloadFile(file: string) { + return cy.task(CypressTasks.UNZIP_FILE, { folderName: DOWNLOAD_FOLDER, fileName: file }); } export function getDownloadFiles(): Cypress.Chainable<Array<string>> { @@ -179,8 +179,11 @@ export function urlShouldInclude(text: string) { } //TODO: anders loesen -> bad practice -export function wait(ms: number): void { +export function wait(ms: number, reason = ''): void { cy.wait(ms); + if (reason) { + console.log(`Had to wait ${ms}ms because of: ${reason}`); + } } // diff --git a/alfa-client/apps/alfa-e2e/src/support/cypress.util.ts b/alfa-client/apps/alfa-e2e/src/support/cypress.util.ts index 34935393bc51d6b7acf38b8494e7c2ba70f25689..4440874cbfcc512a5b23c9394c60f50f15e07d21 100644 --- a/alfa-client/apps/alfa-e2e/src/support/cypress.util.ts +++ b/alfa-client/apps/alfa-e2e/src/support/cypress.util.ts @@ -103,6 +103,10 @@ export function shouldHaveAttributeBeLowerThan(element: any, attributeName: stri } // +export function shouldHaveAttribute(element: any, name: string, value: string) { + element.should('have.attr', name, value); +} + export function visible(element: any) { element.should('be.visible'); } diff --git a/alfa-client/libs/design-system/src/lib/button/button.component.ts b/alfa-client/libs/design-system/src/lib/button/button.component.ts index 6975ba2e675a7b25128b6c4f0861e84b55d3f50a..58ba7ec0d96c8c0eb0516c9fbc367b885d686837 100644 --- a/alfa-client/libs/design-system/src/lib/button/button.component.ts +++ b/alfa-client/libs/design-system/src/lib/button/button.component.ts @@ -38,7 +38,7 @@ type ButtonVariants = VariantProps<typeof buttonVariants>; [disabled]="isLoading" [attr.aria-disabled]="isLoading" [attr.aria-label]="text" - data-test-id="download-button" + [attr.data-test-id]="dataTestId" (click)="clickEmitter.emit()" > <ng-content *ngIf="!isLoading" select="[icon]"></ng-content> diff --git a/alfa-client/libs/design-system/test/helm/network_policy_test.yaml b/alfa-client/libs/design-system/test/helm/network_policy_test.yaml index 7e828b00c019b1f771e7c6adc373b09a431e0a76..7820c1acdcdfafa48427c049c6292757ba2ae6f5 100644 --- a/alfa-client/libs/design-system/test/helm/network_policy_test.yaml +++ b/alfa-client/libs/design-system/test/helm/network_policy_test.yaml @@ -28,20 +28,26 @@ release: namespace: by-helm-test templates: - templates/network_policy.yaml -set: - networkPolicy: - dnsServerNamespace: kube-system - ssoPublicIp: 1.1.1.1/32 + tests: - it: should match apiVersion + set: + networkPolicy: + dnsServerNamespace: kube-system asserts: - isAPIVersion: of: networking.k8s.io/v1 - it: should match kind + set: + networkPolicy: + dnsServerNamespace: kube-system asserts: - isKind: of: NetworkPolicy - it: validate metadata + set: + networkPolicy: + dnsServerNamespace: kube-system asserts: - equal: path: metadata @@ -75,7 +81,6 @@ tests: - it: should add additionalIngressConfig local set: networkPolicy: - ssoPublicIp: 51.89.117.53/32 dnsServerNamespace: test-namespace-dns additionalIngressConfigLocal: - from: @@ -93,7 +98,6 @@ tests: - it: should add additionalIngressConfig global set: networkPolicy: - ssoPublicIp: 51.89.117.53/32 dnsServerNamespace: test-namespace-dns additionalIngressConfigGlobal: - from: @@ -112,7 +116,6 @@ tests: - it: should add additionalEgressConfig local set: networkPolicy: - ssoPublicIp: 51.89.117.53/32 dnsServerNamespace: test-dns-namespace additionalEgressConfigLocal: - to: @@ -129,7 +132,6 @@ tests: - it: should add additionalEgressConfig global set: networkPolicy: - ssoPublicIp: 51.89.117.53/32 dnsServerNamespace: test-dns-namespace additionalEgressConfigGlobal: - to: @@ -155,9 +157,23 @@ tests: - it: test network policy unset should be disabled set: networkPolicy: - ssoPublicIp: 1.1.1.1 disabled: false dnsServerNamespace: test-dns-server-namespace asserts: - hasDocuments: count: 1 + - it: test network policy dnsServerNamespace must be set message + set: + networkPolicy: + disabled: false + asserts: + - failedTemplate: + errorMessage: networkPolicy.dnsServerNamespace must be set + + - it: test network policy should be enabled by default + set: + networkPolicy: + dnsServerNamespace: test-dns-server-namespace + asserts: + - hasDocuments: + count: 1 \ No newline at end of file diff --git a/alfa-client/libs/ui/src/lib/assets/update.svg b/alfa-client/libs/ui/src/lib/assets/update.svg new file mode 100644 index 0000000000000000000000000000000000000000..1eb6a0751c7673b2de4a52c06aba58f191f32570 --- /dev/null +++ b/alfa-client/libs/ui/src/lib/assets/update.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368"><path d="M480-120q-75 0-140.5-28.5t-114-77q-48.5-48.5-77-114T120-480q0-75 28.5-140.5t77-114q48.5-48.5 114-77T480-840q82 0 155.5 35T760-706v-94h80v240H600v-80h110q-41-56-101-88t-129-32q-117 0-198.5 81.5T200-480q0 117 81.5 198.5T480-200q105 0 183.5-68T756-440h82q-15 137-117.5 228.5T480-120Zm112-192L440-464v-216h80v184l128 128-56 56Z"/></svg> \ No newline at end of file diff --git a/alfa-client/libs/ui/src/lib/icon/icon.model.ts b/alfa-client/libs/ui/src/lib/icon/icon.model.ts index a7b7d26ba85860a97d0977b9a1d2cdfa2bca0a43..a7fa9937a697357073f444068efd1e352271a745 100644 --- a/alfa-client/libs/ui/src/lib/icon/icon.model.ts +++ b/alfa-client/libs/ui/src/lib/icon/icon.model.ts @@ -43,4 +43,5 @@ export enum Icons { VORGANG_VORPRUEFEN = 'vorgang_vorpruefen', XDOMEA = 'xdomea_file', PASTE_FROM_CLIPBOARD = 'paste_from_clipboard', + UPDATE = 'update', } diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.formservice.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.formservice.spec.ts index 9e29f9d8172e162e37e5187cb5729efe2dd45eaf..5c631ffeb6e6c4007028f95655df19047482b1b9 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.formservice.spec.ts +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.formservice.spec.ts @@ -9,10 +9,10 @@ import { import { BinaryFileResource } from '@alfa-client/binary-file-shared'; import { CommandLinkRel, CommandResource } from '@alfa-client/command-shared'; import { - createStateResource, EMPTY_STRING, - formatForDatabase, StateResource, + createStateResource, + formatForDatabase, } from '@alfa-client/tech-shared'; import { Mock, mock, useFromMock } from '@alfa-client/test-utils'; import { VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; @@ -114,6 +114,22 @@ describe('BescheidenFormService', () => { expect(service.sendByManual.value).toBeFalsy(); }); + it('should not emit if value not changed', () => { + service.sendByManual.next(true); + service.sendByManual.next = jest.fn(); + + service.updateSendByManual(BescheidSendBy.MANUAL); + + expect(service.sendByManual.next).not.toHaveBeenCalled(); + }); + it('should emit on value change', () => { + service.sendByManual.next(false); + service.sendByManual.next = jest.fn(); + + service.updateSendByManual(BescheidSendBy.MANUAL); + + expect(service.sendByManual.next).toHaveBeenCalled(); + }); }); describe('initializeFormChanges', () => { diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.formservice.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.formservice.ts index d9e05716a5c15264f7f5b671ecec6a8f61cc1ca1..b079362062868d5fd121503655948db80538f466 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.formservice.ts +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.formservice.ts @@ -10,14 +10,14 @@ import { BinaryFileResource } from '@alfa-client/binary-file-shared'; import { CommandResource, tapOnCommandSuccessfullyDone } from '@alfa-client/command-shared'; import { AbstractFormService, - convertToBoolean, EMPTY_STRING, - formatForDatabase, HttpError, + StateResource, + convertToBoolean, + formatForDatabase, isLoaded, isNotEmpty, isNotNil, - StateResource, } from '@alfa-client/tech-shared'; import { VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; import { Injectable, OnDestroy } from '@angular/core'; @@ -28,18 +28,18 @@ import { UntypedFormControl, UntypedFormGroup, } from '@angular/forms'; -import { getUrl, hasLink, Resource, ResourceUri } from '@ngxp/rest'; +import { Resource, ResourceUri, getUrl, hasLink } from '@ngxp/rest'; import { isEmpty, isNil, isUndefined } from 'lodash-es'; import { BehaviorSubject, + Observable, + Subject, + Subscription, combineLatest, filter, first, map, - Observable, startWith, - Subject, - Subscription, } from 'rxjs'; @Injectable() @@ -92,7 +92,8 @@ export class BescheidenFormService extends AbstractFormService implements OnDest } updateSendByManual(sendBy: BescheidSendBy): void { - this.sendByManual.next(sendBy === BescheidSendBy.MANUAL); + const isSendByManual = sendBy === BescheidSendBy.MANUAL; + if (isSendByManual !== this.sendByManual.value) this.sendByManual.next(isSendByManual); } initializeFormChanges(): void { diff --git a/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search/vorgang-search.component.html b/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search/vorgang-search.component.html index f1ac25eb71af847bdcb522fe3f231474f1341c78..dc08624feba50617540824639b130daa51881517 100644 --- a/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search/vorgang-search.component.html +++ b/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search/vorgang-search.component.html @@ -30,6 +30,7 @@ class="search-field" data-test-id="search-form" > + <span aria-live="polite" class="sr-only" role="status">{{ searchResultPreviewLabel }}</span> <button #searchSubmitButton type="submit" @@ -61,14 +62,14 @@ (optionSelected)="formService.submitByPreviewList($event.option.value, searchString)" > <ozgcloud-spinner - [stateResource]="vorgangSearchPreviewList" - [class.autocomplete-spinner]="vorgangSearchPreviewList.loading" + [stateResource]="vorgangListPreview" + [class.autocomplete-spinner]="vorgangListPreview.loading" ></ozgcloud-spinner> - <ng-container *ngIf="vorgangSearchPreviewList.resource" data-test-id="search-preview-list"> + <ng-container *ngIf="vorgangListPreview.resource" data-test-id="search-preview-list"> <mat-option *ngFor=" - let vorgang of vorgangSearchPreviewList.resource + let vorgang of vorgangListPreview.resource | toEmbeddedResources: vorgangListLinkRel.VORGANG_HEADER_LIST " [value]="vorgang" diff --git a/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search/vorgang-search.component.spec.ts b/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search/vorgang-search.component.spec.ts index 9fe1622edc1c551c7bff4d9ed5cb9ed910bceb40..ca73c782d282523f6ae32f0ef50fa9ec872d217f 100644 --- a/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search/vorgang-search.component.spec.ts +++ b/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search/vorgang-search.component.spec.ts @@ -54,7 +54,11 @@ import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { NavigationEnd, Router, RouterEvent } from '@angular/router'; import { RouterTestingModule } from '@angular/router/testing'; import { getDataTestClassOf, getDataTestIdOf } from 'libs/tech-shared/test/data-test'; -import { createVorgangListResource } from 'libs/vorgang-shared/test/vorgang'; +import { + createVorgangListResource, + createVorgangListResourceWithResource, + createVorgangResource, +} from 'libs/vorgang-shared/test/vorgang'; import { MockComponent } from 'ng-mocks'; import { BehaviorSubject, ReplaySubject, Subject, of } from 'rxjs'; import { VorgangSearchAutocompleteOptionsContentComponent } from './vorgang-search-autocomplete-options-content/vorgang-search-autocomplete-options-content.component'; @@ -186,6 +190,66 @@ describe('VorgangSearchComponent', () => { }); }); + describe('set vorgangSearchPreviewList', () => { + it('should set vorgangPreview', () => { + const vorgangList = createStateResource(createVorgangListResource()); + + component.vorgangSearchPreviewList = vorgangList; + + expect(component.vorgangListPreview).toEqual(vorgangList); + }); + + it('should call buildSearchResultPreviewLabel', () => { + component.buildSearchResultPreviewLabel = jest.fn(); + const vorgangList = createStateResource(createVorgangListResource()); + + component.vorgangSearchPreviewList = vorgangList; + + expect(component.buildSearchResultPreviewLabel).toBeCalledWith(vorgangList); + }); + + it('should set previewLabel', () => { + component.buildSearchResultPreviewLabel = jest.fn(() => 'test'); + const vorgangList = createStateResource(createVorgangListResource()); + + component.vorgangSearchPreviewList = vorgangList; + + expect(component.searchResultPreviewLabel).toBe('test'); + }); + }); + + describe('buildSearchResultPreviewLabel', () => { + it('should return label for many search results', () => { + const vorgangList = createStateResource(createVorgangListResource()); + + const result = component.buildSearchResultPreviewLabel(vorgangList); + + expect(result).toBe( + '10 Vorschläge werden angezeigt, nutze Pfeiltaste nach unten, um diese zu erreichen', + ); + }); + + it('should return label for one search result', () => { + const vorgangList = createStateResource( + createVorgangListResourceWithResource([createVorgangResource()]), + ); + + const result = component.buildSearchResultPreviewLabel(vorgangList); + + expect(result).toBe( + 'Ein Vorschlag wird angezeigt, nutze Pfeiltaste nach unten, um den zu erreichen', + ); + }); + + it('should return empty string', () => { + const vorgangList = createStateResource(null); + + const result = component.buildSearchResultPreviewLabel(vorgangList); + + expect(result).toBe(EMPTY_STRING); + }); + }); + describe('search clear button', () => { beforeEach(() => { searchStringSubj.next('test'); diff --git a/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search/vorgang-search.component.ts b/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search/vorgang-search.component.ts index 5375e849b6359a8ba54dd883b83ed8da5daae844..7857c502c95a7b38bed14c9a85ef50d8a748a68a 100644 --- a/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search/vorgang-search.component.ts +++ b/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search/vorgang-search.component.ts @@ -21,7 +21,12 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { StateResource, isNotNil } from '@alfa-client/tech-shared'; +import { + EMPTY_STRING, + StateResource, + getEmbeddedResources, + isNotNil, +} from '@alfa-client/tech-shared'; import { VorgangHeaderLinkRel, VorgangListLinkRel, @@ -51,7 +56,12 @@ import { VorgangSearchFormService } from './vorgang-search.formservice'; providers: [VorgangSearchFormService], }) export class VorgangSearchComponent implements OnInit, OnDestroy { - @Input() vorgangSearchPreviewList: StateResource<VorgangListResource>; + @Input() set vorgangSearchPreviewList( + vorgangListStateResource: StateResource<VorgangListResource>, + ) { + this.vorgangListPreview = vorgangListStateResource; + this.searchResultPreviewLabel = this.buildSearchResultPreviewLabel(vorgangListStateResource); + } @Input() searchString: string; @Output() public clearVorgangSearchPreviewList: EventEmitter<void> = new EventEmitter<void>(); @@ -60,6 +70,8 @@ export class VorgangSearchComponent implements OnInit, OnDestroy { @ViewChild('searchSubmitButton') searchSubmitButton: MatButton; @ViewChild('searchAutoComplete') searchAutoComplete: MatAutocomplete; + vorgangListPreview: StateResource<VorgangListResource>; + searchResultPreviewLabel: string = ''; previouslyEnteredSearchValue: string; private subscription: Subscription; @@ -101,6 +113,20 @@ export class VorgangSearchComponent implements OnInit, OnDestroy { } } + buildSearchResultPreviewLabel( + vorgangListStateResource: StateResource<VorgangListResource>, + ): string { + const previewListLength = getEmbeddedResources( + vorgangListStateResource, + this.vorgangListLinkRel.VORGANG_HEADER_LIST, + )?.length; + if (previewListLength === 1) + return 'Ein Vorschlag wird angezeigt, nutze Pfeiltaste nach unten, um den zu erreichen'; + if (previewListLength > 1) + return `${previewListLength} Vorschläge werden angezeigt, nutze Pfeiltaste nach unten, um diese zu erreichen`; + return EMPTY_STRING; + } + private isRelatedTargetSearchButton(event: FocusEvent): boolean { return event.relatedTarget === this.searchSubmitButton._elementRef.nativeElement; } diff --git a/alfa-client/libs/vorgang-shared-ui/src/lib/wiedervorlage-icon/wiedervorlage-icon.component.html b/alfa-client/libs/vorgang-shared-ui/src/lib/wiedervorlage-icon/wiedervorlage-icon.component.html index 5e95367c03a46c38103869483604b2442dc0fa7b..9bf2265a277651fe8d40eff1a80ad736136077ea 100644 --- a/alfa-client/libs/vorgang-shared-ui/src/lib/wiedervorlage-icon/wiedervorlage-icon.component.html +++ b/alfa-client/libs/vorgang-shared-ui/src/lib/wiedervorlage-icon/wiedervorlage-icon.component.html @@ -6,6 +6,9 @@ ></ozgcloud-svgicon> </ng-container> <ng-template #defaultFrist> - <ozgcloud-icon icon="update" data-test-class="wiedervorlage-icon-default"></ozgcloud-icon> + <ozgcloud-svgicon + svgIcon="update" + data-test-class="wiedervorlage-icon-default" + ></ozgcloud-svgicon> </ng-template> </div> diff --git a/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/vorgang-views-menu.component.spec.ts b/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/vorgang-views-menu.component.spec.ts index 2d312f19021b016c3985e0b17b487fc982210f79..68e9ff8f95bb4ffb237ddc3b5863f15a84ffee44 100644 --- a/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/vorgang-views-menu.component.spec.ts +++ b/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/vorgang-views-menu.component.spec.ts @@ -21,21 +21,25 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ApiRootLinkRel } from '@alfa-client/api-root-shared'; import { HasLinkPipe, createStateResource } from '@alfa-client/tech-shared'; import { existsAsHtmlElement, notExistsAsHtmlElement } from '@alfa-client/test-utils'; -import { OzgcloudIconComponent, PostfachIconComponent } from '@alfa-client/ui'; +import { + OzgcloudIconComponent, + OzgcloudSvgIconComponent, + PostfachIconComponent, +} from '@alfa-client/ui'; +import { ComponentFixture, TestBed } from '@angular/core/testing'; import { createApiRootResource } from 'libs/api-root-shared/test/api-root'; import { HasAnyLinkPipe } from 'libs/tech-shared/src/lib/pipe/has-any-link.pipe'; import { getDataTestIdOf } from 'libs/tech-shared/test/data-test'; import { createVorgangStatistic } from 'libs/vorgang-shared/test/vorgang'; import { MockComponent } from 'ng-mocks'; +import { WiedervorlageIconComponent } from '../../../../../../vorgang-shared-ui/src/lib/wiedervorlage-icon/wiedervorlage-icon.component'; import { VorgangSearchViewItemContainerComponent } from './vorgang-search-view-item-container/vorgang-search-view-item-container.component'; import { VorgangViewItemContainerComponent } from './vorgang-view-item-container/vorgang-view-item-container.component'; import { VorgangViewItemComponent } from './vorgang-view-item-container/vorgang-view-item/vorgang-view-item.component'; import { VorgangViewsMenuComponent } from './vorgang-views-menu.component'; -import { WiedervorlageIconComponent } from '../../../../../../vorgang-shared-ui/src/lib/wiedervorlage-icon/wiedervorlage-icon.component'; describe('VorgangViewsMenuComponent', () => { let component: VorgangViewsMenuComponent; @@ -63,6 +67,7 @@ describe('VorgangViewsMenuComponent', () => { MockComponent(VorgangViewItemComponent), MockComponent(VorgangSearchViewItemContainerComponent), MockComponent(OzgcloudIconComponent), + MockComponent(OzgcloudSvgIconComponent), MockComponent(PostfachIconComponent), ], }).compileComponents(); diff --git a/alfa-client/package-lock.json b/alfa-client/package-lock.json index 949f8b38d13465282b7f59f829cf3981fbc8c6bc..a7e9f6cfe77a4da3de7f151bdcbd299486c59c20 100644 --- a/alfa-client/package-lock.json +++ b/alfa-client/package-lock.json @@ -1,12 +1,12 @@ { "name": "alfa", - "version": "0.6.0-SNAPSHOT", + "version": "0.7.0-SNAPSHOT", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "alfa", - "version": "0.6.0-SNAPSHOT", + "version": "0.7.0-SNAPSHOT", "license": "MIT", "dependencies": { "@angular/animations": "17.3.10", @@ -32,6 +32,7 @@ "angular-oauth2-oidc-jwks": "17.0.2", "class-variance-authority": "^0.7.0", "date-fns": "^2.30.0", + "decompress": "^4.2.1", "file-saver": "2.0.5", "include-media": "^1.4.10", "js-base64": "^3.7.7", @@ -88,7 +89,7 @@ "autoprefixer": "^10.4.19", "cypress": "13.6.2", "cypress-file-upload": "5.0.8", - "cypress-mochawesome-reporter": "3.6.0", + "cypress-mochawesome-reporter": "3.8", "cypress-real-events": "^1.12.0", "cypress-timestamps": "^1.2.3", "eslint": "8.57.0", @@ -17747,15 +17748,36 @@ "ieee754": "^1.1.13" } }, + "node_modules/buffer-alloc": { + "version": "1.2.0", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "license": "MIT", + "dependencies": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "node_modules/buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "license": "MIT" + }, "node_modules/buffer-crc32": { "version": "0.2.13", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/buffer-crc32/-/buffer-crc32-0.2.13.tgz", "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true, "engines": { "node": "*" } }, + "node_modules/buffer-fill": { + "version": "1.0.0", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", + "license": "MIT" + }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/buffer-from/-/buffer-from-1.1.2.tgz", @@ -19578,10 +19600,11 @@ } }, "node_modules/cypress-mochawesome-reporter": { - "version": "3.6.0", - "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/cypress-mochawesome-reporter/-/cypress-mochawesome-reporter-3.6.0.tgz", - "integrity": "sha512-NeYpeZVB5YCU10I3a1yA2qHt+YREo0jZw4Gj83JTJ7YX/ZLFfd8MYKl2O19d/yYC8np/fpMufp5gt3ympd9DWQ==", + "version": "3.8.2", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/cypress-mochawesome-reporter/-/cypress-mochawesome-reporter-3.8.2.tgz", + "integrity": "sha512-oJZkNzhNmN9ZD+LmZyFuPb8aWaIijyHyqYh52YOBvR6B6ckfJNCHP3A98a+/nG0H4t46CKTNwo+wNpMa4d2kjA==", "dev": true, + "license": "MIT", "dependencies": { "commander": "^10.0.1", "fs-extra": "^10.0.1", @@ -19887,6 +19910,221 @@ "node": ">=0.10" } }, + "node_modules/decompress": { + "version": "4.2.1", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/decompress/-/decompress-4.2.1.tgz", + "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==", + "license": "MIT", + "dependencies": { + "decompress-tar": "^4.0.0", + "decompress-tarbz2": "^4.0.0", + "decompress-targz": "^4.0.0", + "decompress-unzip": "^4.0.1", + "graceful-fs": "^4.1.10", + "make-dir": "^1.0.0", + "pify": "^2.3.0", + "strip-dirs": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-tar": { + "version": "4.1.1", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/decompress-tar/-/decompress-tar-4.1.1.tgz", + "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", + "license": "MIT", + "dependencies": { + "file-type": "^5.2.0", + "is-stream": "^1.1.0", + "tar-stream": "^1.5.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-tar/node_modules/bl": { + "version": "1.2.3", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/bl/-/bl-1.2.3.tgz", + "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", + "license": "MIT", + "dependencies": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/decompress-tar/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decompress-tar/node_modules/isarray": { + "version": "1.0.0", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/decompress-tar/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/decompress-tar/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/decompress-tar/node_modules/tar-stream": { + "version": "1.6.2", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/tar-stream/-/tar-stream-1.6.2.tgz", + "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", + "license": "MIT", + "dependencies": { + "bl": "^1.0.0", + "buffer-alloc": "^1.2.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.1", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/decompress-tarbz2": { + "version": "4.1.1", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", + "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", + "license": "MIT", + "dependencies": { + "decompress-tar": "^4.1.0", + "file-type": "^6.1.0", + "is-stream": "^1.1.0", + "seek-bzip": "^1.0.5", + "unbzip2-stream": "^1.0.9" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-tarbz2/node_modules/file-type": { + "version": "6.2.0", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/file-type/-/file-type-6.2.0.tgz", + "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-tarbz2/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decompress-targz": { + "version": "4.1.1", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/decompress-targz/-/decompress-targz-4.1.1.tgz", + "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", + "license": "MIT", + "dependencies": { + "decompress-tar": "^4.1.1", + "file-type": "^5.2.0", + "is-stream": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-targz/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decompress-unzip": { + "version": "4.0.1", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/decompress-unzip/-/decompress-unzip-4.0.1.tgz", + "integrity": "sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==", + "license": "MIT", + "dependencies": { + "file-type": "^3.8.0", + "get-stream": "^2.2.0", + "pify": "^2.3.0", + "yauzl": "^2.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-unzip/node_modules/file-type": { + "version": "3.9.0", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decompress-unzip/node_modules/get-stream": { + "version": "2.3.1", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==", + "license": "MIT", + "dependencies": { + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decompress/node_modules/make-dir": { + "version": "1.3.0", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "license": "MIT", + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress/node_modules/make-dir/node_modules/pify": { + "version": "3.0.0", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/deep-equal": { "version": "2.2.3", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/deep-equal/-/deep-equal-2.2.3.tgz", @@ -21631,7 +21869,6 @@ "version": "1.1.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/fd-slicer/-/fd-slicer-1.1.0.tgz", "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "dev": true, "dependencies": { "pend": "~1.2.0" } @@ -21703,6 +21940,15 @@ "node": ">=14.14" } }, + "node_modules/file-type": { + "version": "5.2.0", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/file-uri-to-path": { "version": "1.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", @@ -24049,6 +24295,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-natural-number": { + "version": "4.0.1", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/is-natural-number/-/is-natural-number-4.0.1.tgz", + "integrity": "sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==", + "license": "MIT" + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/is-number/-/is-number-7.0.0.tgz", @@ -29556,7 +29808,6 @@ "version": "4.1.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "devOptional": true, "engines": { "node": ">=0.10.0" } @@ -30346,8 +30597,7 @@ "node_modules/pend": { "version": "1.2.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "dev": true + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" }, "node_modules/performance-now": { "version": "2.1.0", @@ -30379,6 +30629,27 @@ "node": ">=0.10.0" } }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "license": "MIT", + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/pirates": { "version": "4.0.6", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/pirates/-/pirates-4.0.6.tgz", @@ -33327,6 +33598,25 @@ "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/secure-compare/-/secure-compare-3.0.1.tgz", "integrity": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==" }, + "node_modules/seek-bzip": { + "version": "1.0.6", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/seek-bzip/-/seek-bzip-1.0.6.tgz", + "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==", + "license": "MIT", + "dependencies": { + "commander": "^2.8.1" + }, + "bin": { + "seek-bunzip": "bin/seek-bunzip", + "seek-table": "bin/seek-bzip-table" + } + }, + "node_modules/seek-bzip/node_modules/commander": { + "version": "2.20.3", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" + }, "node_modules/select-hose": { "version": "2.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/select-hose/-/select-hose-2.0.0.tgz", @@ -34589,6 +34879,15 @@ "node": ">=8" } }, + "node_modules/strip-dirs": { + "version": "2.1.0", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/strip-dirs/-/strip-dirs-2.1.0.tgz", + "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", + "license": "MIT", + "dependencies": { + "is-natural-number": "^4.0.1" + } + }, "node_modules/strip-final-newline": { "version": "2.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -35389,6 +35688,12 @@ "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==", "dev": true }, + "node_modules/to-buffer": { + "version": "1.1.1", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/to-buffer/-/to-buffer-1.1.1.tgz", + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", + "license": "MIT" + }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -36045,6 +36350,16 @@ "node": ">=0.8.0" } }, + "node_modules/unbzip2-stream": { + "version": "1.4.3", + "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "license": "MIT", + "dependencies": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, "node_modules/undici": { "version": "6.11.1", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/undici/-/undici-6.11.1.tgz", @@ -37731,7 +38046,6 @@ "version": "4.0.2", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, "engines": { "node": ">=0.4" } @@ -37834,7 +38148,6 @@ "version": "2.10.0", "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/yauzl/-/yauzl-2.10.0.tgz", "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "dev": true, "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" diff --git a/alfa-client/package.json b/alfa-client/package.json index 7ce0965ffbc9ed9db9ee23a7450cf7a26db2ec77..8dc2364f58bb67444d25979f3fd75136efdac63e 100644 --- a/alfa-client/package.json +++ b/alfa-client/package.json @@ -128,7 +128,7 @@ "autoprefixer": "^10.4.19", "cypress": "13.6.2", "cypress-file-upload": "5.0.8", - "cypress-mochawesome-reporter": "3.6.0", + "cypress-mochawesome-reporter": "3.8", "cypress-real-events": "^1.12.0", "cypress-timestamps": "^1.2.3", "eslint": "8.57.0", diff --git a/alfa-server/src/main/resources/application-dev.yml b/alfa-server/src/main/resources/application-dev.yml index 70ae53c6c499ef254dd591b6ef9a668022e741e9..52ca56a22d8fa5ded4dcecfae01b3e22553c2da1 100644 --- a/alfa-server/src/main/resources/application-dev.yml +++ b/alfa-server/src/main/resources/application-dev.yml @@ -10,7 +10,6 @@ server: ozgcloud: feature: reply-always-allowed: true - bescheid-wizard: true production: false stage: production: false diff --git a/alfa-server/src/main/resources/application-e2e.yml b/alfa-server/src/main/resources/application-e2e.yml index d91ee9e7f3874a0799b8c92bcdb28dab13dcb9ad..7aa16cc6e02921c1fa3157a05b185fcbf08c623d 100644 --- a/alfa-server/src/main/resources/application-e2e.yml +++ b/alfa-server/src/main/resources/application-e2e.yml @@ -10,7 +10,6 @@ ozgcloud: feature: createBescheid: true reply-always-allowed: true - bescheid-wizard: true forwarding: lninfo: url: classpath:files/LandesnetzInfo.html diff --git a/alfa-server/src/main/resources/application-local.yml b/alfa-server/src/main/resources/application-local.yml index 55480e664c9e5159bc787f902bd7c1d8e77eda1a..b113a7052d27746ebf67fdd3600b381e7e658dd5 100644 --- a/alfa-server/src/main/resources/application-local.yml +++ b/alfa-server/src/main/resources/application-local.yml @@ -18,7 +18,6 @@ grpc: ozgcloud: feature: reply-always-allowed: true - bescheid-wizard: true production: false user-assistance: documentation: diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidVorgangProcessor.java b/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidVorgangProcessor.java index 1977b5ffb63dbf495578eeac0ebce27d6d7a4af5..1846ef681a80e682b12b20e191be1412107212f2 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidVorgangProcessor.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidVorgangProcessor.java @@ -12,7 +12,6 @@ import org.springframework.hateoas.server.mvc.WebMvcLinkBuilder; import org.springframework.stereotype.Component; import de.ozgcloud.alfa.bescheid.BescheidController.BescheidByVorgangController; -import de.ozgcloud.alfa.common.FeatureToggleProperties; import de.ozgcloud.alfa.common.ModelBuilder; import de.ozgcloud.alfa.common.command.CommandController.CommandByRelationController; import de.ozgcloud.alfa.common.user.CurrentUserService; @@ -30,7 +29,6 @@ class BescheidVorgangProcessor implements RepresentationModelProcessor<EntityMod static final LinkRelation REL_BESCHEIDE = LinkRelation.of("bescheide"); private final BescheidService bescheidService; - private final FeatureToggleProperties featureToggleProperties; private final CurrentUserService currentUserService; @Override @@ -66,11 +64,11 @@ class BescheidVorgangProcessor implements RepresentationModelProcessor<EntityMod } BooleanSupplier isRetrievingDraftAllowed(Vorgang vorgang) { - return () -> featureToggleProperties.isBescheidWizard() && isVorgangInBearbeitung(vorgang) && draftExists(vorgang); + return () -> isVorgangInBearbeitung(vorgang) && draftExists(vorgang); } BooleanSupplier isCreatingDraftAllowed(Vorgang vorgang) { - return () -> featureToggleProperties.isBescheidWizard() && isVorgangInBearbeitung(vorgang) && !draftExists(vorgang); + return () -> isVorgangInBearbeitung(vorgang) && !draftExists(vorgang); } boolean isVorgangInBearbeitung(Vorgang vorgang) { diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/DocumentRemoteService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/DocumentRemoteService.java index 0cef6022ccd7c3ec41b83c090e732d467d7492a3..628f7a930eb4fd1df57ee334722661b43a980728 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/DocumentRemoteService.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/DocumentRemoteService.java @@ -1,13 +1,9 @@ package de.ozgcloud.alfa.bescheid; -import java.util.UUID; - -import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import de.ozgcloud.alfa.common.GrpcUtil; -import de.ozgcloud.alfa.common.binaryfile.FileId; import de.ozgcloud.document.DocumentServiceGrpc.DocumentServiceBlockingStub; import de.ozgcloud.document.GrpcGetDocumentRequest; import net.devh.boot.grpc.client.inject.GrpcClient; @@ -21,14 +17,6 @@ class DocumentRemoteService { private DocumentMapper documentMapper; public Document getDocument(String documentId) { - // DUMMY - if (StringUtils.equals(documentId, "DOCUMENT_URI")) { - return Document.builder() - .id(UUID.randomUUID().toString()) - .fileId(FileId.from("DOCUMENT_FILE_URI")) - .build(); - } - // var response = documentServiceStub.getDocument(GrpcGetDocumentRequest.newBuilder().setId(documentId).build()); return documentMapper.fromGrpc(response.getDocument()); } diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/FeatureToggleProperties.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/FeatureToggleProperties.java index 2e8d93a5e51a15f05418aac4952d926c64717300..b06e637da196c9b9d5dfb11a5d51a72fb505da7d 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/FeatureToggleProperties.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/common/FeatureToggleProperties.java @@ -21,9 +21,4 @@ public class FeatureToggleProperties { * Enable mail reply option regardless of other configuration. */ private boolean replyAlwaysAllowed = false; - - /** - * Enable/Disable bescheid wizard feature. - */ - private boolean bescheidWizard = false; } diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidVorgangProcessorTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidVorgangProcessorTest.java index ec24740d58cd87f75c86a04801232b5076fe03f3..fc714d41d1e45acb791372084e94c4c0b0bddab8 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidVorgangProcessorTest.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidVorgangProcessorTest.java @@ -20,7 +20,6 @@ import org.mockito.Spy; import org.springframework.hateoas.EntityModel; import org.springframework.hateoas.Link; -import de.ozgcloud.alfa.common.FeatureToggleProperties; import de.ozgcloud.alfa.common.UserProfileUrlProvider; import de.ozgcloud.alfa.common.user.CurrentUserService; import de.ozgcloud.alfa.common.user.UserRole; @@ -43,9 +42,6 @@ class BescheidVorgangProcessorTest { @Mock private CurrentUserService currentUserService; - @Mock - private FeatureToggleProperties featureToggleProperties; - @Nested class TestProcess { @@ -215,7 +211,6 @@ class BescheidVorgangProcessorTest { @Test void shouldReturnTrue() { - givenFeatureToggleEnabled(true); givenVorgangInBearbeitung(true); givenDraftExists(true); @@ -224,18 +219,8 @@ class BescheidVorgangProcessorTest { assertThat(booleanSupplier.getAsBoolean()).isTrue(); } - @Test - void shouldReturnFalseIfFeatureToggleIsDisabled() { - givenFeatureToggleEnabled(false); - - var booleanSupplier = callMethod(); - - assertThat(booleanSupplier.getAsBoolean()).isFalse(); - } - @Test void shouldReturnFalseIfVorgangNotInBearbeitung() { - givenFeatureToggleEnabled(true); givenVorgangInBearbeitung(false); var booleanSupplier = callMethod(); @@ -245,7 +230,6 @@ class BescheidVorgangProcessorTest { @Test void shouldReturnFalseIfDraftDoesNotExist() { - givenFeatureToggleEnabled(true); givenVorgangInBearbeitung(true); givenDraftExists(false); @@ -264,7 +248,6 @@ class BescheidVorgangProcessorTest { @Test void shouldReturnTrue() { - givenFeatureToggleEnabled(true); givenVorgangInBearbeitung(true); givenDraftExists(false); @@ -273,18 +256,8 @@ class BescheidVorgangProcessorTest { assertThat(booleanSupplier.getAsBoolean()).isTrue(); } - @Test - void shouldReturnFalseIfFeatureToggleIsDisabled() { - givenFeatureToggleEnabled(false); - - var booleanSupplier = callMethod(); - - assertThat(booleanSupplier.getAsBoolean()).isFalse(); - } - @Test void shouldReturnFalseIfVorgangNotInBearbeitung() { - givenFeatureToggleEnabled(true); givenVorgangInBearbeitung(false); var booleanSupplier = callMethod(); @@ -294,7 +267,6 @@ class BescheidVorgangProcessorTest { @Test void shouldReturnFalseIfDraftExists() { - givenFeatureToggleEnabled(true); givenVorgangInBearbeitung(true); givenDraftExists(true); @@ -360,10 +332,6 @@ class BescheidVorgangProcessorTest { } } - private void givenFeatureToggleEnabled(boolean enabled) { - when(featureToggleProperties.isBescheidWizard()).thenReturn(enabled); - } - private void givenVorgangInBearbeitung(boolean inBearbeitung) { doReturn(inBearbeitung).when(processor).isVorgangInBearbeitung(vorgang); } diff --git a/src/main/helm/templates/deployment.yaml b/src/main/helm/templates/deployment.yaml index cad88f7ba2e55da7b791497853c8ff633af6aaac..b7221ad6bd6407099a01862c2ffb85bb5199d49d 100644 --- a/src/main/helm/templates/deployment.yaml +++ b/src/main/helm/templates/deployment.yaml @@ -98,7 +98,7 @@ spec: {{- if ((.Values.ozgcloud).vorgang).bescheid}} {{- range $index, $bescheid := ((.Values.ozgcloud).vorgang).bescheid }} - name: ozgcloud_vorgang_bescheid_{{ $index }}_formId - value: {{ $bescheid.formId }} + value: {{ $bescheid.formId | quote }} - name: ozgcloud_vorgang_bescheid_{{ $index }}_formEngineName value: {{ $bescheid.formEngineName }} {{- end }} diff --git a/src/test/helm/deployment_defaults_env_test.yaml b/src/test/helm/deployment_defaults_env_test.yaml index 99d108c95f63fc674e22cf2cc369af4db57c0ae5..0bf3a7adbf32e293791d0af1a2804bf7c8c4d6df 100644 --- a/src/test/helm/deployment_defaults_env_test.yaml +++ b/src/test/helm/deployment_defaults_env_test.yaml @@ -92,7 +92,7 @@ tests: - formEngineName: AFM formId: form_id_1 - formEngineName: FormSolutions - formId: form_id_2 + formId: 2290 asserts: - contains: path: spec.template.spec.containers[0].env @@ -108,7 +108,7 @@ tests: path: spec.template.spec.containers[0].env content: name: ozgcloud_vorgang_bescheid_1_formId - value: form_id_2 + value: "2290" - contains: path: spec.template.spec.containers[0].env content: diff --git a/src/test/helm/network_policy_test.yaml b/src/test/helm/network_policy_test.yaml index c74aa40bad0792d6da348b499eae6a22315ea6fa..af65c804e62b7fb9aebb26f65f2322b536f71550 100644 --- a/src/test/helm/network_policy_test.yaml +++ b/src/test/helm/network_policy_test.yaml @@ -28,21 +28,30 @@ release: namespace: by-helm-test templates: - templates/network_policy.yaml -set: - networkPolicy: - dnsServerNamespace: kube-system - ssoPublicIp: 1.1.1.1/32 + tests: - it: should match apiVersion + set: + networkPolicy: + dnsServerNamespace: kube-system + ssoPublicIp: 1.1.1.1/32 asserts: - isAPIVersion: of: networking.k8s.io/v1 - it: should match kind + set: + networkPolicy: + dnsServerNamespace: kube-system + ssoPublicIp: 1.1.1.1/32 asserts: - isKind: of: NetworkPolicy - it: validate metadata + set: + networkPolicy: + dnsServerNamespace: kube-system + ssoPublicIp: 1.1.1.1/32 asserts: - equal: path: metadata @@ -187,3 +196,31 @@ tests: asserts: - hasDocuments: count: 1 + + - it: test network policy dnsServerNamespace must be set message + set: + networkPolicy: + disabled: false + ssoPublicIp: 1.1.1.1/32 + asserts: + - failedTemplate: + errorMessage: networkPolicy.dnsServerNamespace must be set + + + - it: test network policy ssoPublicIp must be set message + set: + networkPolicy: + disabled: false + dnsServerNamespace: test-dns-server-namespace + asserts: + - failedTemplate: + errorMessage: networkPolicy.ssoPublicIp must be set + + - it: test network policy should be enabled by default + set: + networkPolicy: + ssoPublicIp: 1.1.1.1 + dnsServerNamespace: test-dns-server-namespace + asserts: + - hasDocuments: + count: 1 \ No newline at end of file