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 <[email protected]> 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: [email protected] For additional commands, e-mail: [email protected]
