You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2021/02/09 04:29:44 UTC

[james-project] 16/33: JAMES-3491 AccountId RegistrationKey

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 4def5f5ce41e4e9589a4e4e1b118923defaa7410
Author: Lan Khuat <kh...@gmail.com>
AuthorDate: Wed Feb 3 21:41:09 2021 +0700

    JAMES-3491 AccountId RegistrationKey
---
 .../jmap/change/AccountIdRegistrationKey.scala     | 33 ++++++++++++++
 .../jmap/change/AccountIdRegistrationKeyTest.scala | 52 ++++++++++++++++++++++
 2 files changed, 85 insertions(+)

diff --git a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/change/AccountIdRegistrationKey.scala b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/change/AccountIdRegistrationKey.scala
new file mode 100644
index 0000000..b2b969b
--- /dev/null
+++ b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/change/AccountIdRegistrationKey.scala
@@ -0,0 +1,33 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *  http://www.apache.org/licenses/LICENSE-2.0                  *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.jmap.change
+
+import org.apache.james.events.RegistrationKey
+import org.apache.james.jmap.api.model.AccountId
+
+case class Factory() extends RegistrationKey.Factory {
+  override val forClass: Class[_ <: RegistrationKey] = classOf[AccountIdRegistrationKey]
+
+  override def fromString(asString: String): RegistrationKey = AccountIdRegistrationKey(AccountId.fromString(asString))
+}
+
+case class AccountIdRegistrationKey(accountId: AccountId) extends RegistrationKey {
+  override def asString(): String = accountId.getIdentifier
+}
diff --git a/server/protocols/jmap-rfc-8621/src/test/scala/org/apache/james/jmap/change/AccountIdRegistrationKeyTest.scala b/server/protocols/jmap-rfc-8621/src/test/scala/org/apache/james/jmap/change/AccountIdRegistrationKeyTest.scala
new file mode 100644
index 0000000..adfb816
--- /dev/null
+++ b/server/protocols/jmap-rfc-8621/src/test/scala/org/apache/james/jmap/change/AccountIdRegistrationKeyTest.scala
@@ -0,0 +1,52 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *  http://www.apache.org/licenses/LICENSE-2.0                  *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.jmap.change
+
+import org.apache.james.jmap.api.model.AccountId
+import org.assertj.core.api.Assertions.{assertThat, assertThatThrownBy}
+import org.junit.jupiter.api.Test
+
+class AccountIdRegistrationKeyTest {
+  private val ID: String = "29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6"
+
+  private val FACTORY: Factory = Factory()
+
+  private val ACCOUNT_ID_REGISTRATION_KEY: AccountIdRegistrationKey = AccountIdRegistrationKey(AccountId.fromString(ID))
+
+  @Test
+  def asStringShouldReturnSerializedAccountId(): Unit = {
+    assertThat(ACCOUNT_ID_REGISTRATION_KEY.asString()).isEqualTo(ID)
+  }
+
+  @Test
+  def fromStringShouldReturnCorrespondingRegistrationKey(): Unit = {
+    assertThat(FACTORY.fromString(ID)).isEqualTo(ACCOUNT_ID_REGISTRATION_KEY)
+  }
+
+  @Test
+  def fromStringShouldThrowOnNullValues(): Unit = {
+    assertThatThrownBy(() => FACTORY.fromString(null)).isInstanceOf(classOf[IllegalArgumentException])
+  }
+
+  @Test
+  def fromStringShouldThrowOnEmptyValues(): Unit = {
+    assertThatThrownBy(() => FACTORY.fromString("")).isInstanceOf(classOf[IllegalArgumentException])
+  }
+}


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