diff options
Diffstat (limited to 'src/test/java/org')
7 files changed, 365 insertions, 80 deletions
diff --git a/src/test/java/org/onap/crud/parser/util/EdgePayloadUtilTest.java b/src/test/java/org/onap/crud/parser/util/EdgePayloadUtilTest.java new file mode 100644 index 0000000..f5baae8 --- /dev/null +++ b/src/test/java/org/onap/crud/parser/util/EdgePayloadUtilTest.java @@ -0,0 +1,110 @@ +/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017-2018 Amdocs
+ * ================================================================================
+ * Licensed 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.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.crud.parser.util;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.junit.Assert;
+import org.junit.Test;
+import org.onap.crud.entity.Edge;
+import org.onap.crud.entity.Vertex;
+import org.onap.crud.exception.CrudException;
+
+public class EdgePayloadUtilTest {
+
+ @Test
+ public void testGetVertexNodeType() throws CrudException {
+ Assert.assertEquals("vserver", EdgePayloadUtil
+ .getVertexNodeType("services/inventory/v12/vserver/50bdab41-ad1c-4d00-952c-a0aa5d827811"));
+ }
+
+ @Test
+ public void testGetVertexNodeId() throws CrudException {
+ Assert.assertEquals("50bdab41-ad1c-4d00-952c-a0aa5d827811",
+ EdgePayloadUtil.getVertexNodeId("services/inventory/v12/vserver/50bdab41-ad1c-4d00-952c-a0aa5d827811"));
+ }
+
+ @Test
+ public void testGenerateEdgeKey() throws CrudException {
+ Assert.assertEquals("vserver:pserver:tosca.relationships.HostedOn",
+ EdgePayloadUtil.generateEdgeKey("services/inventory/v12/vserver/50bdab41-ad1c-4d00-952c-a0aa5d827811",
+ "services/inventory/v12/pserver/1d326bc7-b985-492b-9604-0d5d1f06f908",
+ "tosca.relationships.HostedOn"));
+ }
+
+ @Test
+ public void testKeyGenerationEnforcesSourceAndTargetOrder() throws Exception {
+ String generateEdgeKey1 = EdgePayloadUtil.generateEdgeKey(
+ "services/inventory/v12/vserver/50bdab41-ad1c-4d00-952c-a0aa5d827811",
+ "services/inventory/v12/pserver/1d326bc7-b985-492b-9604-0d5d1f06f908", "tosca.relationships.HostedOn");
+
+ String generateEdgeKey2 = EdgePayloadUtil.generateEdgeKey(
+ "services/inventory/v12/pserver/1d326bc7-b985-492b-9604-0d5d1f06f908",
+ "services/inventory/v12/vserver/50bdab41-ad1c-4d00-952c-a0aa5d827811", "tosca.relationships.HostedOn");
+
+ Assert.assertNotEquals(generateEdgeKey1, generateEdgeKey2);
+ }
+
+
+ @Test
+ public void testGetBuilderFromEdgePayload() throws CrudException {
+ Edge.Builder builder = EdgePayloadUtil.getBuilderFromEdgePayload(
+ "services/inventory/v12/vserver/50bdab41-ad1c-4d00-952c-a0aa5d827811",
+ "services/inventory/v12/pserver/1d326bc7-b985-492b-9604-0d5d1f06f908", "tosca.relationships.HostedOn");
+
+ Edge edge = builder.build();
+ Assert.assertEquals("tosca.relationships.HostedOn", edge.getType());
+ Assert.assertEquals("vserver", edge.getSource().getType());
+ Assert.assertEquals("50bdab41-ad1c-4d00-952c-a0aa5d827811", edge.getSource().getId().get());
+ Assert.assertEquals("pserver", edge.getTarget().getType());
+ Assert.assertEquals("1d326bc7-b985-492b-9604-0d5d1f06f908", edge.getTarget().getId().get());
+ }
+
+ @Test
+ public void tesGetBuilderFromEdge() throws CrudException {
+ Edge edge = createEdge("vserver", "pserver");
+
+ Assert.assertNotNull(edge);
+ Assert.assertNotNull(EdgePayloadUtil.getBuilderFromEdge(edge));
+ }
+
+ @Test
+ public void testFilterEdgesByRelatedVertexAndType() throws CrudException {
+ List<Edge> edges = new ArrayList<>();
+ edges.add(createEdge("vserver", "pserver"));
+ edges.add(createEdge("vce", "pserver"));
+ edges.add(createEdge("snapshot", "pserver"));
+ edges.add(createEdge("vserver", "pserver"));
+
+ List<Edge> filteredEdges =
+ EdgePayloadUtil.filterEdgesByRelatedVertexAndType("vserver", "tosca.relationships.HostedOn", edges);
+
+ Assert.assertNotNull(filteredEdges);
+ Assert.assertEquals(2, filteredEdges.size());
+ }
+
+ private Edge createEdge(String sourceVertexType, String targetVertexType) {
+ return new Edge.Builder("tosca.relationships.HostedOn").id("test")
+ .source(new Vertex.Builder(sourceVertexType).id("50bdab41-ad1c-4d00-952c-a0aa5d827811").build())
+ .target(new Vertex.Builder(targetVertexType).id("1d326bc7-b985-492b-9604-0d5d1f06f908").build())
+ .build();
+ }
+}
diff --git a/src/test/java/org/onap/crud/service/AaiResourceServiceTest.java b/src/test/java/org/onap/crud/service/AaiResourceServiceTest.java index 5eb8a68..c23f3ac 100644 --- a/src/test/java/org/onap/crud/service/AaiResourceServiceTest.java +++ b/src/test/java/org/onap/crud/service/AaiResourceServiceTest.java @@ -33,8 +33,7 @@ import org.onap.aai.serialization.db.EdgeRule; import org.onap.aai.serialization.db.EdgeRules;
import org.onap.aai.serialization.db.EdgeType;
import org.onap.crud.exception.CrudException;
-import org.onap.crud.service.EdgePayload;
-
+import org.onap.crud.parser.EdgePayload;
import com.google.gson.JsonElement;
public class AaiResourceServiceTest {
diff --git a/src/test/java/org/onap/crud/service/BulkPayloadTest.java b/src/test/java/org/onap/crud/service/BulkPayloadTest.java index 89c2269..c768339 100644 --- a/src/test/java/org/onap/crud/service/BulkPayloadTest.java +++ b/src/test/java/org/onap/crud/service/BulkPayloadTest.java @@ -25,7 +25,7 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import org.junit.Test; - +import org.onap.crud.parser.BulkPayload; import java.util.ArrayList; import java.util.List; import java.util.Map; diff --git a/src/test/java/org/onap/crud/service/CrudRestServiceTest.java b/src/test/java/org/onap/crud/service/CrudRestServiceTest.java index 68c876c..ddf3847 100644 --- a/src/test/java/org/onap/crud/service/CrudRestServiceTest.java +++ b/src/test/java/org/onap/crud/service/CrudRestServiceTest.java @@ -36,7 +36,6 @@ import org.junit.Test; import org.junit.rules.ExpectedException; import org.mockito.Mockito; import org.onap.crud.exception.CrudException; -import org.onap.crud.service.TestDao; import org.onap.crud.service.util.TestHeaders; import org.onap.crud.service.util.TestRequest; import org.onap.crud.service.util.TestUriInfo; @@ -50,36 +49,36 @@ public class CrudRestServiceTest { "\"properties\": {" + "\"fqdn\": \"myhost.onap.com\"," + "\"hostname\": \"myhost\" } }"; - + private final String postVertexPayload = "{" + "\"type\": \"pserver\"," + "\"properties\": {" + "\"fqdn\": \"myhost.onap.com\"," + "\"hostname\": \"myhost\" } }"; - + private final String postMissingPropVertexPayload = "{" + "\"type\": \"pserver\"," + "\"properties\": {" + "\"fqdn\": \"myhost.onap.com\"," + "\"equip-type\": \"box\" } }"; - + private final String postEdgePayload = "{" + "\"type\": \"tosca.relationships.HostedOn\"," + - "\"source\": \"services/inventory/v12/vserver/50bdab41-ad1c-4d00-952c-a0aa5d827811\"," + - "\"target\": \"services/inventory/v12/pserver/1d326bc7-b985-492b-9604-0d5d1f06f908\"," + + "\"source\": \"services/inventory/v11/vserver/50bdab41-ad1c-4d00-952c-a0aa5d827811\"," + + "\"target\": \"services/inventory/v11/pserver/1d326bc7-b985-492b-9604-0d5d1f06f908\"," + "\"properties\": {" + "\"prevent-delete\": \"NONE\" } }"; - + private CrudRestService mockService; - + @Rule public ExpectedException thrown = ExpectedException.none(); @Before public void init() throws Exception { ClassLoader classLoader = getClass().getClassLoader(); - File dir = new File(classLoader.getResource("model").getFile()); + File dir = new File(classLoader.getResource("rules").getFile()); System.setProperty("CONFIG_HOME", dir.getParent()); EdgeRulesLoader.resetSchemaVersionContext(); @@ -91,150 +90,170 @@ public class CrudRestServiceTest { Mockito.anyString(), Mockito.anyString(), Mockito.any(CrudRestService.Action.class), Mockito.anyString(), Mockito.any(HttpHeaders.class)); } - + @Test public void testDelete() throws CrudException { Response response; - - response = mockService.deleteVertex("", "v11", "pserver", "872dd5df-0be9-4167-95e9-2cf4b21165ed", + + response = mockService.deleteVertex("", "v11", "pserver", "872dd5df-0be9-4167-95e9-2cf4b21165ed", "services/inventory/v11", new TestHeaders(), null, new TestRequest()); assertTrue(response.getStatus() == 200); - - response = mockService.deleteEdge("", "v11", "tosca.relationships.HostedOn", - "872dd5df-0be9-4167-95e9-2cf4b21165ed", + + response = mockService.deleteEdge("", "v11", "tosca.relationships.HostedOn", "872dd5df-0be9-4167-95e9-2cf4b21165ed", "services/inventory/v11", new TestHeaders(), null, new TestRequest()); assertTrue(response.getStatus() == 200); } - + @Test public void testAddVertex() throws CrudException { Response response; - + // Cannot find OXM version - response = mockService.addVertex(postVertexPayload, "v8", "services/inventory/v8", + response = mockService.addVertex(postVertexPayload, "v7", "services/inventory/v8", new TestHeaders(), null, new TestRequest()); System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString()); assertTrue(response.getStatus() == 500); Assert.assertNull(response.getEntityTag()); - - response = mockService.addVertex(postMissingPropVertexPayload, "v11", "services/inventory/v11", + + response = mockService.addVertex(postMissingPropVertexPayload, "v11", "services/inventory/v11", new TestHeaders(), null, new TestRequest()); System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString()); assertTrue(response.getStatus() == 400); Assert.assertNull(response.getEntityTag()); - - response = mockService.addVertex(postVertexPayload, "v11", "services/inventory/v11", + + response = mockService.addVertex(postVertexPayload, "v11", "services/inventory/v11", new TestHeaders(), null, new TestRequest()); System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString()); assertTrue(response.getStatus() == 201); Assert.assertEquals(response.getEntityTag().getValue(), "test123"); - - response = mockService.addVertex(postMissingPropVertexPayload, "v11", "pserver", "services/inventory/v11", + + response = mockService.addVertex(postMissingPropVertexPayload, "v11", "pserver", "services/inventory/v11", new TestHeaders(), null, new TestRequest()); System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString()); assertTrue(response.getStatus() == 400); Assert.assertNull(response.getEntityTag()); - - response = mockService.addVertex(postVertexPayload, "v11", "pserver", "services/inventory/v11", + + response = mockService.addVertex(postVertexPayload, "v11", "pserver", "services/inventory/v11", new TestHeaders(), null, new TestRequest()); System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString()); assertTrue(response.getStatus() == 201); Assert.assertEquals(response.getEntityTag().getValue(), "test123"); } - + @Test public void testAddEdge() throws CrudException { Response response; - - response = mockService.addEdge(postEdgePayload, "v11", "services/inventory/v11", + + response = mockService.addEdge(postEdgePayload, "v9", "services/inventory/v9", new TestHeaders(), null, new TestRequest()); System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString()); assertTrue(response.getStatus() == 201); Assert.assertEquals(response.getEntityTag().getValue(), "test123"); - - response = mockService.addEdge(postEdgePayload, "v11", "tosca.relationships.HostedOn", "services/inventory/v11", + + response = mockService.addEdge(postEdgePayload, "v9", "tosca.relationships.HostedOn", "services/inventory/v11", new TestHeaders(), null, new TestRequest()); System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString()); assertTrue(response.getStatus() == 201); Assert.assertEquals(response.getEntityTag().getValue(), "test123"); } - + + @Test + public void testAddEdgeMultiplicityRules() throws CrudException { + Response response; + + response = mockService.addEdge(postEdgePayload, "v10", "services/inventory/v10", + new TestHeaders(), null, new TestRequest()); + Assert.assertEquals("MANY2ONE multiplicity rule broken for Edge:vserver:pserver:tosca.relationships.HostedOn", + response.getEntity().toString()); + Assert.assertEquals(400, response.getStatus()); + + response = mockService.addEdge(postEdgePayload, "v9", "tosca.relationships.HostedOn", "services/inventory/v9", + new TestHeaders(), null, new TestRequest()); + Assert.assertEquals(201, response.getStatus()); + + response = mockService.addEdge(postEdgePayload, "v8", "tosca.relationships.HostedOn", "services/inventory/v8", + new TestHeaders(), null, new TestRequest()); + Assert.assertEquals("ONE2MANY multiplicity rule broken for Edge:vserver:pserver:tosca.relationships.HostedOn", + response.getEntity().toString()); + Assert.assertEquals(400, response.getStatus()); + } + @Test public void testUpdateVertex() throws CrudException { Response response; // Cannot find OXM version - response = mockService.updateVertex(putVertexPayload, "v8", "pserver", "test-uuid", "services/inventory/v8", + response = mockService.updateVertex(putVertexPayload, "v7", "pserver", "test-uuid", "services/inventory/v8", new TestHeaders(), null, new TestRequest()); System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString()); assertTrue(response.getStatus() == 500); Assert.assertNull(response.getEntityTag()); - + // Test ID mismatch - response = mockService.updateVertex(putVertexPayload, "v11", "pserver", "bad-id", + response = mockService.updateVertex(putVertexPayload, "v11", "pserver", "bad-id", "services/inventory/v11", new TestHeaders(), null, new TestRequest()); System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString()); assertTrue(response.getStatus() == 400); - Assert.assertNull(response.getEntityTag()); - + Assert.assertNull(response.getEntityTag()); + // Success case response = mockService.updateVertex(putVertexPayload, "v11", "pserver", "test-uuid", "services/inventory/v11", new TestHeaders(), null, new TestRequest()); System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString()); - assertTrue(response.getStatus() == 200); + assertTrue(response.getStatus() == 200); Assert.assertEquals(response.getEntityTag().getValue(), "test123"); - + // Patch - response = mockService.patchVertex(putVertexPayload, "v11", "pserver", "test-uuid", + response = mockService.patchVertex(putVertexPayload, "v11", "pserver", "test-uuid", "services/inventory/v11", new TestHeaders(), null, new TestRequest()); System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString()); - assertTrue(response.getStatus() == 200); + assertTrue(response.getStatus() == 200); Assert.assertEquals(response.getEntityTag().getValue(), "test123"); } - + @Test public void testUpdateEdge() throws CrudException { Response response; - - response = mockService.updateEdge(postEdgePayload, "v11", "tosca.relationships.HostedOn", "my-uuid", - "services/inventory/v11", new TestHeaders(), null, new TestRequest()); + + response = mockService.updateEdge(postEdgePayload, "v9", "tosca.relationships.HostedOn", "my-uuid", + "services/inventory/v9", new TestHeaders(), null, new TestRequest()); System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString()); - assertTrue(response.getStatus() == 200); + assertTrue(response.getStatus() == 200); Assert.assertEquals(response.getEntityTag().getValue(), "test123"); - + // Patch - response = mockService.patchEdge(postEdgePayload, "v11", "tosca.relationships.HostedOn", "my-uuid", - "services/inventory/v11", new TestHeaders(), null, new TestRequest()); + response = mockService.patchEdge(postEdgePayload, "v9", "tosca.relationships.HostedOn", "my-uuid", + "services/inventory/v9", new TestHeaders(), null, new TestRequest()); System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString()); assertTrue(response.getStatus() == 200); Assert.assertEquals(response.getEntityTag().getValue(), "test123"); } - + @Test public void testGet() throws CrudException { Response response; - - response = mockService.getVertex("", "v11", "pserver", "872dd5df-0be9-4167-95e9-2cf4b21165ed", + + response = mockService.getVertex("", "v11", "pserver", "872dd5df-0be9-4167-95e9-2cf4b21165ed", "services/inventory/v11", new TestHeaders(), new TestUriInfo(), new TestRequest()); System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString()); assertTrue(response.getStatus() == 200); - - response = mockService.getEdge("", "v11", "tosca.relationships.HostedOn", "872dd5df-0be9-4167-95e9-2cf4b21165ed", + + response = mockService.getEdge("", "v11", "tosca.relationships.HostedOn", "872dd5df-0be9-4167-95e9-2cf4b21165ed", "services/inventory/v11", new TestHeaders(), new TestUriInfo(), new TestRequest()); System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString()); assertTrue(response.getStatus() == 200); - - response = mockService.getVertices("", "v11", "pserver", + + response = mockService.getVertices("", "v11", "pserver", "services/inventory/v11", new TestHeaders(), new TestUriInfo(), new TestRequest()); System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString()); assertTrue(response.getStatus() == 200); - - response = mockService.getEdges("", "v11", "tosca.relationships.HostedOn", + + response = mockService.getEdges("", "v11", "tosca.relationships.HostedOn", "services/inventory/v11", new TestHeaders(), new TestUriInfo(), new TestRequest()); System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString()); assertTrue(response.getStatus() == 200); } - + @Test public void testValidRequestHeader() throws CrudException { TestHeaders testHeaders = new TestHeaders(); @@ -270,7 +289,7 @@ public class CrudRestServiceTest { testHeaders.clearRequestHeader("X-TransactionId", "X-FromAppId"); mockService.validateRequestHeader(testHeaders); } - + @Test public void testEmptyRequestHeader() throws CrudException { thrown.expect(CrudException.class); @@ -306,21 +325,21 @@ public class CrudRestServiceTest { System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString()); assertTrue(response.getStatus() == 200); } - + @Test public void testBulk() throws CrudException, IOException { Response response; - + File bulkFile = new File("src/test/resources/payloads/bulk.json"); - String payloadStr = readFileToString(bulkFile); + String payloadStr = readFileToString(bulkFile); System.out.println(payloadStr); - - response = mockService.addBulk(payloadStr, "v11", "", - "services/inventory/v11", new TestHeaders(), null, new TestRequest()); + + response = mockService.addBulk(payloadStr, "v9", "", + "services/inventory/v9", new TestHeaders(), null, new TestRequest()); System.out.println("Bulk Response: " + response.getStatus() + "\n" + response.getEntity().toString()); - assertTrue(response.getStatus() == 200); + assertTrue(response.getStatus() == 200); } - + public static String readFileToString(File aFile) throws IOException { BufferedReader br = new BufferedReader(new FileReader(aFile)); diff --git a/src/test/java/org/onap/crud/util/CrudServiceUtilTest.java b/src/test/java/org/onap/crud/util/CrudServiceUtilTest.java index 872586e..37cdeec 100644 --- a/src/test/java/org/onap/crud/util/CrudServiceUtilTest.java +++ b/src/test/java/org/onap/crud/util/CrudServiceUtilTest.java @@ -22,7 +22,7 @@ package org.onap.crud.util; import org.junit.Assert; import org.junit.Test; -import org.onap.crud.service.VertexPayload; +import org.onap.crud.parser.VertexPayload; import org.onap.crud.service.util.TestHeaders; import com.google.gson.JsonElement; diff --git a/src/test/java/org/onap/schema/RelationshipSchemaTest.java b/src/test/java/org/onap/schema/RelationshipSchemaTest.java index 9467f41..a32762f 100644 --- a/src/test/java/org/onap/schema/RelationshipSchemaTest.java +++ b/src/test/java/org/onap/schema/RelationshipSchemaTest.java @@ -20,18 +20,16 @@ */ package org.onap.schema; -import com.google.common.collect.ArrayListMultimap; -import com.google.common.collect.Multimap; +import static org.junit.Assert.*; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; import org.junit.Test; import org.onap.aai.edges.EdgeRule; import org.onap.aai.edges.exceptions.EdgeRuleNotFoundException; import org.onap.crud.exception.CrudException; - -import java.io.IOException; -import java.util.HashMap; -import java.util.Map; - -import static org.junit.Assert.*; +import com.google.common.collect.ArrayListMultimap; +import com.google.common.collect.Multimap; public class RelationshipSchemaTest { diff --git a/src/test/java/org/onap/schema/validation/MultiplicityValidatorTest.java b/src/test/java/org/onap/schema/validation/MultiplicityValidatorTest.java new file mode 100644 index 0000000..409ce3c --- /dev/null +++ b/src/test/java/org/onap/schema/validation/MultiplicityValidatorTest.java @@ -0,0 +1,159 @@ +/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017-2018 Amdocs
+ * ================================================================================
+ * Licensed 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.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.schema.validation;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.onap.crud.entity.Edge;
+import org.onap.crud.entity.Vertex;
+import org.onap.crud.exception.CrudException;
+import org.onap.crud.parser.EdgePayload;
+import org.onap.schema.EdgeRulesLoader;
+import org.onap.schema.validation.MultiplicityValidator.MultiplicityType;
+
+public class MultiplicityValidatorTest {
+
+ private final String postEdgePayload = "{" + "\"type\": \"tosca.relationships.HostedOn\","
+ + "\"source\": \"services/inventory/v12/vserver/50bdab41-ad1c-4d00-952c-a0aa5d827811\","
+ + "\"target\": \"services/inventory/v12/pserver/1d326bc7-b985-492b-9604-0d5d1f06f908\","
+ + "\"properties\": {" + "\"prevent-delete\": \"NONE\" } }";
+
+ @Rule
+ public ExpectedException thrown = ExpectedException.none();
+
+ @Before
+ public void init() {
+ ClassLoader classLoader = getClass().getClassLoader();
+ File dir = new File(classLoader.getResource("rules").getFile());
+ System.setProperty("CONFIG_HOME", dir.getParent());
+ EdgeRulesLoader.resetSchemaVersionContext();
+ }
+
+ @Test
+ public void testValidPayloadForMultiplicityRule() throws CrudException {
+ Map<String, List<Edge>> vertexMap = getEdgesForVertex(MultiplicityType.MANY2ONE, true);
+ MultiplicityValidator.validatePayloadMultiplicity(EdgePayload.fromJson(postEdgePayload),
+ vertexMap.get("source"), vertexMap.get("target"),
+ "tosca.relationships.HostedOn", "v11");
+ }
+
+ @Test
+ public void testInvalidPayloadForMultiplicityRule() throws CrudException {
+ thrown.expect(CrudException.class);
+ thrown.expectMessage("MANY2ONE multiplicity rule broken for Edge:vserver:pserver:tosca.relationships.HostedOn");
+
+ Map<String, List<Edge>> vertexMap = getEdgesForVertex(MultiplicityType.MANY2ONE, false);
+ MultiplicityValidator.validatePayloadMultiplicity(EdgePayload.fromJson(postEdgePayload),
+ vertexMap.get("source"), vertexMap.get("target"),
+ "tosca.relationships.HostedOn", "v11");
+ }
+
+ @Test
+ public void testIsVertexValidForMultiplicityType() throws CrudException {
+
+ Map<String, List<Edge>> vertexMap = getEdgesForVertex(MultiplicityType.MANY2MANY, true);
+ Assert.assertTrue(MultiplicityValidator.isVertexValidForMultiplicityType(vertexMap.get("source"),
+ vertexMap.get("target"), MultiplicityType.MANY2MANY));
+
+ vertexMap = getEdgesForVertex(MultiplicityType.MANY2ONE, true);
+ Assert.assertTrue(MultiplicityValidator.isVertexValidForMultiplicityType(
+ vertexMap.get("source"), vertexMap.get("target"), MultiplicityType.MANY2ONE));
+
+ vertexMap = getEdgesForVertex(MultiplicityType.ONE2MANY, true);
+ Assert.assertTrue(MultiplicityValidator.isVertexValidForMultiplicityType(
+ vertexMap.get("source"), vertexMap.get("target"), MultiplicityType.ONE2MANY));
+
+ vertexMap = getEdgesForVertex(MultiplicityType.ONE2ONE, true);
+ Assert.assertTrue(MultiplicityValidator.isVertexValidForMultiplicityType(
+ vertexMap.get("source"), vertexMap.get("target"), MultiplicityType.ONE2ONE));
+
+ vertexMap = getEdgesForVertex(MultiplicityType.ONE2MANY, false);
+ Assert.assertFalse(MultiplicityValidator.isVertexValidForMultiplicityType(
+ vertexMap.get("source"), vertexMap.get("target"), MultiplicityType.ONE2MANY));
+
+ vertexMap = getEdgesForVertex(MultiplicityType.ONE2ONE, false);
+ Assert.assertFalse(MultiplicityValidator.isVertexValidForMultiplicityType(
+ vertexMap.get("source"), vertexMap.get("target"), MultiplicityType.ONE2ONE));
+ }
+
+ private Map<String, List<Edge>> getEdgesForVertex(MultiplicityType multiplicityType, boolean pass) {
+
+ Map<String, List<Edge>> vertexMap = new HashMap<String, List<Edge>>();
+ List<Edge> edgesForSourceVertex = new ArrayList<>();
+ List<Edge> edgesForTargetVertex = new ArrayList<>();
+
+ switch (multiplicityType) {
+ case MANY2MANY:
+ if (pass) {
+ Edge edge = new Edge.Builder("type").source(new Vertex.Builder("source").build())
+ .target(new Vertex.Builder("target").build()).build();
+ edgesForSourceVertex.add(edge);
+ edgesForTargetVertex.add(edge);
+ }
+ break;
+ case MANY2ONE:
+ if (pass) {
+ Edge edge = new Edge.Builder("type").source(new Vertex.Builder("source").build())
+ .target(new Vertex.Builder("target").build()).build();
+ edgesForTargetVertex.add(edge);
+ } else {
+ Edge edge = new Edge.Builder("type").source(new Vertex.Builder("source").build())
+ .target(new Vertex.Builder("target").build()).build();
+ edgesForSourceVertex.add(edge);
+ edgesForTargetVertex.add(edge);
+ }
+ break;
+ case ONE2MANY:
+ if (pass) {
+ Edge edge = new Edge.Builder("type").source(new Vertex.Builder("source").build())
+ .target(new Vertex.Builder("target").build()).build();
+ edgesForSourceVertex.add(edge);
+ } else {
+ Edge edge = new Edge.Builder("type").source(new Vertex.Builder("source").build())
+ .target(new Vertex.Builder("target").build()).build();
+ edgesForSourceVertex.add(edge);
+ edgesForTargetVertex.add(edge);
+ }
+ break;
+ case ONE2ONE:
+ if (!pass) {
+ Edge edge = new Edge.Builder("type").source(new Vertex.Builder("source").build())
+ .target(new Vertex.Builder("target").build()).build();
+ edgesForSourceVertex.add(edge);
+ edgesForTargetVertex.add(edge);
+ }
+ break;
+ }
+ vertexMap.put("source", edgesForSourceVertex);
+ vertexMap.put("target", edgesForTargetVertex);
+
+ return vertexMap;
+ }
+
+}
|