From 70fe6eb1303954a91026f62ace8c301a1d71ab6d Mon Sep 17 00:00:00 2001 From: Kuamr Shubham Date: Tue, 10 Mar 2020 16:18:44 +0530 Subject: [PATCH] Shubham, Ankit | Add. Properties of manifest to be mandatory --- .../api/Manifest/schema/manifest.json | 3 +- .../api/Manifest/SchemaTest.java | 18 ++++++ .../schema/TestData/invalidManifestData.json | 61 +++++++++++++++++++ .../TestData/manifestDataWithMissingTeam.json | 59 ++++++++++++++++++ 4 files changed, 140 insertions(+), 1 deletion(-) create mode 100644 src/test/java/com/DeploymentPortal/api/Manifest/schema/TestData/invalidManifestData.json create mode 100644 src/test/java/com/DeploymentPortal/api/Manifest/schema/TestData/manifestDataWithMissingTeam.json diff --git a/src/main/java/com/DeploymentPortal/api/Manifest/schema/manifest.json b/src/main/java/com/DeploymentPortal/api/Manifest/schema/manifest.json index 50a1c80e..25856751 100644 --- a/src/main/java/com/DeploymentPortal/api/Manifest/schema/manifest.json +++ b/src/main/java/com/DeploymentPortal/api/Manifest/schema/manifest.json @@ -17,5 +17,6 @@ "labels": { "$ref": "file:/Users/kumarshubham/Downloads/Deployment-Portal/src/main/java/com/DeploymentPortal/api/Manifest/schema/labels.json" } - } + }, + "required": ["version","team"] } \ No newline at end of file diff --git a/src/test/java/com/DeploymentPortal/api/Manifest/SchemaTest.java b/src/test/java/com/DeploymentPortal/api/Manifest/SchemaTest.java index 32b08cc9..585ffa32 100644 --- a/src/test/java/com/DeploymentPortal/api/Manifest/SchemaTest.java +++ b/src/test/java/com/DeploymentPortal/api/Manifest/SchemaTest.java @@ -164,4 +164,22 @@ public class SchemaTest { assertTrue(validationUtils.isJsonValid(schemaFile, jsonFile)); } + + @Test + void expectFalseWhenVersionFromDeploymentManifestIsMissing() throws IOException, ProcessingException { + File schemaFile = new File(schemaPath + "manifest.json"); + File jsonFile = new File(testData + "invalidManifestData.json"); + ValidationUtils validationUtils = new ValidationUtils(); + + assertFalse(validationUtils.isJsonValid(schemaFile, jsonFile)); + } + + @Test + void expectFalseWhenFewPropertiesFromDeploymentManifestAreMissing() throws IOException, ProcessingException { + File schemaFile = new File(schemaPath + "manifest.json"); + File jsonFile = new File(testData + "manifestDataWithMissingTeam.json"); + ValidationUtils validationUtils = new ValidationUtils(); + + assertFalse(validationUtils.isJsonValid(schemaFile, jsonFile)); + } } diff --git a/src/test/java/com/DeploymentPortal/api/Manifest/schema/TestData/invalidManifestData.json b/src/test/java/com/DeploymentPortal/api/Manifest/schema/TestData/invalidManifestData.json new file mode 100644 index 00000000..b5cf6096 --- /dev/null +++ b/src/test/java/com/DeploymentPortal/api/Manifest/schema/TestData/invalidManifestData.json @@ -0,0 +1,61 @@ +{ + "deployment": { + "cluster": "nonprod.np.navi-tech.in", + "name": "spring-boot-demo", + "timeout": 600, + "instance": { + "count": 1, + "cpu": 0.25, + "memory": "300Mi" + }, + "environmentVariables": [ + { + "name": "DATASOURCE_URL", + "value": 2456 + } + ], + "loadBalancer": [ + { + "type": "elb", + "accessPolicies": ["internetFacing", "internal"], + "endpoint": "dev-spring-boot-demo-service.np.navi-tech.in" + } + ], + "exposedPorts": [ + { + "name": "metrics", + "port": 4001 + }, + { + "name": "serviceport", + "port": 8080 + } + ], + "namespace": "dev", + "healthChecks": { + "livenessCheck": { + "type": "tcp", + "port": "metrics", + "successThreshold": 1, + "initialDelaySeconds": 120, + "periodSeconds": 15, + "failureThreshold": 5 + }, + "readinessCheck": { + "type": "http", + "port": "metrics", + "path": "/actuator/health", + "successThreshold": 1, + "initialDelaySeconds": 120, + "periodSeconds": 15, + "failureThreshold": 5 + } + } + }, + "team": { + "name": "Accounting" + }, + "labels": { + "micrometer-prometheus": "enabled" + } +} \ No newline at end of file diff --git a/src/test/java/com/DeploymentPortal/api/Manifest/schema/TestData/manifestDataWithMissingTeam.json b/src/test/java/com/DeploymentPortal/api/Manifest/schema/TestData/manifestDataWithMissingTeam.json new file mode 100644 index 00000000..a1b7272a --- /dev/null +++ b/src/test/java/com/DeploymentPortal/api/Manifest/schema/TestData/manifestDataWithMissingTeam.json @@ -0,0 +1,59 @@ +{ + "version": "v1", + "deployment": { + "cluster": "nonprod.np.navi-tech.in", + "name": "spring-boot-demo", + "timeout": 600, + "instance": { + "count": 1, + "cpu": 0.25, + "memory": "300Mi" + }, + "environmentVariables": [ + { + "name": "DATASOURCE_URL", + "value": 2456 + } + ], + "loadBalancer": [ + { + "type": "elb", + "accessPolicies": ["internetFacing", "internal"], + "endpoint": "dev-spring-boot-demo-service.np.navi-tech.in" + } + ], + "exposedPorts": [ + { + "name": "metrics", + "port": 4001 + }, + { + "name": "serviceport", + "port": 8080 + } + ], + "namespace": "dev", + "healthChecks": { + "livenessCheck": { + "type": "tcp", + "port": "metrics", + "successThreshold": 1, + "initialDelaySeconds": 120, + "periodSeconds": 15, + "failureThreshold": 5 + }, + "readinessCheck": { + "type": "http", + "port": "metrics", + "path": "/actuator/health", + "successThreshold": 1, + "initialDelaySeconds": 120, + "periodSeconds": 15, + "failureThreshold": 5 + } + } + }, + "labels": { + "micrometer-prometheus": "enabled" + } +} \ No newline at end of file