From b42143b50c1e258ee93ef2ec9c93cec674897781 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lubo=C5=A1=20Ra=C4=8Dansk=C3=BD?=
 <lubos.racansky@wultra.com>
Date: Wed, 27 Jul 2022 11:20:02 +0200
Subject: [PATCH] Fix #297: Prepare mock Digital Onboarding Adapter (#298)

---
 .../README.md                                 | 19 ++++++
 .../bin/wiremock.sh                           | 10 +++
 .../pom.xml                                   | 64 +++++++++++++++++++
 .../__files/body-client-evaluate.json         |  8 +++
 .../__files/body-consent-storage.json         |  1 +
 .../wiremock/__files/body-consent-text.json   |  3 +
 .../test/wiremock/__files/body-otp-send.json  |  3 +
 .../wiremock/__files/body-user-lookup.json    |  4 ++
 .../wiremock/mappings/client-evaluate.json    | 13 ++++
 .../wiremock/mappings/consent-storage.json    | 13 ++++
 .../test/wiremock/mappings/consent-text.json  | 13 ++++
 .../src/test/wiremock/mappings/otp-send.json  | 13 ++++
 .../test/wiremock/mappings/user-lookup.json   | 13 ++++
 pom.xml                                       |  1 +
 14 files changed, 178 insertions(+)
 create mode 100644 enrollment-server-onboarding-adapter-mock/README.md
 create mode 100755 enrollment-server-onboarding-adapter-mock/bin/wiremock.sh
 create mode 100644 enrollment-server-onboarding-adapter-mock/pom.xml
 create mode 100644 enrollment-server-onboarding-adapter-mock/src/test/wiremock/__files/body-client-evaluate.json
 create mode 100644 enrollment-server-onboarding-adapter-mock/src/test/wiremock/__files/body-consent-storage.json
 create mode 100644 enrollment-server-onboarding-adapter-mock/src/test/wiremock/__files/body-consent-text.json
 create mode 100644 enrollment-server-onboarding-adapter-mock/src/test/wiremock/__files/body-otp-send.json
 create mode 100644 enrollment-server-onboarding-adapter-mock/src/test/wiremock/__files/body-user-lookup.json
 create mode 100644 enrollment-server-onboarding-adapter-mock/src/test/wiremock/mappings/client-evaluate.json
 create mode 100644 enrollment-server-onboarding-adapter-mock/src/test/wiremock/mappings/consent-storage.json
 create mode 100644 enrollment-server-onboarding-adapter-mock/src/test/wiremock/mappings/consent-text.json
 create mode 100644 enrollment-server-onboarding-adapter-mock/src/test/wiremock/mappings/otp-send.json
 create mode 100644 enrollment-server-onboarding-adapter-mock/src/test/wiremock/mappings/user-lookup.json

diff --git a/enrollment-server-onboarding-adapter-mock/README.md b/enrollment-server-onboarding-adapter-mock/README.md
new file mode 100644
index 000000000..e0d4c6b7c
--- /dev/null
+++ b/enrollment-server-onboarding-adapter-mock/README.md
@@ -0,0 +1,19 @@
+# Onboarding Adapter Mock
+
+Mock of onboarding adapter using [WireMock].
+
+## Run
+
+**NOTE**: Before the first usage of the standalone [WireMock] please execute the following command:
+
+```bash
+mvn clean package
+```
+
+You can start [WireMock] using the predefined script:
+
+```bash
+./bin/wiremock.sh
+```
+
+[WireMock]: https://wiremock.org/docs/)
diff --git a/enrollment-server-onboarding-adapter-mock/bin/wiremock.sh b/enrollment-server-onboarding-adapter-mock/bin/wiremock.sh
new file mode 100755
index 000000000..9d7780d18
--- /dev/null
+++ b/enrollment-server-onboarding-adapter-mock/bin/wiremock.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+mydir=`dirname $0`
+cd $mydir/..
+
+java -jar target/dependency/wiremock-jre8-standalone.jar \
+    --port 8090 \
+    --root-dir "src/test/wiremock" \
+    --verbose \
+    --global-response-templating
diff --git a/enrollment-server-onboarding-adapter-mock/pom.xml b/enrollment-server-onboarding-adapter-mock/pom.xml
new file mode 100644
index 000000000..0171516d3
--- /dev/null
+++ b/enrollment-server-onboarding-adapter-mock/pom.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ PowerAuth Enrollment Server
+  ~ Copyright (C) 2022 Wultra s.r.o.
+  ~
+  ~ This program is free software: you can redistribute it and/or modify
+  ~ it under the terms of the GNU Affero General Public License as published
+  ~ by the Free Software Foundation, either version 3 of the License, or
+  ~ (at your option) any later version.
+  ~
+  ~ This program is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  ~ GNU Affero General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU Affero General Public License
+  ~ along with this program.  If not, see <http://www.gnu.org/licenses/>.
+  -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>com.wultra.security</groupId>
+        <artifactId>enrollment-server-parent</artifactId>
+        <version>1.4.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>enrollment-server-onboarding-adapter-mock</artifactId>
+    <name>enrollment-server-onboarding-adapter-mock</name>
+    <description>Onboarding adapter mock for enrollment server.</description>
+
+    <properties>
+        <wiremock.version>2.33.2</wiremock.version>
+    </properties>
+
+    <build>
+        <plugins>
+            <plugin>
+                <artifactId>maven-dependency-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>copy-wiremock</id>
+                        <goals>
+                            <goal>copy</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <artifactItems>
+                        <artifactItem>
+                            <groupId>com.github.tomakehurst</groupId>
+                            <artifactId>wiremock-jre8-standalone</artifactId>
+                            <version>${wiremock.version}</version>
+                        </artifactItem>
+                    </artifactItems>
+                    <stripVersion>true</stripVersion>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
diff --git a/enrollment-server-onboarding-adapter-mock/src/test/wiremock/__files/body-client-evaluate.json b/enrollment-server-onboarding-adapter-mock/src/test/wiremock/__files/body-client-evaluate.json
new file mode 100644
index 000000000..9c9144eac
--- /dev/null
+++ b/enrollment-server-onboarding-adapter-mock/src/test/wiremock/__files/body-client-evaluate.json
@@ -0,0 +1,8 @@
+{
+  "result": "OK",
+  "info": {
+    "aggregationResult": true,
+    "mdcCheck": true,
+    "documentsAccepted": true
+  }
+}
\ No newline at end of file
diff --git a/enrollment-server-onboarding-adapter-mock/src/test/wiremock/__files/body-consent-storage.json b/enrollment-server-onboarding-adapter-mock/src/test/wiremock/__files/body-consent-storage.json
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/enrollment-server-onboarding-adapter-mock/src/test/wiremock/__files/body-consent-storage.json
@@ -0,0 +1 @@
+{}
diff --git a/enrollment-server-onboarding-adapter-mock/src/test/wiremock/__files/body-consent-text.json b/enrollment-server-onboarding-adapter-mock/src/test/wiremock/__files/body-consent-text.json
new file mode 100644
index 000000000..a523c2e22
--- /dev/null
+++ b/enrollment-server-onboarding-adapter-mock/src/test/wiremock/__files/body-consent-text.json
@@ -0,0 +1,3 @@
+{
+  "consentText": "<html><body><h1>Lorem ipsum</h1>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam posuere lacus quis dolor. Nullam feugiat, turpis at pulvinar vulputate, erat libero tristique tellus, nec bibendum odio risus sit amet ante. Nullam at arcu a est sollicitudin euismod. Aliquam in lorem sit amet leo accumsan lacinia. Duis condimentum augue id magna semper rutrum. Sed convallis magna eu sem. Pellentesque arcu. Phasellus faucibus molestie nisl. Maecenas fermentum, sem in pharetra pellentesque, velit turpis volutpat ante, in pharetra metus odio a lectus. Nullam feugiat, turpis at pulvinar vulputate, erat libero tristique tellus, nec bibendum odio risus sit amet ante. Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?</body></html>"
+}
diff --git a/enrollment-server-onboarding-adapter-mock/src/test/wiremock/__files/body-otp-send.json b/enrollment-server-onboarding-adapter-mock/src/test/wiremock/__files/body-otp-send.json
new file mode 100644
index 000000000..a68e82120
--- /dev/null
+++ b/enrollment-server-onboarding-adapter-mock/src/test/wiremock/__files/body-otp-send.json
@@ -0,0 +1,3 @@
+{
+  "otpSent": true
+}
diff --git a/enrollment-server-onboarding-adapter-mock/src/test/wiremock/__files/body-user-lookup.json b/enrollment-server-onboarding-adapter-mock/src/test/wiremock/__files/body-user-lookup.json
new file mode 100644
index 000000000..45cb383b1
--- /dev/null
+++ b/enrollment-server-onboarding-adapter-mock/src/test/wiremock/__files/body-user-lookup.json
@@ -0,0 +1,4 @@
+{
+  "userId": "mockuser_{{jsonPath request.body '$.identification.clientNumber'}}",
+  "consentRequired": true
+}
diff --git a/enrollment-server-onboarding-adapter-mock/src/test/wiremock/mappings/client-evaluate.json b/enrollment-server-onboarding-adapter-mock/src/test/wiremock/mappings/client-evaluate.json
new file mode 100644
index 000000000..4c46e6ef0
--- /dev/null
+++ b/enrollment-server-onboarding-adapter-mock/src/test/wiremock/mappings/client-evaluate.json
@@ -0,0 +1,13 @@
+{
+  "request": {
+    "method": "POST",
+    "url": "/client/evaluate"
+  },
+  "response": {
+    "status": 200,
+    "headers": {
+      "Content-Type": "application/json"
+    },
+    "bodyFileName": "body-client-evaluate.json"
+  }
+}
diff --git a/enrollment-server-onboarding-adapter-mock/src/test/wiremock/mappings/consent-storage.json b/enrollment-server-onboarding-adapter-mock/src/test/wiremock/mappings/consent-storage.json
new file mode 100644
index 000000000..f28cc61e5
--- /dev/null
+++ b/enrollment-server-onboarding-adapter-mock/src/test/wiremock/mappings/consent-storage.json
@@ -0,0 +1,13 @@
+{
+  "request": {
+    "method": "POST",
+    "url": "/consent/storage"
+  },
+  "response": {
+    "status": 200,
+    "headers": {
+      "Content-Type": "application/json"
+    },
+    "bodyFileName": "body-consent-storage.json"
+  }
+}
diff --git a/enrollment-server-onboarding-adapter-mock/src/test/wiremock/mappings/consent-text.json b/enrollment-server-onboarding-adapter-mock/src/test/wiremock/mappings/consent-text.json
new file mode 100644
index 000000000..c7ce8406c
--- /dev/null
+++ b/enrollment-server-onboarding-adapter-mock/src/test/wiremock/mappings/consent-text.json
@@ -0,0 +1,13 @@
+{
+  "request": {
+    "method": "POST",
+    "url": "/consent/text"
+  },
+  "response": {
+    "status": 200,
+    "headers": {
+      "Content-Type": "application/json"
+    },
+    "bodyFileName": "body-consent-text.json"
+  }
+}
diff --git a/enrollment-server-onboarding-adapter-mock/src/test/wiremock/mappings/otp-send.json b/enrollment-server-onboarding-adapter-mock/src/test/wiremock/mappings/otp-send.json
new file mode 100644
index 000000000..2700439f4
--- /dev/null
+++ b/enrollment-server-onboarding-adapter-mock/src/test/wiremock/mappings/otp-send.json
@@ -0,0 +1,13 @@
+{
+  "request": {
+    "method": "POST",
+    "url": "/otp/send"
+  },
+  "response": {
+    "status": 200,
+    "headers": {
+      "Content-Type": "application/json"
+    },
+    "bodyFileName": "body-otp-send.json"
+  }
+}
diff --git a/enrollment-server-onboarding-adapter-mock/src/test/wiremock/mappings/user-lookup.json b/enrollment-server-onboarding-adapter-mock/src/test/wiremock/mappings/user-lookup.json
new file mode 100644
index 000000000..c4b5d4777
--- /dev/null
+++ b/enrollment-server-onboarding-adapter-mock/src/test/wiremock/mappings/user-lookup.json
@@ -0,0 +1,13 @@
+{
+  "request": {
+    "method": "POST",
+    "url": "/user/lookup"
+  },
+  "response": {
+    "status": 200,
+    "headers": {
+      "Content-Type": "application/json"
+    },
+    "bodyFileName": "body-user-lookup.json"
+  }
+}
diff --git a/pom.xml b/pom.xml
index cd1d47aba..22efd44aa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -78,6 +78,7 @@
         <module>enrollment-server-api-model</module>
         <module>enrollment-server</module>
         <module>enrollment-server-onboarding</module>
+        <module>enrollment-server-onboarding-adapter-mock</module>
         <module>enrollment-server-onboarding-api-model</module>
         <module>enrollment-server-onboarding-common</module>
     </modules>