diff --git a/alfa-client/apps/alfa-e2e/docker-compose.yml b/alfa-client/apps/alfa-e2e/docker-compose.yml index e87654d697b9a340f65e9a666dff2fcca1b5ad98..c1084ee33bd694659129af4a90e59dc5d1b0c288 100644 --- a/alfa-client/apps/alfa-e2e/docker-compose.yml +++ b/alfa-client/apps/alfa-e2e/docker-compose.yml @@ -28,6 +28,11 @@ services: - 27018:27017 environment: - MONGODB_EXTRA_FLAGS=--profile=2 + healthcheck: + test: echo 'db.runCommand("ping").ok' | mongosh localhost:27017/test --quiet + interval: 10s + timeout: 10s + retries: 5 vorgang-manager: image: docker.ozg-sh.de/vorgang-manager:${VORGANG_MANAGER_DOCKER_IMAGE:-snapshot-latest} @@ -67,9 +72,13 @@ services: - 9091:9090 depends_on: mongodb: - condition: service_started + condition: service_healthy elastic: condition: service_healthy + smocker: + condition: service_healthy + user-manager: + condition: service_started alfa: image: docker.ozg-sh.de/alfa:${ALFA_DOCKER_IMAGE:-snapshot-latest} @@ -96,12 +105,16 @@ services: - BPL_DEBUG_PORT=5000 - OZGCLOUD_VORGANG_BESCHEID_0_FORM_ENGINE_NAME=FormSolutions - OZGCLOUD_VORGANG_BESCHEID_0_FORM_ID=KFAS_STAGE_KI_10_Haltverbot_LANDESHACKATHON + - OZGCLOUD_FEATURE_COLLABORATION_ENABLED=true + - GRPC_CLIENT_ZUFI-MANAGER_ADDRESS=static://zufi-manager-server:9190 + - GRPC_CLIENT_ZUFI-MANAGER_NEGOTIATIONTYPE=PLAINTEXT ports: - 8080:8080 - 5000:5000 depends_on: - vorgang-manager - user-manager + - zufi-manager-server elastic: image: docker.elastic.co/elasticsearch/elasticsearch:8.3.2 @@ -115,6 +128,7 @@ services: - MEM_LIMIT=1073741824 - xpack.security.enabled=false - xpack.security.http.ssl.enabled=false + - logger.level=WARN ulimits: memlock: soft: -1 @@ -159,10 +173,59 @@ services: - 9092:8080 - 9000:9000 depends_on: - - mongodb + mongodb: + condition: service_healthy + + zufi-manager-pvog: + image: docker.ozg-sh.de/zufi-manager:snapshot-latest + platform: linux/amd64 + environment: + - SPRING_DATA_MONGODB_URI=mongodb://mongodb:27017/local + - SPRING_PROFILES_ACTIVE=$${SPRING_PROFILE:e2e} + - LOGGING_CONFIG=classpath:log4j2-local.xml + - OZGCLOUD_PVOG_URL=http://smocker:8080 + depends_on: + mongodb: + condition: service_healthy + smocker-init: + condition: service_completed_successfully + + zufi-manager-server: + image: docker.ozg-sh.de/zufi-server:snapshot-latest + platform: linux/amd64 + environment: + - SPRING_DATA_MONGODB_URI=mongodb://mongodb:27017/local + - SPRING_PROFILES_ACTIVE=$${SPRING_PROFILE:local} + - LOGGING_CONFIG=classpath:log4j2-local.xml + ports: + - 19090:9190 + depends_on: + mongodb: + condition: service_healthy + zufi-manager-pvog: + condition: service_completed_successfully smocker: image: thiht/smocker ports: - 7080:8080 - 7081:8081 + healthcheck: + test: [ + 'CMD-SHELL', + "wget --spider localhost:8081/version", + ] + interval: 5s + timeout: 5s + retries: 5 + + smocker-init: + image: alpine/curl + volumes: + - ./src/fixtures/smocker:/mocks:ro + command: > + sh -c "curl -X POST http://smocker:8081/mocks -H 'Content-Type: application/x-yaml' --data-binary @/mocks/pvog-mock.yaml && + curl -X POST http://smocker:8081/mocks -H 'Content-Type: application/x-yaml' --data-binary @/mocks/mocks.yaml" + depends_on: + smocker: + condition: service_healthy \ No newline at end of file diff --git a/alfa-client/apps/alfa-e2e/src/fixtures/smocker/Readme.md b/alfa-client/apps/alfa-e2e/src/fixtures/smocker/Readme.md new file mode 100644 index 0000000000000000000000000000000000000000..aae89a7493a33efa155461dfeecb55f2df395841 --- /dev/null +++ b/alfa-client/apps/alfa-e2e/src/fixtures/smocker/Readme.md @@ -0,0 +1,37 @@ +# PVOG-Mock Yaml erzeugen + +- PVOG-Rohdaten für das betreffene Bundesland (z.B. Schleswig-Holstein) herunterladen (XML) +- Den E2E-Tester/die -Testerin nach der gewünschten Behörde fragen (am besten OID, z.B. 9093371) +- In den Rohdaten danach suchen +```bash + grep -niro "schemeID=\"OID\">9093371</xzufi:id>" +``` +- Die Datei im Texteditor öffnen (z.B. Notepad++ mit XMLTools Plugin) +- XMLTools "Pretty Print" anwenden. +- In der Datei nach dem XML-Block suchen: +```xml + <xzufi:schreibe> + <xzufi:organisationseinheit xsi:type="xzufi:OrganisationseinheitErweitert" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <xzufi:id schemeAgencyID="L100012" schemeID="OID">9093371</xzufi:id> + ... + </xzufi:organisationseinheit> + </xzufi:schreibe> +``` +- Diesen Block herauskopieren +- In einer anderen Datei die PVOG-Antwortnachricht vorbereiten, Template: +```xml +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<xzufi:transfer.operation.040502 produktbezeichnung="PVOG" produkthersteller="Dataport AöR" xzufiVersion="2.2.0" xmlns:xzufi="http://xoev.de/schemata/xzufi/2_2_0" xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:xlink="http://www.w3.org/1999/xlink"> + <xzufi:nachrichtenkopf> + <xzufi:nachrichtUUID>ce415b36-8905-372b-ba2f-2d471835d99d</xzufi:nachrichtUUID> + <xzufi:erstelltDatumZeit>2024-08-21T13:36:26.166+02:00</xzufi:erstelltDatumZeit> + </xzufi:nachrichtenkopf> + ... +</xzufi:transfer.operation.040502> +``` +- An die Stelle der 3 Punkte die Organisationseinheit reinkopieren +- (Schritte wiederholen für mehr Organisationseinheiten) +- (opt.) mit XMLTools "Validate XML" anwenden (prüft XML Grundstruktur) +- XMLTools "Linearize" anwenden. +- Suchen und Ersetzen: " -> \\" (Stringifiziert die Double-Quotes) +- Ergebnis in pvog-mock.yaml in die JSON, Feld "xzufiObjekte" einfügen \ No newline at end of file diff --git a/alfa-client/apps/alfa-e2e/src/fixtures/smocker/pvog-mock.yaml b/alfa-client/apps/alfa-e2e/src/fixtures/smocker/pvog-mock.yaml new file mode 100644 index 0000000000000000000000000000000000000000..7f4e27c777151e9b16b6778f4c0998a3ea25ff67 --- /dev/null +++ b/alfa-client/apps/alfa-e2e/src/fixtures/smocker/pvog-mock.yaml @@ -0,0 +1,15 @@ +- request: + method: GET + path: /v2/verwaltungsobjekte + response: + status: 200 + headers: + Content-Type: application/json + body: > + { + "anzahlObjekte": 2, + "naechsterIndex": -1, + "naechsteAnfrageUrl": "", + "vollstaendig": true, + "xzufiObjekte": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><xzufi:transfer.operation.040502 produktbezeichnung=\"PVOG\" produkthersteller=\"Dataport AöR\" xzufiVersion=\"2.2.0\" xmlns:xzufi=\"http://xoev.de/schemata/xzufi/2_2_0\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"><xzufi:nachrichtenkopf><xzufi:nachrichtUUID>ce415b36-8905-372b-ba2f-2d471835d99d</xzufi:nachrichtUUID><xzufi:erstelltDatumZeit>2024-08-21T13:36:26.166+02:00</xzufi:erstelltDatumZeit></xzufi:nachrichtenkopf><xzufi:schreibe><xzufi:organisationseinheit xsi:type=\"xzufi:OrganisationseinheitErweitert\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><xzufi:id schemeAgencyID=\"L100012\" schemeID=\"OID\">9797773</xzufi:id><xzufi:externeOrganisationseinheitsermittlung>false</xzufi:externeOrganisationseinheitsermittlung><xzufi:name><xzufi:name languageCode=\"de\">Wirtschaftsförderung und Technologietransfer Schleswig-Holstein GmbH</xzufi:name></xzufi:name><xzufi:anschrift><xzufi:typ listURI=\"urn:xoev-de:fim:codeliste:xzufi.anschrifttyp\" listVersionID=\"2.0\"><code>001</code></xzufi:typ><xzufi:strasse>Lorentzendamm</xzufi:strasse><xzufi:hausnummer>24</xzufi:hausnummer><xzufi:postleitzahl>24103</xzufi:postleitzahl><xzufi:ort>Kiel</xzufi:ort><xzufi:ortID schemeID=\"urn:de:bund:destatis:bevoelkerungsstatistik:schluessel:rs\" schemeVersionID=\"2022-09-30\">010020000000</xzufi:ortID><xzufi:verwaltungspolitischeKodierung><xzufi:bundesland listURI=\"urn:de:bund:destatis:bevoelkerungsstatistik:schluessel:bundesland\" listVersionID=\"2010-04-01\"><code>01</code><name>Schleswig-Holstein</name></xzufi:bundesland><xzufi:gemeindeschluessel listURI=\"urn:de:bund:destatis:bevoelkerungsstatistik:schluessel:ags\" listVersionID=\"2018-07-31\"><code>01002000</code><name>Kiel</name></xzufi:gemeindeschluessel><xzufi:regionalschluessel listURI=\"urn:de:bund:destatis:bevoelkerungsstatistik:schluessel:rs\" listVersionID=\"2022-09-30\"><code>010020000000</code><name>Kiel</name></xzufi:regionalschluessel><xzufi:staat listURI=\"urn:de:bund:destatis:bevoelkerungsstatistik:schluessel:staat\" listVersionID=\"2022-02-18\"><code>000</code><name>Deutschland</name></xzufi:staat></xzufi:verwaltungspolitischeKodierung></xzufi:anschrift><xzufi:erreichbarkeit><xzufi:kanal listURI=\"urn:de:xoev:codeliste:erreichbarkeit\" listVersionID=\"3\"><code>02</code></xzufi:kanal><xzufi:kennung>+49 431 66666-0</xzufi:kennung></xzufi:erreichbarkeit><xzufi:erreichbarkeit><xzufi:kanal listURI=\"urn:de:xoev:codeliste:erreichbarkeit\" listVersionID=\"3\"><code>04</code></xzufi:kanal><xzufi:kennung>+49 431 66666-767</xzufi:kennung></xzufi:erreichbarkeit><xzufi:erreichbarkeit><xzufi:kanal listURI=\"urn:de:xoev:codeliste:erreichbarkeit\" listVersionID=\"3\"><code>01</code></xzufi:kanal><xzufi:kennung>info@wtsh.de</xzufi:kennung></xzufi:erreichbarkeit><xzufi:versionsinformation><xzufi:geaendertDatumZeit>2023-11-06T15:12:53+01:00</xzufi:geaendertDatumZeit></xzufi:versionsinformation><xzufi:sprachversion><xzufi:languageCode>de</xzufi:languageCode><xzufi:sprachbezeichnungDeutsch>Deutsch</xzufi:sprachbezeichnungDeutsch><xzufi:sprachbezeichnungNativ>Deutsch</xzufi:sprachbezeichnungNativ></xzufi:sprachversion></xzufi:organisationseinheit></xzufi:schreibe><xzufi:schreibe><xzufi:organisationseinheit xsi:type=\"xzufi:OrganisationseinheitErweitert\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><xzufi:id schemeAgencyID=\"L100012\" schemeID=\"OID\">9093371</xzufi:id><xzufi:externeOrganisationseinheitsermittlung>false</xzufi:externeOrganisationseinheitsermittlung><xzufi:kategorie><xzufi:klasse><xzufi:id>ORGANISATIONSEINHEITSKATEGORIE</xzufi:id><xzufi:bezeichnung languageCode=\"de\">Organisationseinheitkategorie</xzufi:bezeichnung></xzufi:klasse><xzufi:id schemeAgencyID=\"L100012\" schemeID=\"OID\">9081966</xzufi:id><xzufi:bezeichnung languageCode=\"de\">Land: Landesoberbehörde</xzufi:bezeichnung></xzufi:kategorie><xzufi:kategorie><xzufi:klasse><xzufi:id>ORGANISATIONSEINHEITSKATEGORIE</xzufi:id><xzufi:bezeichnung languageCode=\"de\">Organisationseinheitkategorie</xzufi:bezeichnung></xzufi:klasse><xzufi:id schemeAgencyID=\"L100012\" schemeID=\"OID\">9081931</xzufi:id><xzufi:bezeichnung languageCode=\"de\">Land: MBWK</xzufi:bezeichnung></xzufi:kategorie><xzufi:kategorie><xzufi:klasse><xzufi:id>ORGANISATIONSEINHEITSKATEGORIE</xzufi:id><xzufi:bezeichnung languageCode=\"de\">Organisationseinheitkategorie</xzufi:bezeichnung></xzufi:klasse><xzufi:id schemeAgencyID=\"L100012\" schemeID=\"OID\">219766890</xzufi:id><xzufi:bezeichnung languageCode=\"de\">Landesbehörden A-Z</xzufi:bezeichnung></xzufi:kategorie><xzufi:name><xzufi:name languageCode=\"de\">Landesamt für Denkmalpflege</xzufi:name></xzufi:name><xzufi:infoInternServicecenter languageCode=\"de\">Pflege und Schutz der Kulturdenkm&auml;ler lt. gesetzlichem Auftrag Zust&auml;ndigkeitsbereich: Schleswig-Holstein (ohne Hansestadt L&uuml;beck)</xzufi:infoInternServicecenter><xzufi:anschrift><xzufi:typ listURI=\"urn:xoev-de:fim:codeliste:xzufi.anschrifttyp\" listVersionID=\"2.0\"><code>001</code></xzufi:typ><xzufi:strasse>Wall</xzufi:strasse><xzufi:hausnummer>47/51</xzufi:hausnummer><xzufi:postleitzahl>24103</xzufi:postleitzahl><xzufi:ort>Kiel</xzufi:ort><xzufi:ortID schemeID=\"urn:de:bund:destatis:bevoelkerungsstatistik:schluessel:rs\" schemeVersionID=\"2022-09-30\">010020000000</xzufi:ortID><xzufi:verwaltungspolitischeKodierung><xzufi:bundesland listURI=\"urn:de:bund:destatis:bevoelkerungsstatistik:schluessel:bundesland\" listVersionID=\"2010-04-01\"><code>01</code><name>Schleswig-Holstein</name></xzufi:bundesland><xzufi:gemeindeschluessel listURI=\"urn:de:bund:destatis:bevoelkerungsstatistik:schluessel:ags\" listVersionID=\"2018-07-31\"><code>01002000</code><name>Kiel</name></xzufi:gemeindeschluessel><xzufi:regionalschluessel listURI=\"urn:de:bund:destatis:bevoelkerungsstatistik:schluessel:rs\" listVersionID=\"2022-09-30\"><code>010020000000</code><name>Kiel</name></xzufi:regionalschluessel><xzufi:staat listURI=\"urn:de:bund:destatis:bevoelkerungsstatistik:schluessel:staat\" listVersionID=\"2022-02-18\"><code>000</code><name>Deutschland</name></xzufi:staat></xzufi:verwaltungspolitischeKodierung><xzufi:geokodierung><gml:Point srsName=\"EPSG:25832\" axisLabels=\"longitude latitude\"><gml:pos>574309.943999998 6019897.539</gml:pos></gml:Point></xzufi:geokodierung></xzufi:anschrift><xzufi:erreichbarkeit><xzufi:kanal listURI=\"urn:de:xoev:codeliste:erreichbarkeit\" listVersionID=\"3\"><code>02</code></xzufi:kanal><xzufi:kennung>+49 431 69677-60</xzufi:kennung></xzufi:erreichbarkeit><xzufi:internetadresse languageCode=\"de\"><xzufi:uri>http://www.denkmal.schleswig-holstein.de</xzufi:uri><xzufi:titel>www.denkmal.schleswig-holstein.de</xzufi:titel></xzufi:internetadresse><xzufi:versionsinformation><xzufi:geaendertDatumZeit>2012-12-10T14:30:48+01:00</xzufi:geaendertDatumZeit></xzufi:versionsinformation><xzufi:sprachversion><xzufi:languageCode>de</xzufi:languageCode><xzufi:sprachbezeichnungDeutsch>Deutsch</xzufi:sprachbezeichnungDeutsch><xzufi:sprachbezeichnungNativ>Deutsch</xzufi:sprachbezeichnungNativ></xzufi:sprachversion></xzufi:organisationseinheit></xzufi:schreibe></xzufi:transfer.operation.040502>" + } \ No newline at end of file diff --git a/alfa-client/apps/alfa-e2e/start-e2e-environment.sh b/alfa-client/apps/alfa-e2e/start-e2e-environment.sh index ec3c0ee9d10fd0f4bd1e8018b1fc77ce35dc9ca3..cf5367b572152286e9a23fd893f336ba3edb8f8b 100755 --- a/alfa-client/apps/alfa-e2e/start-e2e-environment.sh +++ b/alfa-client/apps/alfa-e2e/start-e2e-environment.sh @@ -25,6 +25,7 @@ SCRIPT_DIR=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) +DOCKER_COMPOSE_CMD="docker compose -f ${SCRIPT_DIR}/docker-compose.yml" if nc -z localhost 9091 &> /dev/null then @@ -32,7 +33,7 @@ then exit fi -echo "Using docker compose -f ${SCRIPT_DIR}/docker-compose.yml ..." +echo "Using $DOCKER_COMPOSE_CMD ..." echo if [[ "$OSTYPE" == "linux-gnu"* ]] @@ -40,9 +41,9 @@ then export DOCKER_GATEWAY_HOST=172.17.0.1 fi -docker compose -f ${SCRIPT_DIR}/docker-compose.yml pull +$DOCKER_COMPOSE_CMD pull -docker compose -f ${SCRIPT_DIR}/docker-compose.yml up -d mongodb user-manager elastic smocker --wait +$DOCKER_COMPOSE_CMD up -d mongodb user-manager elastic smocker --wait echo echo "Starting VorgangManager to init search index." @@ -51,7 +52,7 @@ SPRING_PROFILE=local,e2e,initSearchIndex docker compose -f ${SCRIPT_DIR}/docker- echo waitForInitSearchIndex() { - (docker compose -f ${SCRIPT_DIR}/docker-compose.yml logs | grep -F -q 'Successful filled up index - exiting') + ($DOCKER_COMPOSE_CMD logs | grep -F -q 'Successful filled up index - exiting') } echo "Waiting for VorgangManager to finish search index initialisation." @@ -63,12 +64,12 @@ done echo echo -echo "Starting VorgangManager and Alfa Server for normal operations." +echo "Starting VorgangManager, Alfa-Server and Zufi Server and Job for normal operations." -docker compose -f ${SCRIPT_DIR}/docker-compose.yml up -d vorgang-manager alfa +$DOCKER_COMPOSE_CMD up -d vorgang-manager alfa zufi-manager-pvog zufi-manager-server waitForServerStarted() { - (docker compose -f ${SCRIPT_DIR}/docker-compose.yml logs | awk 'BEGIN{RS="\0"} /Started AlfaServerApplication/ && /Started VorgangManagerServerApplication/ { exit 1 }') + ($DOCKER_COMPOSE_CMD logs | awk 'BEGIN{RS="\0"} /Started AlfaServerApplication/ && /Started VorgangManagerServerApplication/ { exit 1 }') } echo @@ -80,14 +81,4 @@ do done echo -echo -echo "Init smocker" -while [ $(curl -sw '%{http_code}' "http://localhost:7081/version" -o /dev/null) -ne 200 ]; do - echo -n "." - sleep 1 -done - -curl -X POST http://localhost:7081/mocks -H 'Content-Type: application/x-yaml' --data-binary @src/fixtures/smocker/mocks.yaml - -echo echo "done." \ No newline at end of file