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