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 2019/11/20 07:32:23 UTC

[james-project] 40/41: JAMES-2949 Remove FIXME-USERNAME annotations by using lower case comparison

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 3b1fc18f230982122d6cff68f62dd2f3c3f4e655
Author: Raphael Ouazana <ra...@linagora.com>
AuthorDate: Tue Nov 19 17:09:45 2019 +0100

    JAMES-2949 Remove FIXME-USERNAME annotations by using lower case comparison
---
 .../main/java/org/apache/james/core/Username.java  | 11 +++++
 .../java/org/apache/james/core/UsernameTest.java   | 48 ++++++++++++++++++++++
 .../apache/james/mailbox/model/MailboxPath.java    |  2 +-
 .../james/transport/mailets/AbstractSign.java      |  2 +-
 .../mailets/delivery/SimpleMailStore.java          |  2 +-
 .../SenderAuthIdentifyVerificationRcptHook.java    |  7 +---
 6 files changed, 63 insertions(+), 9 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 308bc69..73e6aaf 100644
--- a/core/src/main/java/org/apache/james/core/Username.java
+++ b/core/src/main/java/org/apache/james/core/Username.java
@@ -125,6 +125,17 @@ public class Username {
         return asString().toLowerCase(Locale.US);
     }
 
+    public boolean equalsAsId(String otherId) {
+        if (otherId == null) {
+            return false;
+        }
+        return asId().equals(otherId.toLowerCase(Locale.US));
+    }
+
+    public boolean equalsAsId(Username otherId) {
+        return asId().equals(otherId.asId());
+    }
+
     public MailAddress asMailAddress() throws AddressException {
         Preconditions.checkState(hasDomainPart());
         return new MailAddress(localPart, domainPart.get());
diff --git a/core/src/test/java/org/apache/james/core/UsernameTest.java b/core/src/test/java/org/apache/james/core/UsernameTest.java
index 8fe63d1..8d49880 100644
--- a/core/src/test/java/org/apache/james/core/UsernameTest.java
+++ b/core/src/test/java/org/apache/james/core/UsernameTest.java
@@ -242,4 +242,52 @@ class UsernameTest {
             .withDefaultDomainFromUser(Username.of("bob")))
             .isEqualTo(Username.of("user"));
     }
+
+    @Test
+    void equalsAsIdShouldReturnFalseWhenNull() {
+        assertThat(Username.of("user").equalsAsId((String)null))
+            .isFalse();
+    }
+
+    @Test
+    void equalsAsIdShouldReturnFalseWhenDifferentId() {
+        assertThat(Username.of("user").equalsAsId("user2"))
+            .isFalse();
+    }
+
+    @Test
+    void equalsAsIdShouldReturnTrueWhenSameId() {
+        assertThat(Username.of("user").equalsAsId("user"))
+            .isTrue();
+    }
+
+    @Test
+    void equalsAsIdShouldReturnTrueWhenSameIdWithDifferentCase() {
+        assertThat(Username.of("user").equalsAsId("uSEr"))
+            .isTrue();
+    }
+
+    @Test
+    void equalsAsIdForUsernameShouldThrowWhenNull() {
+        assertThatThrownBy(() -> Username.of("user").equalsAsId((Username)null))
+            .isInstanceOf(NullPointerException.class);
+    }
+
+    @Test
+    void equalsAsIdForUsernameShouldReturnFalseWhenDifferentId() {
+        assertThat(Username.of("user").equalsAsId(Username.of("user2")))
+            .isFalse();
+    }
+
+    @Test
+    void equalsAsIdForUsernameShouldReturnTrueWhenSameId() {
+        assertThat(Username.of("user").equalsAsId(Username.of("user")))
+            .isTrue();
+    }
+
+    @Test
+    void equalsAsIdForUsernameShouldReturnTrueWhenSameIdWithDifferentCase() {
+        assertThat(Username.of("user").equalsAsId(Username.of("uSEr")))
+            .isTrue();
+    }
 }
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxPath.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxPath.java
index 5edc9b1..458000e 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxPath.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxPath.java
@@ -101,7 +101,7 @@ public class MailboxPath {
     }
 
     public boolean belongsTo(MailboxSession mailboxSession) {
-        return user.asString().equalsIgnoreCase(mailboxSession.getUser().asString());//FIXME-USERNAME
+        return user.equalsAsId(mailboxSession.getUser());
     }
 
     /**
diff --git a/mailet/crypto/src/main/java/org/apache/james/transport/mailets/AbstractSign.java b/mailet/crypto/src/main/java/org/apache/james/transport/mailets/AbstractSign.java
index d8f0dc6..5a643e1 100644
--- a/mailet/crypto/src/main/java/org/apache/james/transport/mailets/AbstractSign.java
+++ b/mailet/crypto/src/main/java/org/apache/james/transport/mailets/AbstractSign.java
@@ -586,7 +586,7 @@ public abstract class AbstractSign extends GenericMailet {
         } else {
             // is the reverse-path user different from the SMTP authorized user?
             Username username = getUsername(reversePath);
-            if (!username.asString().equals(authUser)) { //FIXME-USERNAME
+            if (!username.equalsAsId(authUser)) {
                 LOGGER.info("SMTP logged in as <{}> but pretend to be sender <{}>", authUser, username);
                 return false;
             }
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/SimpleMailStore.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/SimpleMailStore.java
index 82f671e..45f9f08 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/SimpleMailStore.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/SimpleMailStore.java
@@ -104,7 +104,7 @@ public class SimpleMailStore implements MailStore {
 
     private String locateFolder(Username username, Mail mail) {
         return AttributeUtils
-            .getValueAndCastFromMail(mail, AttributeName.of(DELIVERY_PATH_PREFIX + username.asString()), String.class) //FIXME-USERNAME
+            .getValueAndCastFromMail(mail, AttributeName.of(DELIVERY_PATH_PREFIX + username.asId()), String.class)
             .orElse(folder);
     }
 
diff --git a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/SenderAuthIdentifyVerificationRcptHook.java b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/SenderAuthIdentifyVerificationRcptHook.java
index 5ed3567..74e1953 100644
--- a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/SenderAuthIdentifyVerificationRcptHook.java
+++ b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/SenderAuthIdentifyVerificationRcptHook.java
@@ -18,9 +18,6 @@
  ****************************************************************/
 package org.apache.james.smtpserver;
 
-import java.text.Collator;
-import java.util.Locale;
-
 import javax.inject.Inject;
 
 import org.apache.james.core.Domain;
@@ -78,8 +75,6 @@ public class SenderAuthIdentifyVerificationRcptHook extends AbstractSenderAuthId
 
     @Override
     protected boolean isSenderAllowed(Username user, Username sender) {
-        Collator collator = Collator.getInstance(Locale.US);
-        collator.setStrength(Collator.PRIMARY);
-        return collator.compare(user.asString(), sender.asString()) == 0; //FIXME-USERNAME
+        return user.equalsAsId(sender);
     }
 }


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