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:
"""