You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2020/07/09 01:51:30 UTC

[james-project] 01/06: JAMES-2982 Improve Username validation error messages

This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 95ab2ec6852b23a6e3dc5754122b1f86eff926cb
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Tue Jul 7 09:00:56 2020 +0700

    JAMES-2982 Improve Username validation error messages
    
    Upon bad formats, having the username value helps debugging
---
 core/src/main/java/org/apache/james/core/Username.java            | 8 ++++----
 .../java/org/apache/james/webadmin/routes/MappingRoutesTest.java  | 2 +-
 .../org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java | 2 +-
 .../james/webadmin/service/MailboxesExportRequestToTaskTest.java  | 2 +-
 4 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/core/src/main/java/org/apache/james/core/Username.java b/core/src/main/java/org/apache/james/core/Username.java
index e0c14fa..343f565 100644
--- a/core/src/main/java/org/apache/james/core/Username.java
+++ b/core/src/main/java/org/apache/james/core/Username.java
@@ -36,7 +36,7 @@ public class Username {
 
     public static Username of(String username) {
         Preconditions.checkArgument(username != null, "username should not be null or empty");
-        Preconditions.checkArgument(!username.trim().isEmpty(), "username should not be null or empty");
+        Preconditions.checkArgument(!username.trim().isEmpty(), "username should not be null or empty after being trimmed");
         Preconditions.checkArgument(username.length() <= MAXIMUM_MAIL_ADDRESS_LENGTH,
             "username length should not be longer than %s characters", MAXIMUM_MAIL_ADDRESS_LENGTH);
 
@@ -47,7 +47,7 @@ public class Username {
             case 2:
                 return fromLocalPartWithDomain(parts.get(0), parts.get(1));
         }
-        throw new IllegalArgumentException("The username should not contain multiple domain delimiter.");
+        throw new IllegalArgumentException("The username should not contain multiple domain delimiter. Value: " + username);
     }
 
     public static Username fromLocalPartWithDomain(String localPart, String domain) {
@@ -82,8 +82,8 @@ public class Username {
 
     private Username(String localPart, Optional<Domain> domainPart) {
         Preconditions.checkNotNull(localPart);
-        Preconditions.checkArgument(!localPart.isEmpty(), "username should not be empty");
-        Preconditions.checkArgument(!localPart.contains("@"), "username can not contain domain delimiter");
+        Preconditions.checkArgument(!localPart.isEmpty(), "username local part should not be empty");
+        Preconditions.checkArgument(!localPart.contains("@"), "username local part can not contain domain delimiter, got %s", localPart);
 
         this.localPart = localPart.toLowerCase(Locale.US);
         this.domainPart = domainPart;
diff --git a/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/MappingRoutesTest.java b/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/MappingRoutesTest.java
index 01fb052..588cc1d 100644
--- a/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/MappingRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/MappingRoutesTest.java
@@ -588,7 +588,7 @@ class MappingRoutesTest {
         .body("statusCode", is(400))
         .body("type", is("InvalidArgument"))
         .body("message", is("Invalid arguments supplied in the user request"))
-        .body("details", is("The username should not contain multiple domain delimiter."));
+        .body("details", is("The username should not contain multiple domain delimiter. Value: alice123@domain@domain.tld"));
     }
 
     @Test
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java
index f6db1b5..169d76f 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java
@@ -1239,7 +1239,7 @@ class UserMailboxesRoutesTest {
                     .body("statusCode", Matchers.is(400))
                     .body("type", Matchers.is("InvalidArgument"))
                     .body("message", Matchers.is("Invalid arguments supplied in the user request"))
-                    .body("details", Matchers.is("The username should not contain multiple domain delimiter."));
+                    .body("details", Matchers.is("The username should not contain multiple domain delimiter. Value: bad@bad@bad"));
             }
         }
 
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/service/MailboxesExportRequestToTaskTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/service/MailboxesExportRequestToTaskTest.java
index e518170..d2570c7 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/service/MailboxesExportRequestToTaskTest.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/service/MailboxesExportRequestToTaskTest.java
@@ -180,7 +180,7 @@ class MailboxesExportRequestToTaskTest {
             .body("statusCode", is(400))
             .body("type", is(ErrorResponder.ErrorType.INVALID_ARGUMENT.getType()))
             .body("message", is("Invalid arguments supplied in the user request"))
-            .body("details", is("The username should not contain multiple domain delimiter."));
+            .body("details", is("The username should not contain multiple domain delimiter. Value: bad@bad@bad"));
     }
 
     @Test


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org