Validating ApplicationName parameters. Added unit tests for parameter validation.
diff --git a/api/build.gradle b/api/build.gradle
index 681d0c7..8409313 100644
--- a/api/build.gradle
+++ b/api/build.gradle
@@ -20,6 +20,10 @@
[group: 'io.mifos.core', name: 'api', version: versions.frameworkapi],
[group: 'org.hibernate', name: 'hibernate-validator', version: versions.validator]
)
+
+ testCompile(
+ [group: 'io.mifos.core', name: 'test', version: versions.frameworktest],
+ )
}
publishing {
diff --git a/api/src/main/java/io/mifos/provisioner/api/v1/domain/Application.java b/api/src/main/java/io/mifos/provisioner/api/v1/domain/Application.java
index 4c9bfdb..b3c3ecd 100644
--- a/api/src/main/java/io/mifos/provisioner/api/v1/domain/Application.java
+++ b/api/src/main/java/io/mifos/provisioner/api/v1/domain/Application.java
@@ -15,15 +15,12 @@
*/
package io.mifos.provisioner.api.v1.domain;
-import io.mifos.core.lang.validation.constraints.ValidIdentifier;
+import io.mifos.core.lang.validation.constraints.ValidApplicationName;
-import javax.validation.constraints.NotNull;
-
-@SuppressWarnings("unused")
+@SuppressWarnings({"unused", "WeakerAccess"})
public class Application {
- @NotNull
- @ValidIdentifier //name should be URL-safe.
+ @ValidApplicationName
private String name;
private String description;
private String vendor;
diff --git a/api/src/main/java/io/mifos/provisioner/api/v1/domain/AssignedApplication.java b/api/src/main/java/io/mifos/provisioner/api/v1/domain/AssignedApplication.java
index 76e1898..afba3e9 100644
--- a/api/src/main/java/io/mifos/provisioner/api/v1/domain/AssignedApplication.java
+++ b/api/src/main/java/io/mifos/provisioner/api/v1/domain/AssignedApplication.java
@@ -15,15 +15,12 @@
*/
package io.mifos.provisioner.api.v1.domain;
-import io.mifos.core.lang.validation.constraints.ValidIdentifier;
+import io.mifos.core.lang.validation.constraints.ValidApplicationName;
-import javax.validation.constraints.NotNull;
-
-@SuppressWarnings("unused")
+@SuppressWarnings({"unused", "WeakerAccess"})
public class AssignedApplication {
- @NotNull
- @ValidIdentifier
+ @ValidApplicationName
private String name;
public AssignedApplication() {
diff --git a/api/src/test/java/io/mifos/provisioner/api/v1/domain/ApplicationTest.java b/api/src/test/java/io/mifos/provisioner/api/v1/domain/ApplicationTest.java
new file mode 100644
index 0000000..96f426c
--- /dev/null
+++ b/api/src/test/java/io/mifos/provisioner/api/v1/domain/ApplicationTest.java
@@ -0,0 +1,44 @@
+package io.mifos.provisioner.api.v1.domain;
+
+import io.mifos.core.test.domain.ValidationTest;
+import io.mifos.core.test.domain.ValidationTestCase;
+import org.junit.runners.Parameterized;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+/**
+ * @author Myrle Krantz
+ */
+public class ApplicationTest extends ValidationTest<Application> {
+
+ public ApplicationTest(ValidationTestCase<Application> testCase) {
+ super(testCase);
+ }
+
+ @Override
+ protected Application createValidTestSubject() {
+ final Application ret = new Application();
+ ret.setName("bebop-v3");
+ ret.setHomepage("http://xyz.bebop:2021/v1");
+ ret.setDescription("bebop manager");
+ ret.setVendor("fineract");
+ return ret;
+ }
+
+ @Parameterized.Parameters
+ public static Collection testCases() {
+ final Collection<ValidationTestCase> ret = new ArrayList<>();
+ ret.add(new ValidationTestCase<Application>("basicCase")
+ .adjustment(x -> {})
+ .valid(true));
+ ret.add(new ValidationTestCase<Application>("invalidApplicationName")
+ .adjustment(x -> x.setName("bebop-dowop"))
+ .valid(false));
+ ret.add(new ValidationTestCase<Application>("nullApplicationName")
+ .adjustment(x -> x.setName(null))
+ .valid(false));
+ return ret;
+ }
+
+}
\ No newline at end of file
diff --git a/api/src/test/java/io/mifos/provisioner/api/v1/domain/AssignedApplicationTest.java b/api/src/test/java/io/mifos/provisioner/api/v1/domain/AssignedApplicationTest.java
new file mode 100644
index 0000000..19f4f9f
--- /dev/null
+++ b/api/src/test/java/io/mifos/provisioner/api/v1/domain/AssignedApplicationTest.java
@@ -0,0 +1,41 @@
+package io.mifos.provisioner.api.v1.domain;
+
+import io.mifos.core.test.domain.ValidationTest;
+import io.mifos.core.test.domain.ValidationTestCase;
+import org.junit.runners.Parameterized;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+/**
+ * @author Myrle Krantz
+ */
+public class AssignedApplicationTest extends ValidationTest<AssignedApplication> {
+
+ public AssignedApplicationTest(ValidationTestCase<AssignedApplication> testCase) {
+ super(testCase);
+ }
+
+ @Override
+ protected AssignedApplication createValidTestSubject() {
+ final AssignedApplication ret = new AssignedApplication();
+ ret.setName("bebop-v3");
+ return ret;
+ }
+
+ @Parameterized.Parameters
+ public static Collection testCases() {
+ final Collection<ValidationTestCase> ret = new ArrayList<>();
+ ret.add(new ValidationTestCase<AssignedApplication>("basicCase")
+ .adjustment(x -> {})
+ .valid(true));
+ ret.add(new ValidationTestCase<AssignedApplication>("invalidApplicationName")
+ .adjustment(x -> x.setName("bebop-dowop"))
+ .valid(false));
+ ret.add(new ValidationTestCase<AssignedApplication>("nullApplicationName")
+ .adjustment(x -> x.setName(null))
+ .valid(false));
+ return ret;
+ }
+
+}
\ No newline at end of file
diff --git a/shared.gradle b/shared.gradle
index 4535a5d..8a2c8dc 100644
--- a/shared.gradle
+++ b/shared.gradle
@@ -10,6 +10,7 @@
frameworkcassandra : '0.1.0-BUILD-SNAPSHOT',
frameworkmariadb : '0.1.0-BUILD-SNAPSHOT',
frameworkcrypto : '0.1.0-BUILD-SNAPSHOT',
+ frameworktest : '0.1.0-BUILD-SNAPSHOT',
validator : '5.3.0.Final'
]