Skip to content

Commit

Permalink
1.0.0
Browse files Browse the repository at this point in the history
  • Loading branch information
Gematik-Entwicklung committed Nov 29, 2024
1 parent 13fbd40 commit f326ed9
Show file tree
Hide file tree
Showing 9 changed files with 67 additions and 28 deletions.
7 changes: 1 addition & 6 deletions README.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -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 <KOB_RELEASE_VERSION> mit der entsprechenden Release-Versionsnummer ersetzt werden. Dann kann folgender Befehl genutzt werden:

[source,bash]
----
docker cp kob-testsuite:/app/target/kob-testsuite-<KOB_RELEASE_VERSION>-test-report.zip .
----
Auch bei der Ausführung als Docker Container wird die Datei direkt in diesem Verzeichnis des Repositories abgelegt.

=== Upload bei TITUS

Expand Down
6 changes: 6 additions & 0 deletions ReleaseNotes.md
Original file line number Diff line number Diff line change
@@ -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
Expand Down
5 changes: 2 additions & 3 deletions dc-testsuite.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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}
Expand All @@ -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
Expand Down
5 changes: 0 additions & 5 deletions kob.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@

<groupId>de.gematik</groupId>
<artifactId>kob-testsuite</artifactId>
<version>0.6.5</version>
<version>1.0.0</version>
<packaging>jar</packaging>
<description>KOB Testsuite fuer PS Hersteller</description>

Expand Down
64 changes: 51 additions & 13 deletions src/test/resources/features/epa_3_0/kob_epa3_0.feature
Original file line number Diff line number Diff line change
Expand Up @@ -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 <as>
@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 "<kvnr>" im Format "<emlType>" von dem Aktensystem "<as>" 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."
Expand All @@ -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 "<fqdn>.*"
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 "<kvnr>"
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
Expand All @@ -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
Binary file not shown.
Binary file added src/test/resources/localhostIdentity.p12
Binary file not shown.
6 changes: 6 additions & 0 deletions tiger.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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/
Expand Down

0 comments on commit f326ed9

Please sign in to comment.