diff --git a/README.adoc b/README.adoc index 5381b4f..533e5ac 100644 --- a/README.adoc +++ b/README.adoc @@ -230,12 +230,7 @@ Für die Beantragung des KOB Zertifikates bei der gematik benötigen Sie als Pr Die Testergebnisse selbst sind unter `target/site/serenity/index.html` zu finden und können somit im Browser verifiziert werden. Der Testreport wird automatisch nach der Ausführung im `target/kob-testsuite.*-test-report.zip` abgelegt, wenn die Ausführung über den Quit Button in der WorkflowUI beendet wird. -Um diese Datei aus dem Docker Container in das lokale System zu kopieren, muss der Platzhalter mit der entsprechenden Release-Versionsnummer ersetzt werden. Dann kann folgender Befehl genutzt werden: - -[source,bash] ----- -docker cp kob-testsuite:/app/target/kob-testsuite--test-report.zip . ----- +Auch bei der Ausführung als Docker Container wird die Datei direkt in diesem Verzeichnis des Repositories abgelegt. === Upload bei TITUS diff --git a/ReleaseNotes.md b/ReleaseNotes.md index 5adb681..a0bb204 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -1,5 +1,11 @@ # Release Notes KOB Testsuite +## Release 1.0.0 + +* Initial version to get KOB certification +* New static identity (server cert) for localhost fqdn +* Issue accessing the test report with docker fixed + ## Release 0.6.5 * Server-TLS-Suites now conforming to specified values diff --git a/dc-testsuite.yml b/dc-testsuite.yml index b2f96f1..b82797d 100644 --- a/dc-testsuite.yml +++ b/dc-testsuite.yml @@ -2,7 +2,7 @@ name: dc-testsuite-kob services: kob-testsuite: - image: gematik1/kob-testsuite:0.6.5 + image: gematik1/kob-testsuite:1.0.0 container_name: kob-testsuite environment: - MAVEN_OPTS=-Dcucumber.filter.tags=${TESTSUITE_TESTS} @@ -14,8 +14,7 @@ services: - "9011:9011" - "443:443" volumes: - - ./tiger.yaml:/app/tiger.yaml - - ./kob.yaml:/app/kob.yaml + - ./:/app - kob-testsuite-maven:/.m2 # has to be 'copied' AFTER the volume is mounted - ./settings.xml:/.m2/settings.xml diff --git a/kob.yaml b/kob.yaml index 462e696..3e846d2 100644 --- a/kob.yaml +++ b/kob.yaml @@ -25,11 +25,6 @@ kob: # Soll der Browser gestartet werden? (true/false) Docker-Compose deaktiviert diese Option, # daher sollte diese Eigenschaft immer korrekt sein. startBrowser: true - # Die RootCa, die der Tiger-Proxy verwenden soll. Der Standardwert ist "ca.p12;changeit". - # Eigene Zertifikate können hinterlegt werden. Als Format sollte PKCS12 verwendet werden, - # das Passwort kann nach einem Semikolon angegeben werden. Details können hier gefunden werden: - # https://gematik.github.io/app-Tiger/Tiger-User-Manual.html#configuring-pki-identities-in-tiger-proxys-tls-section - rootCa: ca.p12;changeit # Polling für die Testtreiber-API. polling: timeoutInSeconds: 120 diff --git a/pom.xml b/pom.xml index 2062a8a..949b952 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ de.gematik kob-testsuite - 0.6.5 + 1.0.0 jar KOB Testsuite fuer PS Hersteller diff --git a/src/test/resources/features/epa_3_0/kob_epa3_0.feature b/src/test/resources/features/epa_3_0/kob_epa3_0.feature index d19c218..357a8a7 100644 --- a/src/test/resources/features/epa_3_0/kob_epa3_0.feature +++ b/src/test/resources/features/epa_3_0/kob_epa3_0.feature @@ -7,14 +7,14 @@ Funktion: KOB Testsuite for EPA 3.0 # Das Format des Downloads kann frei gewählt werde (siehe kob.yaml) # Der Download wird entweder über die Testtreiber-API oder manuell über die UI getriggert (siehe kob.yaml) # Der Screenshot wird in TITUS separat hochgeladen und händisch von der gematik überprüft. Er soll die Anzeige des EML in der UI demonstrieren - @Optional - Szenariogrundriss: Download EML + @Optional @IBM + Szenario: Download EML IBM # Bereite Testumgebung vor Gegeben sei TGR lösche aufgezeichnete Nachrichten Und TGR lösche die benutzerdefinierte Fehlermeldung # Wir triggern den Download der eML in dem konfigurierten Format - Wenn KOB lade die EML für die KVNR "" im Format "" von dem Aktensystem "" herunter + Wenn KOB lade die EML für die KVNR "${kob.kvnrIbm}" im Format "${kob.emlType}" von dem Aktensystem "IBM" herunter # Zunächst überprüfen wir, ob grundsätzlich Verkehr gefunden werden kann und er den Mindestanforderungen entspricht Dann TGR die Fehlermeldung wird gesetzt auf: "Es konnte kein Verkehr gefunden werden! Bitte überprüfen Sie, ob der Verkehr tatsächlich über Tiger geroutet wird." @@ -32,11 +32,11 @@ Funktion: KOB Testsuite for EPA 3.0 # Nun prüfen wir die Struktur der Anfrage Dann TGR prüfe aktueller Request stimmt im Knoten "$.method" überein mit "POST" Und TGR prüfe aktueller Request stimmt im Knoten "$.header.[~'content-type']" überein mit "application/octet-stream" - Und TGR prüfe aktueller Request stimmt im Knoten "$.header.[~'host']" überein mit ".*" + Und TGR prüfe aktueller Request stimmt im Knoten "$.header.[~'host']" überein mit "epa-as-1.dev.epa4all.de.*" # Und nun die Struktur der inneren Anfrage (der VAU-verschlüsselte HTTP-Request) Und TGR prüfe aktueller Request stimmt im Knoten "$.body.decrypted.method" überein mit "GET" - Und TGR prüfe aktueller Request stimmt im Knoten "$.body.decrypted.header.['x-insurantid']" überein mit "" + Und TGR prüfe aktueller Request stimmt im Knoten "$.body.decrypted.header.['x-insurantid']" überein mit "${kob.kvnrIbm}" Und TGR prüfe aktueller Request stimmt im Knoten "$.body.decrypted.header.['x-useragent']" überein mit "^[a-zA-Z0-9\-]{1,20}\/[a-zA-Z0-9\-\.]{1,15}$" # Nun prüfen wir die Antwort des Downloads. Damit stellen wir sicher, dass der Server die Anfrage korrekt verstanden hat @@ -48,13 +48,51 @@ Funktion: KOB Testsuite for EPA 3.0 Und TGR prüfe aktuelle Antwort stimmt im Knoten "$.body.decrypted.header.[~'content-type']" überein mit "(application\/fhir\+json|application\/pdf|text\/html)" Und TGR prüfe aktuelle Antwort stimmt im Knoten "$.body.decrypted.body" überein mit ".*" - @IBM - Beispiele: - | kvnr | emlType | as | fqdn | - | ${kob.kvnrIbm} | ${kob.emlType} | IBM | epa-as-1.dev.epa4all.de | + Und TGR setze globale Variable "exec" auf "doneIBM" - @RISE - Beispiele: - | kvnr | emlType | as | fqdn | - | ${kob.kvnrRise} | ${kob.emlType} | RISE | epa-as-2.dev.epa4all.de | + @Optional @RISE + Szenario: Download EML RISE + # Bereite Testumgebung vor + Gegeben sei TGR lösche aufgezeichnete Nachrichten + Und TGR lösche die benutzerdefinierte Fehlermeldung + + # Wir triggern den Download der eML in dem konfigurierten Format + Wenn KOB lade die EML für die KVNR "${kob.kvnrRise}" im Format "${kob.emlType}" von dem Aktensystem "RISE" herunter + + # Zunächst überprüfen wir, ob grundsätzlich Verkehr gefunden werden kann und er den Mindestanforderungen entspricht + Dann TGR die Fehlermeldung wird gesetzt auf: "Es konnte kein Verkehr gefunden werden! Bitte überprüfen Sie, ob der Verkehr tatsächlich über Tiger geroutet wird." + Und TGR finde die letzte Anfrage mit dem Pfad ".*" + # In nicht-PU Umgebungen muss der Client (das Primärsystem) die verwendeten Schlüssel (K2_c2s_app_data und K2_s2c_app_data) + # Base64 kodiert im Header "VAU-nonPU-Tracing" übertragen. Diese Schlüssel dürfen NICHT in der PU übertragen werden. + Dann TGR die Fehlermeldung wird gesetzt auf: "Der 'VAU-nonPU-Tracing'-Header konnte nicht gefunden werden! Dieser muss in der RU gesetzt werden!" + Und TGR finde die letzte Anfrage mit Pfad ".*" und Knoten "$.header.[~'VAU-nonPU-Tracing']" der mit "[A-Za-z0-9+\/]{41,44}=? [A-Za-z0-9+\/]{41,44}=?" übereinstimmt + Dann TGR die Fehlermeldung wird gesetzt auf: "Das 'PU'-Flag im VAU-Header muss in der RU auf 0 gesetzt werden!" + Und TGR prüfe aktueller Request stimmt im Knoten "$.body.header.pu" überein mit "0" + + # Wir überprüfen noch den Verkehr des Downloads selbst. Dazu müssen wir zunächst die Abfrage zum Auslösen des Downloads finden + Und TGR finde die letzte Anfrage mit Pfad ".*" und Knoten "$.body.decrypted.path.basicPath" der mit "(/epa/medication/api/v1/fhir/.*|/epa/medication/render/v1/eml/.*)" übereinstimmt + + # Nun prüfen wir die Struktur der Anfrage + Dann TGR prüfe aktueller Request stimmt im Knoten "$.method" überein mit "POST" + Und TGR prüfe aktueller Request stimmt im Knoten "$.header.[~'content-type']" überein mit "application/octet-stream" + Und TGR prüfe aktueller Request stimmt im Knoten "$.header.[~'host']" überein mit "epa-as-2.dev.epa4all.de.*" + + # Und nun die Struktur der inneren Anfrage (der VAU-verschlüsselte HTTP-Request) + Und TGR prüfe aktueller Request stimmt im Knoten "$.body.decrypted.method" überein mit "GET" + Und TGR prüfe aktueller Request stimmt im Knoten "$.body.decrypted.header.['x-insurantid']" überein mit "${kob.kvnrRise}" + Und TGR prüfe aktueller Request stimmt im Knoten "$.body.decrypted.header.['x-useragent']" überein mit "^[a-zA-Z0-9\-]{1,20}\/[a-zA-Z0-9\-\.]{1,15}$" + + # Nun prüfen wir die Antwort des Downloads. Damit stellen wir sicher, dass der Server die Anfrage korrekt verstanden hat + Und TGR prüfe aktuelle Antwort stimmt im Knoten "$.responseCode" überein mit "200" + Und TGR prüfe aktuelle Antwort stimmt im Knoten "$.header.[~'content-type']" überein mit "application/octet-stream" + + # Als letztes prüfen wir die Struktur der inneren Antwort (der VAU-verschlüsselte HTTP-Response) + Und TGR prüfe aktuelle Antwort stimmt im Knoten "$.body.decrypted.responseCode" überein mit "200" + Und TGR prüfe aktuelle Antwort stimmt im Knoten "$.body.decrypted.header.[~'content-type']" überein mit "(application\/fhir\+json|application\/pdf|text\/html)" + Und TGR prüfe aktuelle Antwort stimmt im Knoten "$.body.decrypted.body" überein mit ".*" + + Und TGR setze globale Variable "exec" auf "doneRISE" + @Mandatory @IBM @RISE + Szenario: Ausführungsüberprüfung + Gegeben sei TGR prüfe das "${exec}" mit "(doneIBM|doneRISE)" überein stimmt diff --git a/src/test/resources/idp-ref.zentral.idp.splitdns.ti-dienste.de_NIST_X509.p12 b/src/test/resources/idp-ref.zentral.idp.splitdns.ti-dienste.de_NIST_X509.p12 new file mode 100644 index 0000000..5f3e565 Binary files /dev/null and b/src/test/resources/idp-ref.zentral.idp.splitdns.ti-dienste.de_NIST_X509.p12 differ diff --git a/src/test/resources/localhostIdentity.p12 b/src/test/resources/localhostIdentity.p12 new file mode 100644 index 0000000..e9de2c9 Binary files /dev/null and b/src/test/resources/localhostIdentity.p12 differ diff --git a/tiger.yaml b/tiger.yaml index d1d8285..35a65d7 100644 --- a/tiger.yaml +++ b/tiger.yaml @@ -9,6 +9,8 @@ tigerProxy: serverIdentities: - "src/test/resources/epa-as-1.dev.epa4all.de_NIST_X509.p12;00" - "src/test/resources/epa-as-2.dev.epa4all.de_NIST_X509.p12;00" + - "src/test/resources/idp-ref.zentral.idp.splitdns.ti-dienste.de_NIST_X509.p12;00" + - "src/test/resources/localhostIdentity.p12;00" serverSslSuites: - "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256" - "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384" @@ -25,6 +27,10 @@ tigerProxy: hosts: ["ps", "ps:443", "ps:80"] - from: ${kob.psurl} to: ${kob.psurl} + # route für den IDP + - from: / + to: https://10.31.196.4:443/ + hosts: ["idp-ref.zentral.idp.splitdns.ti-dienste.de"] # AS 1, IBM - "10.30.19.70/135" - from: / to: https://10.30.19.70:443/