From 0016fec617621bade811d393893f909d1b2dfb82 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ira=20=28=E3=83=84=29?=
 <45-lambdaclan@users.noreply.gitlab.archlinux.org>
Date: Fri, 25 Dec 2020 18:30:19 +0900
Subject: [PATCH] Add exception testing and message validation

---
 .../rest/MailPassResourceIntegrationTest.java | 38 +++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/roles/keycloak/files/providers/keycloak-mailpass-rest/src/integrationTest/java/org/archlinux/keycloak/mailpass/rest/MailPassResourceIntegrationTest.java b/roles/keycloak/files/providers/keycloak-mailpass-rest/src/integrationTest/java/org/archlinux/keycloak/mailpass/rest/MailPassResourceIntegrationTest.java
index 867e089c3..0b8e10996 100644
--- a/roles/keycloak/files/providers/keycloak-mailpass-rest/src/integrationTest/java/org/archlinux/keycloak/mailpass/rest/MailPassResourceIntegrationTest.java
+++ b/roles/keycloak/files/providers/keycloak-mailpass-rest/src/integrationTest/java/org/archlinux/keycloak/mailpass/rest/MailPassResourceIntegrationTest.java
@@ -54,4 +54,42 @@ public class MailPassResourceIntegrationTest {
     assertEquals(201, response.getStatusCode());
   }
 
+  @Test
+  public void testMalformedJsonRaisesBadRequestException400() {
+    Response response = given().header("Authorization", "Bearer " + token).contentType(ContentType.JSON)
+        .body("{ \"password\"x \"password\" }").when()
+        .post(MessageFormat.format(ROOT_URI, port) + "/compute-password-hash");
+    assertEquals(400, response.getStatusCode());
+  }
+
+  @Test
+  public void testMalformedJsonExceptionMessage() {
+    Response response = given().header("Authorization", "Bearer " + token).contentType(ContentType.JSON)
+        .body("{ \"password\"x \"password\" }").when()
+        .post(MessageFormat.format(ROOT_URI, port) + "/compute-password-hash");
+
+    String error = response.jsonPath().getString("error");
+
+    assertEquals("provided data is not in valid JSON format", error);
+  }
+
+  @Test
+  public void testMissingJsonObjectRaisesBadRequestException400() {
+    Response response = given().header("Authorization", "Bearer " + token).contentType(ContentType.JSON)
+        .body("{ \"missing_password\": \"password\" }").when()
+        .post(MessageFormat.format(ROOT_URI, port) + "/compute-password-hash");
+    assertEquals(400, response.getStatusCode());
+  }
+
+  @Test
+  public void testMissingJsonObjectExceptionMessage() {
+    Response response = given().header("Authorization", "Bearer " + token).contentType(ContentType.JSON)
+        .body("{ \"missing_password\": \"password\" }").when()
+        .post(MessageFormat.format(ROOT_URI, port) + "/compute-password-hash");
+
+    String error = response.jsonPath().getString("error");
+
+    assertEquals("password object not detected in provided JSON body", error);
+  }
+
 }
-- 
GitLab