JAMES-2525 hardens swift value types against null and empty strings

Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/6b9e2e98
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/6b9e2e98
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/6b9e2e98

Branch: refs/heads/master
Commit: 6b9e2e9839fd4ceb6510652e4c2e80bcd0a79bcd
Parents: be1702d
Author: Jean Helou <j...@codamens.fr>
Authored: Wed Sep 5 09:25:58 2018 +0200
Committer: Benoit Tellier <btell...@linagora.com>
Committed: Fri Oct 5 18:11:43 2018 +0700

----------------------------------------------------------------------
 .../blob/objectstorage/swift/Credentials.java   |  5 +++
 .../blob/objectstorage/swift/DomainId.java      |  5 +++
 .../blob/objectstorage/swift/DomainName.java    |  5 +++
 .../blob/objectstorage/swift/HeaderName.java    |  5 +++
 .../blob/objectstorage/swift/Identity.java      |  7 ++++
 .../blob/objectstorage/swift/IdentityV3.java    |  7 ++++
 .../james/blob/objectstorage/swift/Project.java |  8 +++-
 .../blob/objectstorage/swift/ProjectName.java   |  5 +++
 .../james/blob/objectstorage/swift/Region.java  |  5 +++
 .../blob/objectstorage/swift/TenantName.java    |  5 +++
 .../blob/objectstorage/swift/UserName.java      |  5 +++
 .../objectstorage/swift/CredentialsTest.java    | 22 +++++++++++
 .../blob/objectstorage/swift/DomainIdTest.java  | 27 ++++++++++++--
 .../objectstorage/swift/DomainNameTest.java     | 22 +++++++++++
 .../objectstorage/swift/HeaderNameTest.java     | 39 +++++++++++++++++++-
 .../blob/objectstorage/swift/IdentityTest.java  | 16 +++++++-
 .../objectstorage/swift/IdentityV3Test.java     | 20 +++++++++-
 .../objectstorage/swift/ProjectNameTest.java    | 23 +++++++++++-
 .../blob/objectstorage/swift/ProjectTest.java   |  8 +++-
 .../blob/objectstorage/swift/RegionTest.java    | 22 +++++++++++
 .../objectstorage/swift/TenantNameTest.java     | 22 +++++++++++
 .../blob/objectstorage/swift/UserNameTest.java  | 21 +++++++++++
 22 files changed, 291 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/6b9e2e98/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/Credentials.java
----------------------------------------------------------------------
diff --git 
a/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/Credentials.java
 
b/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/Credentials.java
index 7d41396..46e4c84 100644
--- 
a/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/Credentials.java
+++ 
b/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/Credentials.java
@@ -21,6 +21,8 @@ package org.apache.james.blob.objectstorage.swift;
 
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
+import com.google.common.base.Preconditions;
+import com.google.common.base.Strings;
 
 public final class Credentials {
     public static Credentials of(String value) {
@@ -30,6 +32,9 @@ public final class Credentials {
     private final String credentials;
 
     private Credentials(String value) {
+        Preconditions.checkArgument(
+            !Strings.isNullOrEmpty(value),
+            this.getClass().getSimpleName() + " cannot be null or empty");
         this.credentials = value;
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/6b9e2e98/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/DomainId.java
----------------------------------------------------------------------
diff --git 
a/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/DomainId.java
 
b/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/DomainId.java
index fef7a7a..8809dd0 100644
--- 
a/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/DomainId.java
+++ 
b/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/DomainId.java
@@ -21,6 +21,8 @@ package org.apache.james.blob.objectstorage.swift;
 
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
+import com.google.common.base.Preconditions;
+import com.google.common.base.Strings;
 
 public final class DomainId {
     public static DomainId of(String value) {
@@ -30,6 +32,9 @@ public final class DomainId {
     private final String value;
 
     private DomainId(String value) {
+        Preconditions.checkArgument(
+            !Strings.isNullOrEmpty(value),
+            this.getClass().getSimpleName() + " cannot be null or empty");
         this.value = value;
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/6b9e2e98/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/DomainName.java
----------------------------------------------------------------------
diff --git 
a/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/DomainName.java
 
b/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/DomainName.java
index 6bd921e..89ae083 100644
--- 
a/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/DomainName.java
+++ 
b/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/DomainName.java
@@ -21,6 +21,8 @@ package org.apache.james.blob.objectstorage.swift;
 
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
+import com.google.common.base.Preconditions;
+import com.google.common.base.Strings;
 
 public final class DomainName {
     public static DomainName of(String value) {
@@ -30,6 +32,9 @@ public final class DomainName {
     private final String value;
 
     private DomainName(String value) {
+        Preconditions.checkArgument(
+            !Strings.isNullOrEmpty(value),
+            this.getClass().getSimpleName() + " cannot be null or empty");
         this.value = value;
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/6b9e2e98/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/HeaderName.java
----------------------------------------------------------------------
diff --git 
a/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/HeaderName.java
 
b/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/HeaderName.java
index 7b9fb16..e62e317 100644
--- 
a/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/HeaderName.java
+++ 
b/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/HeaderName.java
@@ -21,11 +21,16 @@ package org.apache.james.blob.objectstorage.swift;
 
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
+import com.google.common.base.Preconditions;
+import com.google.common.base.Strings;
 
 public class HeaderName {
     private final String value;
 
     protected HeaderName(String value) {
+        Preconditions.checkArgument(
+            !Strings.isNullOrEmpty(value),
+            this.getClass().getSimpleName() + " cannot be null or empty");
         this.value = value;
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/6b9e2e98/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/Identity.java
----------------------------------------------------------------------
diff --git 
a/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/Identity.java
 
b/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/Identity.java
index 1b72275..82d69b3 100644
--- 
a/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/Identity.java
+++ 
b/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/Identity.java
@@ -21,6 +21,7 @@ package org.apache.james.blob.objectstorage.swift;
 
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
+import com.google.common.base.Preconditions;
 
 public final class Identity {
     public static Identity of(TenantName tenant, UserName userName) {
@@ -31,6 +32,12 @@ public final class Identity {
     private final UserName userName;
 
     private Identity(TenantName tenant, UserName userName) {
+        Preconditions.checkArgument(
+            tenant != null,
+            "Tenant cannot be null");
+        Preconditions.checkArgument(
+            userName != null,
+            "User name cannot be null");
         this.tenant = tenant;
         this.userName = userName;
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/6b9e2e98/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/IdentityV3.java
----------------------------------------------------------------------
diff --git 
a/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/IdentityV3.java
 
b/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/IdentityV3.java
index b8b1d1c..f636d7c 100644
--- 
a/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/IdentityV3.java
+++ 
b/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/IdentityV3.java
@@ -21,6 +21,7 @@ package org.apache.james.blob.objectstorage.swift;
 
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
+import com.google.common.base.Preconditions;
 
 public final class IdentityV3 {
     public static IdentityV3 of(DomainName domainName, UserName userName) {
@@ -31,6 +32,12 @@ public final class IdentityV3 {
     private final UserName userName;
 
     private IdentityV3(DomainName domainName, UserName userName) {
+        Preconditions.checkArgument(
+            domainName != null,
+            "Domain name cannot be null");
+        Preconditions.checkArgument(
+            userName != null,
+            "User name cannot be null");
         this.domainName = domainName;
         this.userName = userName;
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/6b9e2e98/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/Project.java
----------------------------------------------------------------------
diff --git 
a/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/Project.java
 
b/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/Project.java
index 963ded4..394f763 100644
--- 
a/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/Project.java
+++ 
b/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/Project.java
@@ -23,6 +23,7 @@ import java.util.Optional;
 
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
+import com.google.common.base.Preconditions;
 
 public final class Project {
     public static Project of(ProjectName userName) {
@@ -30,11 +31,11 @@ public final class Project {
     }
 
     public static Project of(ProjectName userName, DomainName domainName) {
-        return new Project(userName, Optional.of(domainName), 
Optional.empty());
+        return new Project(userName, Optional.ofNullable(domainName), 
Optional.empty());
     }
 
     public static Project of(ProjectName userName, DomainId domainId) {
-        return new Project(userName, Optional.empty(), Optional.of(domainId));
+        return new Project(userName, Optional.empty(), 
Optional.ofNullable(domainId));
     }
 
     private final ProjectName name;
@@ -42,6 +43,9 @@ public final class Project {
     private final Optional<DomainId> domainId;
 
     private Project(ProjectName name, Optional<DomainName> domainName, 
Optional<DomainId> domainId) {
+        Preconditions.checkArgument(
+            name != null,
+        this.getClass().getSimpleName() + "name cannot be null or empty");
         this.domainName = domainName;
         this.name = name;
         this.domainId = domainId;

http://git-wip-us.apache.org/repos/asf/james-project/blob/6b9e2e98/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/ProjectName.java
----------------------------------------------------------------------
diff --git 
a/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/ProjectName.java
 
b/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/ProjectName.java
index 56969bb..e3eba57 100644
--- 
a/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/ProjectName.java
+++ 
b/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/ProjectName.java
@@ -21,6 +21,8 @@ package org.apache.james.blob.objectstorage.swift;
 
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
+import com.google.common.base.Preconditions;
+import com.google.common.base.Strings;
 
 public final class ProjectName {
     public static ProjectName of(String value) {
@@ -30,6 +32,9 @@ public final class ProjectName {
     private final String value;
 
     private ProjectName(String value) {
+        Preconditions.checkArgument(
+            !Strings.isNullOrEmpty(value),
+            this.getClass().getSimpleName() + " cannot be null or empty");
         this.value = value;
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/6b9e2e98/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/Region.java
----------------------------------------------------------------------
diff --git 
a/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/Region.java
 
b/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/Region.java
index 62fa01a..a17b999 100644
--- 
a/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/Region.java
+++ 
b/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/Region.java
@@ -21,6 +21,8 @@ package org.apache.james.blob.objectstorage.swift;
 
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
+import com.google.common.base.Preconditions;
+import com.google.common.base.Strings;
 
 public final class Region {
     public static Region of(String value) {
@@ -30,6 +32,9 @@ public final class Region {
     private final String region;
 
     private Region(String value) {
+        Preconditions.checkArgument(
+            !Strings.isNullOrEmpty(value),
+            this.getClass().getSimpleName() + " cannot be null or empty");
         this.region = value;
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/6b9e2e98/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/TenantName.java
----------------------------------------------------------------------
diff --git 
a/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/TenantName.java
 
b/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/TenantName.java
index d004c84..c59cf74 100644
--- 
a/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/TenantName.java
+++ 
b/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/TenantName.java
@@ -21,6 +21,8 @@ package org.apache.james.blob.objectstorage.swift;
 
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
+import com.google.common.base.Preconditions;
+import com.google.common.base.Strings;
 
 public final class TenantName {
     public static TenantName of(String value) {
@@ -30,6 +32,9 @@ public final class TenantName {
     private final String value;
 
     private TenantName(String value) {
+        Preconditions.checkArgument(
+            !Strings.isNullOrEmpty(value),
+            this.getClass().getSimpleName() + " cannot be null or empty");
         this.value = value;
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/6b9e2e98/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/UserName.java
----------------------------------------------------------------------
diff --git 
a/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/UserName.java
 
b/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/UserName.java
index 5c6f406..e4b310c 100644
--- 
a/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/UserName.java
+++ 
b/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/UserName.java
@@ -21,6 +21,8 @@ package org.apache.james.blob.objectstorage.swift;
 
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
+import com.google.common.base.Preconditions;
+import com.google.common.base.Strings;
 
 public final class UserName {
     public static UserName of(String value) {
@@ -30,6 +32,9 @@ public final class UserName {
     private final String value;
 
     private UserName(String value) {
+        Preconditions.checkArgument(
+            !Strings.isNullOrEmpty(value),
+            this.getClass().getSimpleName() + " cannot be null or empty");
         this.value = value;
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/6b9e2e98/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/CredentialsTest.java
----------------------------------------------------------------------
diff --git 
a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/CredentialsTest.java
 
b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/CredentialsTest.java
index e3d21f5..1875d1d 100644
--- 
a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/CredentialsTest.java
+++ 
b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/CredentialsTest.java
@@ -19,13 +19,35 @@
 
 package org.apache.james.blob.objectstorage.swift;
 
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+
 import org.junit.jupiter.api.Test;
 
 import nl.jqno.equalsverifier.EqualsVerifier;
 
 class CredentialsTest {
+
+    private static final String EXPECTED = "expected";
+
     @Test
     public void credentialsShouldRespectBeanContract() {
         EqualsVerifier.forClass(Credentials.class).verify();
     }
+
+    @Test
+    void credentialsCanBeBuiltFromNonEmptyString() {
+        Credentials actual = Credentials.of(EXPECTED);
+        assertThat(actual.value()).isEqualTo(EXPECTED);
+    }
+
+    @Test
+    void credentialsCanNotBeBuiltFromEmptyString() {
+        assertThatThrownBy(() -> 
Credentials.of("")).isInstanceOf(IllegalArgumentException.class);
+    }
+
+    @Test
+    void credentialsCanNotBeBuiltFromNull() {
+        assertThatThrownBy(() -> 
Credentials.of(null)).isInstanceOf(IllegalArgumentException.class);
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/james-project/blob/6b9e2e98/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/DomainIdTest.java
----------------------------------------------------------------------
diff --git 
a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/DomainIdTest.java
 
b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/DomainIdTest.java
index f95559a..88f4acb 100644
--- 
a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/DomainIdTest.java
+++ 
b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/DomainIdTest.java
@@ -20,6 +20,7 @@
 package org.apache.james.blob.objectstorage.swift;
 
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 import org.junit.jupiter.api.Test;
 
@@ -27,14 +28,32 @@ import nl.jqno.equalsverifier.EqualsVerifier;
 
 class DomainIdTest {
 
+    public static final String EXPECTED = "EXPECTED";
+
     @Test
-    public void domainIdShouldRespectBeanContract() {
+    void domainIdShouldRespectBeanContract() {
         EqualsVerifier.forClass(DomainId.class).verify();
     }
 
     @Test
-    public void domainIdShouldProjectToDomainIdString() {
-        String actual = DomainId.of("foo").asString();
-        assertThat(actual).isEqualTo("domain:foo");
+    void domainIdShouldProjectToDomainIdString() {
+        String actual = DomainId.of(EXPECTED).asString();
+        assertThat(actual).isEqualTo("domain:EXPECTED");
+    }
+
+    @Test
+    void domainIdCanBeBuiltFromNonEmptyString() {
+        DomainId actual = DomainId.of(EXPECTED);
+        assertThat(actual.value()).isEqualTo(EXPECTED);
+    }
+
+    @Test
+    void domainIdCanNotBeBuiltFromEmptyString() {
+        assertThatThrownBy(() -> 
DomainId.of("")).isInstanceOf(IllegalArgumentException.class);
+    }
+
+    @Test
+    void domainIdCanNotBeBuiltFromNull() {
+        assertThatThrownBy(() -> 
DomainId.of(null)).isInstanceOf(IllegalArgumentException.class);
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/james-project/blob/6b9e2e98/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/DomainNameTest.java
----------------------------------------------------------------------
diff --git 
a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/DomainNameTest.java
 
b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/DomainNameTest.java
index 4b108c9..eddbf7c 100644
--- 
a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/DomainNameTest.java
+++ 
b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/DomainNameTest.java
@@ -19,13 +19,35 @@
 
 package org.apache.james.blob.objectstorage.swift;
 
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+
 import org.junit.jupiter.api.Test;
 
 import nl.jqno.equalsverifier.EqualsVerifier;
 
 class DomainNameTest {
+
+    public static final String EXPECTED = "EXPECTED";
+
     @Test
     public void domainNameShouldRespectBeanContract() {
         EqualsVerifier.forClass(DomainName.class).verify();
     }
+
+    @Test
+    void domainNameCanBeBuiltFromNonEmptyString() {
+        DomainName actual = DomainName.of(EXPECTED);
+        assertThat(actual.value()).isEqualTo(EXPECTED);
+    }
+
+    @Test
+    void domainNameCanNotBeBuiltFromEmptyString() {
+        assertThatThrownBy(() -> 
DomainName.of("")).isInstanceOf(IllegalArgumentException.class);
+    }
+
+    @Test
+    void domainNameCanNotBeBuiltFromNull() {
+        assertThatThrownBy(() -> 
DomainName.of(null)).isInstanceOf(IllegalArgumentException.class);
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/james-project/blob/6b9e2e98/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/HeaderNameTest.java
----------------------------------------------------------------------
diff --git 
a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/HeaderNameTest.java
 
b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/HeaderNameTest.java
index b384f86..4cf4523 100644
--- 
a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/HeaderNameTest.java
+++ 
b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/HeaderNameTest.java
@@ -19,13 +19,50 @@
 
 package org.apache.james.blob.objectstorage.swift;
 
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+
 import org.junit.jupiter.api.Test;
 
 import nl.jqno.equalsverifier.EqualsVerifier;
 
 class HeaderNameTest {
+    private static final String EXPECTED = "expected";
+
     @Test
-    public void credentialsShouldRespectBeanContract() {
+    public void headerNameShouldRespectBeanContract() {
         EqualsVerifier.forClass(HeaderName.class).verify();
     }
+
+    @Test
+    void passHeaderNameCanBeBuiltFromNonEmptyString() {
+        PassHeaderName actual = PassHeaderName.of(EXPECTED);
+        assertThat(actual.value()).isEqualTo(EXPECTED);
+    }
+
+    @Test
+    void passHeaderNameCanNotBeBuiltFromEmptyString() {
+        assertThatThrownBy(() -> 
PassHeaderName.of("")).isInstanceOf(IllegalArgumentException.class);
+    }
+
+    @Test
+    void passHeaderNameCanNotBeBuiltFromNull() {
+        assertThatThrownBy(() -> 
PassHeaderName.of(null)).isInstanceOf(IllegalArgumentException.class);
+    }
+
+    @Test
+    void userHeaderNameCanBeBuiltFromNonEmptyString() {
+        UserHeaderName actual = UserHeaderName.of(EXPECTED);
+        assertThat(actual.value()).isEqualTo(EXPECTED);
+    }
+
+    @Test
+    void userHeaderNameCanNotBeBuiltFromEmptyString() {
+        assertThatThrownBy(() -> 
UserHeaderName.of("")).isInstanceOf(IllegalArgumentException.class);
+    }
+
+    @Test
+    void userHeaderNameCanNotBeBuiltFromNull() {
+        assertThatThrownBy(() -> 
UserHeaderName.of(null)).isInstanceOf(IllegalArgumentException.class);
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/james-project/blob/6b9e2e98/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/IdentityTest.java
----------------------------------------------------------------------
diff --git 
a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/IdentityTest.java
 
b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/IdentityTest.java
index bb7e47d..c0a7eb8 100644
--- 
a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/IdentityTest.java
+++ 
b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/IdentityTest.java
@@ -20,15 +20,19 @@
 package org.apache.james.blob.objectstorage.swift;
 
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 import org.junit.jupiter.api.Test;
 
 import nl.jqno.equalsverifier.EqualsVerifier;
 
 class IdentityTest {
+    public static final TenantName TENANT_NAME = TenantName.of("tenant");
+    public static final UserName USER_NAME = UserName.of("user");
+
     @Test
     void swiftIdentityRendersProperlyAsString() {
-        Identity identity = Identity.of(TenantName.of("tenant"), 
UserName.of("user"));
+        Identity identity = Identity.of(TENANT_NAME, USER_NAME);
         assertThat(identity.asString()).isEqualTo("tenant:user");
     }
 
@@ -36,4 +40,14 @@ class IdentityTest {
     public void credentialsShouldRespectBeanContract() {
         EqualsVerifier.forClass(Identity.class).verify();
     }
+
+    @Test
+    void userNameCanNotBeNull() {
+        assertThatThrownBy(() -> Identity.of(TENANT_NAME, 
null)).isInstanceOf(IllegalArgumentException.class);
+    }
+
+    @Test
+    void tenantNameCanNotBeNull() {
+        assertThatThrownBy(() -> Identity.of(null, 
USER_NAME)).isInstanceOf(IllegalArgumentException.class);
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/james-project/blob/6b9e2e98/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/IdentityV3Test.java
----------------------------------------------------------------------
diff --git 
a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/IdentityV3Test.java
 
b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/IdentityV3Test.java
index 39c3e27..5efb2c0 100644
--- 
a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/IdentityV3Test.java
+++ 
b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/IdentityV3Test.java
@@ -20,20 +20,36 @@
 package org.apache.james.blob.objectstorage.swift;
 
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 import org.junit.jupiter.api.Test;
 
 import nl.jqno.equalsverifier.EqualsVerifier;
 
 class IdentityV3Test {
+
+    public static final DomainName DOMAIN_NAME = DomainName.of("domain");
+    public static final UserName USER_NAME = UserName.of("user");
+
     @Test
     void identityV3RendersProperlyAsString() {
-        IdentityV3 identity = IdentityV3.of(DomainName.of("domain"), 
UserName.of("user"));
+        IdentityV3 identity = IdentityV3.of(DOMAIN_NAME, USER_NAME);
         assertThat(identity.asString()).isEqualTo("domain:user");
     }
 
     @Test
-    public void identityV3ShouldRespectBeanContract() {
+    void identityV3ShouldRespectBeanContract() {
         EqualsVerifier.forClass(IdentityV3.class).verify();
     }
+
+
+    @Test
+    void userNameCanNotBeNull() {
+        assertThatThrownBy(() -> IdentityV3.of(DOMAIN_NAME, 
null)).isInstanceOf(IllegalArgumentException.class);
+    }
+
+    @Test
+    void domainNameCanNotBeNull() {
+        assertThatThrownBy(() -> IdentityV3.of(null, 
USER_NAME)).isInstanceOf(IllegalArgumentException.class);
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/james-project/blob/6b9e2e98/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/ProjectNameTest.java
----------------------------------------------------------------------
diff --git 
a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/ProjectNameTest.java
 
b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/ProjectNameTest.java
index 080a08e..7dd2f5a 100644
--- 
a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/ProjectNameTest.java
+++ 
b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/ProjectNameTest.java
@@ -20,20 +20,39 @@
 package org.apache.james.blob.objectstorage.swift;
 
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 import org.junit.jupiter.api.Test;
 
 import nl.jqno.equalsverifier.EqualsVerifier;
 
 class ProjectNameTest {
+    private static final String EXPECTED = "expected";
+
     @Test
-    public void projectNameShouldRespectBeanContract() {
+    void projectNameShouldRespectBeanContract() {
         EqualsVerifier.forClass(ProjectName.class).verify();
     }
 
     @Test
-    public void projectNameShouldProjectToProjectNameString() {
+    void projectNameShouldProjectToProjectNameString() {
         String actual = ProjectName.of("bar").asString();
         assertThat(actual).isEqualTo("project:bar");
     }
+
+    @Test
+    void projectNameCanBeBuiltFromNonEmptyString() {
+        ProjectName actual = ProjectName.of(EXPECTED);
+        assertThat(actual.value()).isEqualTo(EXPECTED);
+    }
+
+    @Test
+    void projectNameCanNotBeBuiltFromEmptyString() {
+        assertThatThrownBy(() -> 
ProjectName.of("")).isInstanceOf(IllegalArgumentException.class);
+    }
+
+    @Test
+    void projectNameCanNotBeBuiltFromNull() {
+        assertThatThrownBy(() -> 
ProjectName.of(null)).isInstanceOf(IllegalArgumentException.class);
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/james-project/blob/6b9e2e98/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/ProjectTest.java
----------------------------------------------------------------------
diff --git 
a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/ProjectTest.java
 
b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/ProjectTest.java
index 9956d11..f3a8f51 100644
--- 
a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/ProjectTest.java
+++ 
b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/ProjectTest.java
@@ -20,6 +20,7 @@
 package org.apache.james.blob.objectstorage.swift;
 
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 import org.junit.jupiter.api.Test;
 
@@ -37,7 +38,7 @@ class ProjectTest {
     }
 
     @Test
-    void projectCanBeBuiltFromNameAlone() {
+    void projectCanBeBuiltFromNameAlone()   {
         Project project = Project.of(PROJECT_NAME);
         assertThat(project.domainName()).isEmpty();
         assertThat(project.domainId()).isEmpty();
@@ -60,4 +61,9 @@ class ProjectTest {
         assertThat(project.domainId()).contains(DOMAIN_ID);
         assertThat(project.name()).isEqualTo(PROJECT_NAME);
     }
+
+    @Test
+    void projectCannotBeBuiltFromNullName() {
+        assertThatThrownBy(() -> 
Project.of(null)).isInstanceOf(IllegalArgumentException.class);
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/james-project/blob/6b9e2e98/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/RegionTest.java
----------------------------------------------------------------------
diff --git 
a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/RegionTest.java
 
b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/RegionTest.java
index 509e366..7ee67d9 100644
--- 
a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/RegionTest.java
+++ 
b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/RegionTest.java
@@ -19,13 +19,35 @@
 
 package org.apache.james.blob.objectstorage.swift;
 
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+
 import org.junit.jupiter.api.Test;
 
 import nl.jqno.equalsverifier.EqualsVerifier;
 
 class RegionTest {
+
+    public static final String EXPECTED = "EXPECTED";
+
     @Test
     public void regionShouldRespectBeanContract() {
         EqualsVerifier.forClass(Region.class).verify();
     }
+
+    @Test
+    void regionCanBeBuiltFromNonEmptyString() {
+        Region actual = Region.of(EXPECTED);
+        assertThat(actual.value()).isEqualTo(EXPECTED);
+    }
+
+    @Test
+    void regionCanNotBeBuiltFromEmptyString() {
+        assertThatThrownBy(() -> 
Region.of("")).isInstanceOf(IllegalArgumentException.class);
+    }
+
+    @Test
+    void regionCanNotBeBuiltFromNull() {
+        assertThatThrownBy(() -> 
Region.of(null)).isInstanceOf(IllegalArgumentException.class);
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/james-project/blob/6b9e2e98/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/TenantNameTest.java
----------------------------------------------------------------------
diff --git 
a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/TenantNameTest.java
 
b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/TenantNameTest.java
index 65917ab..107fb78 100644
--- 
a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/TenantNameTest.java
+++ 
b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/TenantNameTest.java
@@ -19,13 +19,35 @@
 
 package org.apache.james.blob.objectstorage.swift;
 
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+
 import org.junit.jupiter.api.Test;
 
 import nl.jqno.equalsverifier.EqualsVerifier;
 
 class TenantNameTest {
+
+    public static final String EXPECTED = "EXPECTED";
+
     @Test
     public void tenantNameShouldRespectBeanContract() {
         EqualsVerifier.forClass(TenantName.class).verify();
     }
+
+    @Test
+    void tenantNameCanBeBuiltFromNonEmptyString() {
+        TenantName actual = TenantName.of(EXPECTED);
+        assertThat(actual.value()).isEqualTo(EXPECTED);
+    }
+
+    @Test
+    void tenantNameCanNotBeBuiltFromEmptyString() {
+        assertThatThrownBy(() -> 
TenantName.of("")).isInstanceOf(IllegalArgumentException.class);
+    }
+
+    @Test
+    void tenantNameCanNotBeBuiltFromNull() {
+        assertThatThrownBy(() -> 
TenantName.of(null)).isInstanceOf(IllegalArgumentException.class);
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/james-project/blob/6b9e2e98/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/UserNameTest.java
----------------------------------------------------------------------
diff --git 
a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/UserNameTest.java
 
b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/UserNameTest.java
index c793ed9..a8f61a2 100644
--- 
a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/UserNameTest.java
+++ 
b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/swift/UserNameTest.java
@@ -19,13 +19,34 @@
 
 package org.apache.james.blob.objectstorage.swift;
 
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+
 import org.junit.jupiter.api.Test;
 
 import nl.jqno.equalsverifier.EqualsVerifier;
 
 class UserNameTest {
+    private static final String EXPECTED = "expected";
+
     @Test
     public void userNameShouldRespectBeanContract() {
         EqualsVerifier.forClass(UserName.class).verify();
     }
+
+    @Test
+    void userNameCanBeBuiltFromNonEmptyString() {
+        UserName actual = UserName.of(EXPECTED);
+        assertThat(actual.value()).isEqualTo(EXPECTED);
+    }
+
+    @Test
+    void userNameCanNotBeBuiltFromEmptyString() {
+        assertThatThrownBy(() -> 
UserName.of("")).isInstanceOf(IllegalArgumentException.class);
+    }
+
+    @Test
+    void userNameCanNotBeBuiltFromNull() {
+        assertThatThrownBy(() -> 
UserName.of(null)).isInstanceOf(IllegalArgumentException.class);
+    }
 }
\ No newline at end of file


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

Reply via email to