diff --git a/ReleaseNotes.md b/ReleaseNotes.md index 4e5e3c7..22401ca 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -1,5 +1,14 @@ # Release Notes KOB Testsuite +## Release 1.0.3 + +* Updated + * added check for HTTP Header `x-useragent` in outer HTTP request (not VAU encrypted part) within KOB and optional testcase + * added regex check for HTTP Header `x-useragent` in inner HTTP request within optional testcases + * checking HTTP header field name `x-useragent`, `x-insurantid` & `VAU-nonPU-Tracing` is now case-insensitive (as in standard RFC-9110 Section-5.1 ) +* Bugs + * Fixed missing correction in testcase for IBM and RISE resp. + ## Release 1.0.2 * Upgrade to Tiger 3.4.6 diff --git a/dc-testsuite.yml b/dc-testsuite.yml index 598508a..f2b5169 100644 --- a/dc-testsuite.yml +++ b/dc-testsuite.yml @@ -2,7 +2,7 @@ name: dc-testsuite-kob services: kob-testsuite: - image: gematik1/kob-testsuite:1.0.2 + image: gematik1/kob-testsuite:1.0.3 container_name: kob-testsuite environment: - MAVEN_OPTS=-Dcucumber.filter.tags=${TESTSUITE_TESTS} diff --git a/pom.xml b/pom.xml index a8d7648..b5d94e8 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ de.gematik kob-testsuite - 1.0.2 + 1.0.3 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 c681bda..35cc715 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 @@ -37,11 +37,12 @@ Funktion: KOB Testsuite for EPA 3.0 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-1.dev.epa4all.de.*" + Und TGR prüfe aktueller Request stimmt im Knoten "$.header.[~'x-useragent']" überein mit "^[a-zA-Z0-9\-]{1,20}\/[a-zA-Z0-9\-\.]{1,15}$" # 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.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}$" + 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 Und TGR prüfe aktuelle Antwort stimmt im Knoten "$.responseCode" überein mit "200" @@ -49,7 +50,7 @@ Funktion: KOB Testsuite for EPA 3.0 # 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.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 "doneIBM" @@ -72,6 +73,7 @@ Funktion: KOB Testsuite for EPA 3.0 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" + Und TGR lösche die benutzerdefinierte Fehlermeldung # 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 @@ -80,11 +82,12 @@ Funktion: KOB Testsuite for EPA 3.0 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 TGR prüfe aktueller Request stimmt im Knoten "$.header.[~'x-useragent']" überein mit "^[a-zA-Z0-9\-]{1,20}\/[a-zA-Z0-9\-\.]{1,15}$" # 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}$" + 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" diff --git a/src/test/resources/features/epa_3_0/opt_entitlement.feature b/src/test/resources/features/epa_3_0/opt_entitlement.feature index d709955..d600aaa 100644 --- a/src/test/resources/features/epa_3_0/opt_entitlement.feature +++ b/src/test/resources/features/epa_3_0/opt_entitlement.feature @@ -19,12 +19,13 @@ Funktion: Test set entitlements by PS Und TGR current request with attribute "$.method" matches "POST" Und TGR current request with attribute "$.header.[~'accept']" matches ".*application/octet-stream.*" Und TGR current request with attribute "$.header.[~'content-type']" matches "application/octet-stream" - Und TGR current request with attribute "$.header.['VAU-nonPU-Tracing']" matches ".* .*" + Und TGR current request with attribute "$.header.[~'VAU-nonPU-Tracing']" matches ".* .*" + Und TGR current request with attribute "$.header.[~'x-useragent']" matches "^[a-zA-Z0-9\-]{1,20}\/[a-zA-Z0-9\-\.]{1,15}$" # inner request Und TGR current request with attribute "$.body.decrypted.method" matches "POST" Und TGR current request with attribute "$.body.decrypted.header.[~'accept']" matches ".*application/json.*" - Und TGR current request with attribute "$.body.decrypted.header.['x-useragent']" matches ".*" - Und TGR current request with attribute "$.body.decrypted.header.['x-insurantid']" matches ".*" + Und TGR current request with attribute "$.body.decrypted.header.[~'x-insurantid']" matches ".*" + Und TGR current request with attribute "$.body.decrypted.header.[~'x-useragent']" matches "^[a-zA-Z0-9\-]{1,20}\/[a-zA-Z0-9\-\.]{1,15}$" Und TGR current request at "$.body.decrypted.body" matches as JSON: """ { diff --git a/src/test/resources/features/epa_3_0/opt_information.feature b/src/test/resources/features/epa_3_0/opt_information.feature index 9349b46..76ae571 100644 --- a/src/test/resources/features/epa_3_0/opt_information.feature +++ b/src/test/resources/features/epa_3_0/opt_information.feature @@ -17,8 +17,8 @@ Funktion: Test information operations by PS ### get record status # request Und TGR find last request to path "/information/api/v1/ehr" with "$.method" matching "GET" - Und TGR current request with attribute "$.header.['x-insurantid']" matches ".*" - Und TGR current request with attribute "$.header.['x-useragent']" matches ".*" + Und TGR current request with attribute "$.header.[~'x-insurantid']" matches ".*" + Und TGR current request with attribute "$.header.[~'x-useragent']" matches "^[a-zA-Z0-9\-]{1,20}\/[a-zA-Z0-9\-\.]{1,15}$" # response Und TGR current response with attribute "$.responseCode" matches "204" @@ -36,8 +36,8 @@ Funktion: Test information operations by PS # request Und TGR find last request to path "/information/api/v1/ehr/consentdecisions" with "$.method" matching "GET" Und TGR current request with attribute "$.header.[~'accept']" matches ".*application/json.*" - Und TGR current request with attribute "$.header.['x-insurantid']" matches ".*" - Und TGR current request with attribute "$.header.['x-useragent']" matches ".*" + Und TGR current request with attribute "$.header.[~'x-insurantid']" matches ".*" + Und TGR current request with attribute "$.header.[~'x-useragent']" matches "^[a-zA-Z0-9\-]{1,20}\/[a-zA-Z0-9\-\.]{1,15}$" # response Und TGR current response with attribute "$.responseCode" matches "200" diff --git a/src/test/resources/features/epa_3_0/opt_login.feature b/src/test/resources/features/epa_3_0/opt_login.feature index e9db648..6c42bf0 100644 --- a/src/test/resources/features/epa_3_0/opt_login.feature +++ b/src/test/resources/features/epa_3_0/opt_login.feature @@ -19,11 +19,12 @@ Funktion: Test ePA login Und TGR current request with attribute "$.method" matches "POST" Und TGR current request with attribute "$.header.[~'accept']" matches ".*application/octet-stream.*" Und TGR current request with attribute "$.header.[~'content-type']" matches "application/octet-stream" - Und TGR current request with attribute "$.header.['VAU-nonPU-Tracing']" matches ".* .*" + Und TGR current request with attribute "$.header.[~'VAU-nonPU-Tracing']" matches ".* .*" + Und TGR current request with attribute "$.header.[~'x-useragent']" matches "^[a-zA-Z0-9\-]{1,20}\/[a-zA-Z0-9\-\.]{1,15}$" # inner request Und TGR current request with attribute "$.body.decrypted.method" matches "GET" Und TGR current request with attribute "$.body.decrypted.header.[~'accept']" matches ".*application/json.*" - Und TGR current request with attribute "$.body.decrypted.header.['x-useragent']" matches ".*" + Und TGR current request with attribute "$.body.decrypted.header.[~'x-useragent']" matches "^[a-zA-Z0-9\-]{1,20}\/[a-zA-Z0-9\-\.]{1,15}$" # outer response Und TGR current response with attribute "$.header.[~'content-type']" matches "application/octet-stream" Und TGR current response with attribute "$.responseCode" matches "200" @@ -43,10 +44,11 @@ Funktion: Test ePA login Und TGR current request with attribute "$.method" matches "POST" Und TGR current request with attribute "$.header.[~'accept']" matches ".*application/octet-stream.*" Und TGR current request with attribute "$.header.[~'content-type']" matches "application/octet-stream" - Und TGR current request with attribute "$.header.['VAU-nonPU-Tracing']" matches ".* .*" + Und TGR current request with attribute "$.header.[~'VAU-nonPU-Tracing']" matches ".* .*" + Und TGR current request with attribute "$.header.[~'x-useragent']" matches "^[a-zA-Z0-9\-]{1,20}\/[a-zA-Z0-9\-\.]{1,15}$" # inner request Und TGR current request with attribute "$.body.decrypted.method" matches "GET" - Und TGR current request with attribute "$.body.decrypted.header.['x-useragent']" matches ".*" + Und TGR current request with attribute "$.body.decrypted.header.[~'x-useragent']" matches "^[a-zA-Z0-9\-]{1,20}\/[a-zA-Z0-9\-\.]{1,15}$" # outer response Und TGR current response with attribute "$.header.[~'content-type']" matches "application/octet-stream" Und TGR current response with attribute "$.responseCode" matches "200" @@ -70,11 +72,12 @@ Funktion: Test ePA login Und TGR current request with attribute "$.method" matches "POST" Und TGR current request with attribute "$.header.[~'accept']" matches ".*application/octet-stream.*" Und TGR current request with attribute "$.header.[~'content-type']" matches "application/octet-stream" - Und TGR current request with attribute "$.header.['VAU-nonPU-Tracing']" matches ".* .*" + Und TGR current request with attribute "$.header.[~'VAU-nonPU-Tracing']" matches ".* .*" + Und TGR current request with attribute "$.header.[~'x-useragent']" matches "^[a-zA-Z0-9\-]{1,20}\/[a-zA-Z0-9\-\.]{1,15}$" # inner request Und TGR current request with attribute "$.body.decrypted.method" matches "POST" Und TGR current request with attribute "$.body.decrypted.header.[~'content-type']" matches "application/json" - Und TGR current request with attribute "$.body.decrypted.header.['x-useragent']" matches ".*" + Und TGR current request with attribute "$.body.decrypted.header.[~'x-useragent']" matches "^[a-zA-Z0-9\-]{1,20}\/[a-zA-Z0-9\-\.]{1,15}$" Und TGR current request at "$.body.decrypted.body" matches as JSON: """