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 rc...@apache.org on 2019/11/26 02:03:08 UTC

[james-project] 03/03: JAMES-2949 Enforce username to be always lower cased

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

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

commit 9e976d3f49f6ae2068aa583bc66fc75c37c85b52
Author: Raphael Ouazana <ra...@linagora.com>
AuthorDate: Wed Nov 20 17:21:42 2019 +0100

    JAMES-2949 Enforce username to be always lower cased
---
 .../main/java/org/apache/james/core/Username.java  | 21 +--------
 .../java/org/apache/james/core/UsernameTest.java   | 51 +++++-----------------
 .../apache/james/mailbox/model/MailboxPath.java    |  2 +-
 .../apache/james/mailbox/MailboxManagerTest.java   |  2 +-
 .../QuotaUsageUpdatedEventSerializationTest.java   |  8 ++--
 .../james/transport/mailets/AbstractSign.java      |  6 +--
 .../apache/james/mpt/TestScriptedUserAdder.java    |  4 +-
 .../org/apache/james/user/api/UsersRepository.java |  4 +-
 .../user/cassandra/CassandraUsersRepository.java   |  8 ++--
 .../src/test/resources/json/event.json             |  2 +-
 .../src/test/resources/json/eventComplex.json      |  2 +-
 .../src/test/resources/json/eventEmpty.json        |  2 +-
 .../apache/james/user/jpa/JPAUsersRepository.java  |  4 +-
 .../org/apache/james/user/jpa/model/JPAUser.java   |  2 +-
 .../james/user/lib/AbstractUsersRepository.java    |  6 +--
 .../james/user/memory/MemoryUsersRepository.java   | 14 +++---
 .../mailets/delivery/SimpleMailStore.java          |  2 +-
 .../integration/GetMailboxesMethodTest.java        |  8 ++--
 .../SenderAuthIdentifyVerificationRcptHook.java    |  2 +-
 19 files changed, 50 insertions(+), 100 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 8ae8117..ee5d846 100644
--- a/core/src/main/java/org/apache/james/core/Username.java
+++ b/core/src/main/java/org/apache/james/core/Username.java
@@ -85,7 +85,7 @@ public class Username {
         Preconditions.checkArgument(!localPart.isEmpty(), "username should not be empty");
         Preconditions.checkArgument(!localPart.contains("@"), "username can not contain domain delimiter");
 
-        this.localPart = localPart;
+        this.localPart = localPart.toLowerCase(Locale.US);
         this.domainPart = domainPart;
     }
 
@@ -121,25 +121,6 @@ public class Username {
             .orElse(localPart);
     }
 
-    public String asId() {
-        return toLowerCase().asString();
-    }
-
-    public Username toLowerCase() {
-        return new Username(localPart.toLowerCase(Locale.US), domainPart);
-    }
-
-    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 8d49880..d787947 100644
--- a/core/src/test/java/org/apache/james/core/UsernameTest.java
+++ b/core/src/test/java/org/apache/james/core/UsernameTest.java
@@ -27,7 +27,14 @@ import java.util.Optional;
 import org.apache.commons.lang3.StringUtils;
 import org.junit.jupiter.api.Test;
 
+import nl.jqno.equalsverifier.EqualsVerifier;
+
 class UsernameTest {
+    @Test
+    void shouldRespectBeanContract() {
+        EqualsVerifier.forClass(Username.class)
+            .verify();
+    }
 
     @Test
     void fromShouldThrowOnEmptyLocalPart() {
@@ -244,50 +251,14 @@ class UsernameTest {
     }
 
     @Test
-    void equalsAsIdShouldReturnFalseWhenNull() {
-        assertThat(Username.of("user").equalsAsId((String)null))
-            .isFalse();
-    }
-
-    @Test
-    void equalsAsIdShouldReturnFalseWhenDifferentId() {
-        assertThat(Username.of("user").equalsAsId("user2"))
+    void equalsShouldReturnFalseWhenDifferentId() {
+        assertThat(Username.of("user").equals(Username.of("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")))
+    void equalsShouldReturnTrueWhenSameIdWithDifferentCase() {
+        assertThat(Username.of("user").equals(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 baa600b..e922503 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
@@ -105,7 +105,7 @@ public class MailboxPath {
     }
 
     public boolean belongsTo(MailboxSession mailboxSession) {
-        return user.equalsAsId(mailboxSession.getUser());
+        return user.equals(mailboxSession.getUser());
     }
 
     /**
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java
index d3cb1a1..022294b 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java
@@ -606,7 +606,7 @@ public abstract class MailboxManagerTest<T extends MailboxManager> {
 
     @Nested
     class EventTests {
-        private final QuotaRoot quotaRoot = QuotaRoot.quotaRoot("#private&USER_1", Optional.empty());
+        private final QuotaRoot quotaRoot = QuotaRoot.quotaRoot("#private&user_1", Optional.empty());
         private EventCollector listener;
         private MailboxPath inbox;
         private MailboxId inboxId;
diff --git a/mailbox/event/json/src/test/java/org/apache/james/event/json/QuotaUsageUpdatedEventSerializationTest.java b/mailbox/event/json/src/test/java/org/apache/james/event/json/QuotaUsageUpdatedEventSerializationTest.java
index 345016e..66e07e3 100644
--- a/mailbox/event/json/src/test/java/org/apache/james/event/json/QuotaUsageUpdatedEventSerializationTest.java
+++ b/mailbox/event/json/src/test/java/org/apache/james/event/json/QuotaUsageUpdatedEventSerializationTest.java
@@ -52,7 +52,7 @@ class QuotaUsageUpdatedEventSerializationTest {
     private static final Instant INSTANT = Instant.parse("2018-11-13T12:00:55Z");
     private final MailboxListener.QuotaUsageUpdatedEvent eventWithUserContainsUsername = new MailboxListener.QuotaUsageUpdatedEvent(
         EVENT_ID,
-        Username.of("onlyUsername"),
+        Username.of("onlyusername"),
         QUOTA_ROOT,
         QUOTA_COUNT,
         QUOTA_SIZE,
@@ -65,7 +65,7 @@ class QuotaUsageUpdatedEventSerializationTest {
         "        \"countQuota\":{\"used\":12,\"limit\":100,\"limits\":{}}," +
         "        \"time\":\"2018-11-13T12:00:55Z\"," +
         "        \"sizeQuota\":{\"used\":1234,\"limit\":10000,\"limits\":{}}," +
-        "        \"user\":\"onlyUsername\"" +
+        "        \"user\":\"onlyusername\"" +
         "    }" +
         "}";
 
@@ -107,7 +107,7 @@ class QuotaUsageUpdatedEventSerializationTest {
             "        \"quotaRoot\":\"#private&foo\"," +
             "        \"time\":\"2018-11-13T12:00:55Z\"," +
             "        \"sizeQuota\":{\"used\":1234,\"limit\":10000,\"limits\":{}}," +
-            "        \"user\":\"onlyUsername\"" +
+            "        \"user\":\"onlyusername\"" +
             "    }" +
             "}";
 
@@ -124,7 +124,7 @@ class QuotaUsageUpdatedEventSerializationTest {
             "        \"quotaRoot\":\"#private&foo\"," +
             "        \"time\":\"2018-11-13T12:00:55Z\"," +
             "        \"countQuota\":{\"used\":12,\"limit\":100,\"limits\":{}}," +
-            "        \"user\":\"onlyUsername\"" +
+            "        \"user\":\"onlyusername\"" +
             "    }" +
             "}";
 
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 5a643e1..3a3b6f3 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
@@ -574,7 +574,7 @@ public abstract class AbstractSign extends GenericMailet {
             return false;
         }
 
-        String authUser = fetchedAuthUser.get();
+        Username authUser = Username.of(fetchedAuthUser.get());
 
         // The sender is the postmaster?
         if (Objects.equal(getMailetContext().getPostmaster(), reversePath)) {
@@ -586,8 +586,8 @@ public abstract class AbstractSign extends GenericMailet {
         } else {
             // is the reverse-path user different from the SMTP authorized user?
             Username username = getUsername(reversePath);
-            if (!username.equalsAsId(authUser)) {
-                LOGGER.info("SMTP logged in as <{}> but pretend to be sender <{}>", authUser, username);
+            if (!username.equals(authUser)) {
+                LOGGER.info("SMTP logged in as <{}> but pretend to be sender <{}>", authUser.asString(), username.asString());
                 return false;
             }
             // is there no "From:" address same as the reverse-path?
diff --git a/mpt/core/src/test/java/org/apache/james/mpt/TestScriptedUserAdder.java b/mpt/core/src/test/java/org/apache/james/mpt/TestScriptedUserAdder.java
index 75528fc..b490e3d 100644
--- a/mpt/core/src/test/java/org/apache/james/mpt/TestScriptedUserAdder.java
+++ b/mpt/core/src/test/java/org/apache/james/mpt/TestScriptedUserAdder.java
@@ -48,7 +48,7 @@ public class TestScriptedUserAdder {
     @Test
     public void testShouldExecuteScriptAgainstPort() throws Exception {
         ScriptedUserAdder adder = new ScriptedUserAdder("localhost", protocol.getPort(), "C: USER='${user}' password='${password}'");
-        adder.addUser(Username.of("A User"), "Some Password");
-        assertThat(record.complete()).isEqualTo("USER='A User' password='Some Password'\r\n");
+        adder.addUser(Username.of("user"), "Some Password");
+        assertThat(record.complete()).isEqualTo("USER='user' password='Some Password'\r\n");
     }
 }
diff --git a/server/data/data-api/src/main/java/org/apache/james/user/api/UsersRepository.java b/server/data/data-api/src/main/java/org/apache/james/user/api/UsersRepository.java
index a5ffdad..dae2654 100644
--- a/server/data/data-api/src/main/java/org/apache/james/user/api/UsersRepository.java
+++ b/server/data/data-api/src/main/java/org/apache/james/user/api/UsersRepository.java
@@ -136,9 +136,9 @@ public interface UsersRepository {
      */
     default Username getUser(MailAddress mailAddress) throws UsersRepositoryException {
         if (supportVirtualHosting()) {
-            return Username.of(mailAddress.asString()).toLowerCase();
+            return Username.of(mailAddress.asString());
         } else {
-            return Username.of(mailAddress.getLocalPart()).toLowerCase();
+            return Username.of(mailAddress.getLocalPart());
         }
     }
 
diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/user/cassandra/CassandraUsersRepository.java b/server/data/data-cassandra/src/main/java/org/apache/james/user/cassandra/CassandraUsersRepository.java
index 9f73dfa..fe17614 100644
--- a/server/data/data-cassandra/src/main/java/org/apache/james/user/cassandra/CassandraUsersRepository.java
+++ b/server/data/data-cassandra/src/main/java/org/apache/james/user/cassandra/CassandraUsersRepository.java
@@ -118,7 +118,7 @@ public class CassandraUsersRepository extends AbstractUsersRepository {
     public User getUserByName(Username name) {
         return executor.executeSingleRow(
                 getUserStatement.bind()
-                    .setString(NAME, name.asId()))
+                    .setString(NAME, name.asString()))
             .map(row -> new DefaultUser(Username.of(row.getString(NAME)), row.getString(PASSWORD), row.getString(ALGORITHM)))
             .blockOptional()
             .orElse(null);
@@ -133,7 +133,7 @@ public class CassandraUsersRepository extends AbstractUsersRepository {
                     .setString(REALNAME, defaultUser.getUserName().asString())
                     .setString(PASSWORD, defaultUser.getHashedPassword())
                     .setString(ALGORITHM, defaultUser.getHashAlgorithm())
-                    .setString(NAME, defaultUser.getUserName().asId()))
+                    .setString(NAME, defaultUser.getUserName().asString()))
             .block();
 
         if (!executed) {
@@ -145,7 +145,7 @@ public class CassandraUsersRepository extends AbstractUsersRepository {
     public void removeUser(Username name) throws UsersRepositoryException {
         boolean executed = executor.executeReturnApplied(
             removeUserStatement.bind()
-                .setString(NAME, name.asId()))
+                .setString(NAME, name.asString()))
             .block();
 
         if (!executed) {
@@ -196,7 +196,7 @@ public class CassandraUsersRepository extends AbstractUsersRepository {
         user.setPassword(password);
         boolean executed = executor.executeReturnApplied(
             insertStatement.bind()
-                .setString(NAME, user.getUserName().asId())
+                .setString(NAME, user.getUserName().asString())
                 .setString(REALNAME, user.getUserName().asString())
                 .setString(PASSWORD, user.getHashedPassword())
                 .setString(ALGORITHM, user.getHashAlgorithm()))
diff --git a/server/data/data-jmap-cassandra/src/test/resources/json/event.json b/server/data/data-jmap-cassandra/src/test/resources/json/event.json
index d86fdfe..3a8ffda 100644
--- a/server/data/data-jmap-cassandra/src/test/resources/json/event.json
+++ b/server/data/data-jmap-cassandra/src/test/resources/json/event.json
@@ -1,7 +1,7 @@
 {
   "type":"filtering-rule-set-defined",
   "eventId":0,
-  "aggregateId":"FilteringRule/Bart",
+  "aggregateId":"FilteringRule/bart",
   "rules":[
     {
       "id":"1",
diff --git a/server/data/data-jmap-cassandra/src/test/resources/json/eventComplex.json b/server/data/data-jmap-cassandra/src/test/resources/json/eventComplex.json
index 62b6ab0..7371858 100644
--- a/server/data/data-jmap-cassandra/src/test/resources/json/eventComplex.json
+++ b/server/data/data-jmap-cassandra/src/test/resources/json/eventComplex.json
@@ -1,7 +1,7 @@
 {
   "type":"filtering-rule-set-defined",
   "eventId":0,
-  "aggregateId":"FilteringRule/Bart",
+  "aggregateId":"FilteringRule/bart",
   "rules":[
     {
       "id":"id-from",
diff --git a/server/data/data-jmap-cassandra/src/test/resources/json/eventEmpty.json b/server/data/data-jmap-cassandra/src/test/resources/json/eventEmpty.json
index f7fbaee..a04ba44 100644
--- a/server/data/data-jmap-cassandra/src/test/resources/json/eventEmpty.json
+++ b/server/data/data-jmap-cassandra/src/test/resources/json/eventEmpty.json
@@ -1,6 +1,6 @@
 {
   "type":"filtering-rule-set-defined",
   "eventId":0,
-  "aggregateId":"FilteringRule/Bart",
+  "aggregateId":"FilteringRule/bart",
   "rules":[]
 }
\ No newline at end of file
diff --git a/server/data/data-jpa/src/main/java/org/apache/james/user/jpa/JPAUsersRepository.java b/server/data/data-jpa/src/main/java/org/apache/james/user/jpa/JPAUsersRepository.java
index 9eed717..7934b16 100644
--- a/server/data/data-jpa/src/main/java/org/apache/james/user/jpa/JPAUsersRepository.java
+++ b/server/data/data-jpa/src/main/java/org/apache/james/user/jpa/JPAUsersRepository.java
@@ -93,7 +93,7 @@ public class JPAUsersRepository extends AbstractUsersRepository {
         EntityManager entityManager = entityManagerFactory.createEntityManager();
 
         try {
-            return (JPAUser) entityManager.createNamedQuery("findUserByName").setParameter("name", name.asId()).getSingleResult();
+            return (JPAUser) entityManager.createNamedQuery("findUserByName").setParameter("name", name.asString()).getSingleResult();
         } catch (NoResultException e) {
             return null;
         } catch (PersistenceException e) {
@@ -146,7 +146,7 @@ public class JPAUsersRepository extends AbstractUsersRepository {
         final EntityTransaction transaction = entityManager.getTransaction();
         try {
             transaction.begin();
-            if (entityManager.createNamedQuery("deleteUserByName").setParameter("name", name.asId()).executeUpdate() < 1) {
+            if (entityManager.createNamedQuery("deleteUserByName").setParameter("name", name.asString()).executeUpdate() < 1) {
                 transaction.commit();
                 throw new UsersRepositoryException("User " + name.asString() + " does not exist");
             } else {
diff --git a/server/data/data-jpa/src/main/java/org/apache/james/user/jpa/model/JPAUser.java b/server/data/data-jpa/src/main/java/org/apache/james/user/jpa/model/JPAUser.java
index fc805c5..63215a0 100644
--- a/server/data/data-jpa/src/main/java/org/apache/james/user/jpa/model/JPAUser.java
+++ b/server/data/data-jpa/src/main/java/org/apache/james/user/jpa/model/JPAUser.java
@@ -42,7 +42,7 @@ import com.google.common.hash.Hashing;
 @Entity(name = "JamesUser")
 @Table(name = "JAMES_USER")
 @NamedQueries({ 
-    @NamedQuery(name = "findUserByName", query = "SELECT user FROM JamesUser user WHERE LOWER(user.name)=:name"),
+    @NamedQuery(name = "findUserByName", query = "SELECT user FROM JamesUser user WHERE user.name=:name"),
     @NamedQuery(name = "deleteUserByName", query = "DELETE FROM JamesUser user WHERE user.name=:name"),
     @NamedQuery(name = "containsUser", query = "SELECT COUNT(user) FROM JamesUser user WHERE user.name=:name"), 
     @NamedQuery(name = "countUsers", query = "SELECT COUNT(user) FROM JamesUser user"), 
diff --git a/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractUsersRepository.java b/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractUsersRepository.java
index 2d0cb7f..24558f2 100644
--- a/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractUsersRepository.java
+++ b/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractUsersRepository.java
@@ -128,10 +128,8 @@ public abstract class AbstractUsersRepository implements UsersRepository, Config
 
     @Override
     public boolean isAdministrator(Username username) throws UsersRepositoryException {
-        if (administratorId.isPresent()) {
-            return administratorId.get().toLowerCase().equals(username.toLowerCase());
-        }
-        return false;
+        return administratorId.map(id -> id.equals(username))
+            .orElse(false);
     }
 
     @Override
diff --git a/server/data/data-memory/src/main/java/org/apache/james/user/memory/MemoryUsersRepository.java b/server/data/data-memory/src/main/java/org/apache/james/user/memory/MemoryUsersRepository.java
index a658f3d..d7c7d53 100644
--- a/server/data/data-memory/src/main/java/org/apache/james/user/memory/MemoryUsersRepository.java
+++ b/server/data/data-memory/src/main/java/org/apache/james/user/memory/MemoryUsersRepository.java
@@ -72,14 +72,14 @@ public class MemoryUsersRepository extends AbstractUsersRepository {
 
     @Override
     protected void doAddUser(Username username, String password) {
-        DefaultUser user = new DefaultUser(username.toLowerCase(), algo);
+        DefaultUser user = new DefaultUser(username, algo);
         user.setPassword(password);
-        userByName.put(username.asId(), user);
+        userByName.put(username.asString(), user);
     }
 
     @Override
     public User getUserByName(Username name) throws UsersRepositoryException {
-        return userByName.get(name.asId());
+        return userByName.get(name.asString());
     }
 
     @Override
@@ -88,24 +88,24 @@ public class MemoryUsersRepository extends AbstractUsersRepository {
         if (existingUser == null) {
             throw new UsersRepositoryException("Please provide an existing user to update");
         }
-        userByName.put(user.getUserName().asId(), user);
+        userByName.put(user.getUserName().asString(), user);
     }
 
     @Override
     public void removeUser(Username name) throws UsersRepositoryException {
-        if (userByName.remove(name.asId()) == null) {
+        if (userByName.remove(name.asString()) == null) {
             throw new UsersRepositoryException("unable to remove unknown user " + name.asString());
         }
     }
 
     @Override
     public boolean contains(Username name) throws UsersRepositoryException {
-        return userByName.containsKey(name.asId());
+        return userByName.containsKey(name.asString());
     }
 
     @Override
     public boolean test(Username name, final String password) throws UsersRepositoryException {
-        return Optional.ofNullable(userByName.get(name.asId()))
+        return Optional.ofNullable(userByName.get(name.asString()))
             .map(user -> user.verifyPassword(password))
             .orElse(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 45f9f08..ce6391e 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.asId()), String.class)
+            .getValueAndCastFromMail(mail, AttributeName.of(DELIVERY_PATH_PREFIX + username.asString()), String.class)
             .orElse(folder);
     }
 
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetMailboxesMethodTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetMailboxesMethodTest.java
index c3f4d88..cc5b7e8 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetMailboxesMethodTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetMailboxesMethodTest.java
@@ -256,8 +256,8 @@ public abstract class GetMailboxesMethodTest {
     public void getMailboxesShouldReturnSharedWithProperty() throws Exception {
         String mailboxName = "myMailbox";
         String myMailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, ALICE.asString(), mailboxName).serialize();
-        String targetUser1 = "toUser1@" + DOMAIN;
-        String targetUser2 = "toUser2@" + DOMAIN;
+        String targetUser1 = "touser1@" + DOMAIN;
+        String targetUser2 = "touser2@" + DOMAIN;
 
         aclProbe.replaceRights(MailboxPath.forUser(ALICE, mailboxName), targetUser1, new Rfc4314Rights(Right.Lookup, Right.Administer));
         aclProbe.replaceRights(MailboxPath.forUser(ALICE, mailboxName), targetUser2, new Rfc4314Rights(Right.Read, Right.Lookup));
@@ -279,7 +279,7 @@ public abstract class GetMailboxesMethodTest {
     public void getMailboxesShouldRemoveOwnerRight() throws Exception {
         String mailboxName = "myMailbox";
         String myMailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, ALICE.asString(), mailboxName).serialize();
-        String targetUser1 = "toUser1@" + DOMAIN;
+        String targetUser1 = "touser1@" + DOMAIN;
 
         aclProbe.replaceRights(MailboxPath.forUser(ALICE, mailboxName), ALICE.asString(), new Rfc4314Rights(Right.Read, Right.Administer));
         aclProbe.replaceRights(MailboxPath.forUser(ALICE, mailboxName), targetUser1, new Rfc4314Rights(Right.Read, Right.Lookup));
@@ -317,7 +317,7 @@ public abstract class GetMailboxesMethodTest {
     public void nonHandledRightsShouldBeFilteredOut() throws Exception {
         String mailboxName = "myMailbox";
         String myMailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, ALICE.asString(), mailboxName).serialize();
-        String targetUser1 = "toUser1@" + DOMAIN;
+        String targetUser1 = "touser1@" + DOMAIN;
 
         aclProbe.replaceRights(MailboxPath.forUser(ALICE, mailboxName), targetUser1, new Rfc4314Rights(Right.Lookup, Right.Post));
 
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 74e1953..0faa527 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
@@ -75,6 +75,6 @@ public class SenderAuthIdentifyVerificationRcptHook extends AbstractSenderAuthId
 
     @Override
     protected boolean isSenderAllowed(Username user, Username sender) {
-        return user.equalsAsId(sender);
+        return user.equals(sender);
     }
 }


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