summaryrefslogtreecommitdiffstats
path: root/src/test
diff options
context:
space:
mode:
authorJennie Jia <Jennie.Jia@amdocs.com>2018-08-03 18:33:40 +0000
committerJennie Jia <Jennie.Jia@amdocs.com>2018-08-14 16:10:32 +0000
commit2b653a3e248cc91e02b12b4e91bc0022919f6089 (patch)
tree159b6bc439f8bb3cb3497dfd96b930f5847fbe23 /src/test
parent0f03ce7eea220df68d84a7f0f088a38ebb088039 (diff)
Merge the POMBA code to ONAP AAI data router
Issue-ID: LOG-588 Change-Id: I5d121121e1f6b8167cc0f6b3326b488aedf01430 Signed-off-by: Jennie Jia <Jennie.Jia@amdocs.com>
Diffstat (limited to 'src/test')
-rw-r--r--src/test/java/org/onap/aai/datarouter/entity/POAServiceInstanceEntityTest.java281
-rw-r--r--src/test/java/org/onap/aai/datarouter/exception/POAAuditExceptionTest.java53
-rw-r--r--src/test/java/org/onap/aai/datarouter/policy/ServiceIntegrityValidationPolicyStubbed.java67
-rw-r--r--src/test/java/org/onap/aai/datarouter/policy/ServiceIntegrityValidationPolicyTest.java112
-rw-r--r--src/test/java/org/onap/aai/datarouter/service/AuditServiceTest.java65
-rw-r--r--src/test/resources/poa_audit_result.json336
-rw-r--r--src/test/resources/poa_auditservice_validation.json27
-rw-r--r--src/test/resources/poa_auditservice_violation.json14
-rw-r--r--src/test/resources/poa_event.json18
9 files changed, 973 insertions, 0 deletions
diff --git a/src/test/java/org/onap/aai/datarouter/entity/POAServiceInstanceEntityTest.java b/src/test/java/org/onap/aai/datarouter/entity/POAServiceInstanceEntityTest.java
new file mode 100644
index 0000000..1f3db97
--- /dev/null
+++ b/src/test/java/org/onap/aai/datarouter/entity/POAServiceInstanceEntityTest.java
@@ -0,0 +1,281 @@
+/**
+ * ============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.aai.datarouter.entity;
+
+import static org.junit.Assert.assertEquals;
+
+import javax.ws.rs.core.Response.Status;
+import org.junit.Assert;
+import org.junit.Test;
+import org.onap.aai.datarouter.exception.POAAuditException;
+
+public class POAServiceInstanceEntityTest {
+
+ @Test
+ public void testPOAServiceInstanceEntity(){
+ String svcInstanceId = "24602405-7714-4c64-81da-9e182a3eba59";
+ String modelVersionId = "2f836857-d399-4de3-a6f8-e4a09d3017eb";
+ String modelInvariantId = "8c383ba3-20c3-4196-b092-c8c007ef7ddc";
+ String customerId = "global-customer-01";
+ String serviceType = "vFW";
+ String xFromAppId ="REST-client";
+ String xTransactionId = "aaa111cccc4444";
+
+ POAServiceInstanceEntity svcEntity= new POAServiceInstanceEntity();
+ svcEntity.setServiceInstanceId(svcInstanceId);
+ svcEntity.setModelVersionId(modelVersionId);
+ svcEntity.setModelInvariantId(modelInvariantId);
+ svcEntity.setCustomerId(customerId);
+ svcEntity.setServiceType(serviceType);
+ svcEntity.setxFromAppId(xFromAppId);
+ svcEntity.setxTransactionId(xTransactionId);
+
+ Assert.assertEquals(svcInstanceId, svcEntity.getServiceInstanceId());
+ Assert.assertEquals(modelVersionId, svcEntity.getModelVersionId());
+ Assert.assertEquals(modelInvariantId, svcEntity.getModelInvariantId());
+
+ Assert.assertEquals(customerId, svcEntity.getCustomerId());
+ Assert.assertEquals(serviceType, svcEntity.getServiceType());
+ Assert.assertEquals(xFromAppId, svcEntity.getxFromAppId());
+ Assert.assertEquals(xTransactionId, svcEntity.getxTransactionId());
+
+ }
+
+ @Test
+ public void testNullServiceInstanceId() throws POAAuditException {
+ String modelVersionId = "2f836857-d399-4de3-a6f8-e4a09d3017eb";
+ String modelInvariantId = "8c383ba3-20c3-4196-b092-c8c007ef7ddc";
+ String customerId = "global-customer-01";
+ String serviceType = "vFW";
+
+ POAServiceInstanceEntity svcEntity= new POAServiceInstanceEntity();
+ svcEntity.setServiceInstanceId(null);
+ svcEntity.setModelVersionId(modelVersionId);
+ svcEntity.setModelInvariantId(modelInvariantId);
+ svcEntity.setCustomerId(customerId);
+ svcEntity.setServiceType(serviceType);
+
+ try {
+ svcEntity.validate();
+ } catch (POAAuditException e) {
+ assertEquals(Status.BAD_REQUEST, e.getHttpStatus());
+ }
+ }
+
+
+ @Test
+ public void testEmptyServiceInstanceId() throws POAAuditException {
+ String modelVersionId = "2f836857-d399-4de3-a6f8-e4a09d3017eb";
+ String modelInvariantId = "8c383ba3-20c3-4196-b092-c8c007ef7ddc";
+ String customerId = "global-customer-01";
+ String serviceType = "vFW";
+
+ POAServiceInstanceEntity svcEntity= new POAServiceInstanceEntity();
+ svcEntity.setServiceInstanceId("");
+ svcEntity.setModelVersionId(modelVersionId);
+ svcEntity.setModelInvariantId(modelInvariantId);
+ svcEntity.setCustomerId(customerId);
+ svcEntity.setServiceType(serviceType);
+
+ try {
+ svcEntity.validate();
+ } catch (POAAuditException e) {
+ assertEquals(Status.BAD_REQUEST, e.getHttpStatus());
+ }
+ }
+
+
+ @Test
+ public void testNullModelVersionId() throws POAAuditException {
+ String svcInstanceId = "24602405-7714-4c64-81da-9e182a3eba59";
+ String modelInvariantId = "8c383ba3-20c3-4196-b092-c8c007ef7ddc";
+ String customerId = "global-customer-01";
+ String serviceType = "vFW";
+
+ POAServiceInstanceEntity svcEntity= new POAServiceInstanceEntity();
+ svcEntity.setServiceInstanceId(svcInstanceId);
+ svcEntity.setModelVersionId(null);
+ svcEntity.setModelInvariantId(modelInvariantId);
+ svcEntity.setCustomerId(customerId);
+ svcEntity.setServiceType(serviceType);
+
+ try {
+ svcEntity.validate();
+ } catch (POAAuditException e) {
+ assertEquals(Status.BAD_REQUEST, e.getHttpStatus());
+ }
+ }
+
+ @Test
+ public void testEmptyModelVersionId() throws POAAuditException {
+ String svcInstanceId = "24602405-7714-4c64-81da-9e182a3eba59";
+ String modelInvariantId = "8c383ba3-20c3-4196-b092-c8c007ef7ddc";
+ String customerId = "global-customer-01";
+ String serviceType = "vFW";
+
+ POAServiceInstanceEntity svcEntity= new POAServiceInstanceEntity();
+ svcEntity.setServiceInstanceId(svcInstanceId);
+ svcEntity.setModelVersionId("");
+ svcEntity.setModelInvariantId(modelInvariantId);
+ svcEntity.setCustomerId(customerId);
+ svcEntity.setServiceType(serviceType);
+
+ try {
+ svcEntity.validate();
+ } catch (POAAuditException e) {
+ assertEquals(Status.BAD_REQUEST, e.getHttpStatus());
+ }
+ }
+
+
+ @Test
+ public void testNullModelInvariantId() throws POAAuditException {
+ String svcInstanceId = "24602405-7714-4c64-81da-9e182a3eba59";
+ String modelVersionId = "2f836857-d399-4de3-a6f8-e4a09d3017eb";
+ String customerId = "global-customer-01";
+ String serviceType = "vFW";
+
+ POAServiceInstanceEntity svcEntity= new POAServiceInstanceEntity();
+ svcEntity.setServiceInstanceId(svcInstanceId);
+ svcEntity.setModelVersionId(modelVersionId);
+ svcEntity.setModelInvariantId(null);
+ svcEntity.setCustomerId(customerId);
+ svcEntity.setServiceType(serviceType);
+
+ try {
+ svcEntity.validate();
+ } catch (POAAuditException e) {
+ assertEquals(Status.BAD_REQUEST, e.getHttpStatus());
+ }
+ }
+
+
+ @Test
+ public void testEmptyModelInvariantId() throws POAAuditException {
+ String svcInstanceId = "24602405-7714-4c64-81da-9e182a3eba59";
+ String modelVersionId = "2f836857-d399-4de3-a6f8-e4a09d3017eb";
+ String customerId = "global-customer-01";
+ String serviceType = "vFW";
+
+ POAServiceInstanceEntity svcEntity= new POAServiceInstanceEntity();
+ svcEntity.setServiceInstanceId(svcInstanceId);
+ svcEntity.setModelVersionId(modelVersionId);
+ svcEntity.setModelInvariantId("");
+ svcEntity.setCustomerId(customerId);
+ svcEntity.setServiceType(serviceType);
+
+ try {
+ svcEntity.validate();
+ } catch (POAAuditException e) {
+ assertEquals(Status.BAD_REQUEST, e.getHttpStatus());
+ }
+ }
+
+ @Test
+ public void testNullServiceType() throws POAAuditException {
+ String svcInstanceId = "24602405-7714-4c64-81da-9e182a3eba59";
+ String modelVersionId = "2f836857-d399-4de3-a6f8-e4a09d3017eb";
+ String modelInvariantId = "8c383ba3-20c3-4196-b092-c8c007ef7ddc";
+ String customerId = "global-customer-01";
+
+
+ POAServiceInstanceEntity svcEntity= new POAServiceInstanceEntity();
+ svcEntity.setServiceInstanceId(svcInstanceId);
+ svcEntity.setModelVersionId(modelVersionId);
+ svcEntity.setModelInvariantId(modelInvariantId);
+ svcEntity.setCustomerId(customerId);
+ svcEntity.setServiceType(null);
+
+ try {
+ svcEntity.validate();
+ } catch (POAAuditException e) {
+ assertEquals(Status.BAD_REQUEST, e.getHttpStatus());
+ }
+ }
+
+
+ @Test
+ public void testEmptyServiceType() throws POAAuditException {
+ String svcInstanceId = "24602405-7714-4c64-81da-9e182a3eba59";
+ String modelVersionId = "2f836857-d399-4de3-a6f8-e4a09d3017eb";
+ String modelInvariantId = "8c383ba3-20c3-4196-b092-c8c007ef7ddc";
+ String customerId = "global-customer-01";
+
+
+ POAServiceInstanceEntity svcEntity= new POAServiceInstanceEntity();
+ svcEntity.setServiceInstanceId(svcInstanceId);
+ svcEntity.setModelVersionId(modelVersionId);
+ svcEntity.setModelInvariantId(modelInvariantId);
+ svcEntity.setCustomerId(customerId);
+ svcEntity.setServiceType("");
+
+ try {
+ svcEntity.validate();
+ } catch (POAAuditException e) {
+ assertEquals(Status.BAD_REQUEST, e.getHttpStatus());
+ }
+ }
+
+
+ @Test
+ public void testNullCustomerId() throws POAAuditException {
+ String svcInstanceId = "24602405-7714-4c64-81da-9e182a3eba59";
+ String modelVersionId = "2f836857-d399-4de3-a6f8-e4a09d3017eb";
+ String modelInvariantId = "8c383ba3-20c3-4196-b092-c8c007ef7ddc";
+ String serviceType = "vFW";
+
+ POAServiceInstanceEntity svcEntity= new POAServiceInstanceEntity();
+ svcEntity.setServiceInstanceId(svcInstanceId);
+ svcEntity.setModelVersionId(modelVersionId);
+ svcEntity.setModelInvariantId(modelInvariantId);
+ svcEntity.setCustomerId(null);
+ svcEntity.setServiceType(serviceType);
+
+ try {
+ svcEntity.validate();
+ } catch (POAAuditException e) {
+ assertEquals(Status.BAD_REQUEST, e.getHttpStatus());
+ }
+ }
+
+
+ @Test
+ public void testEmptyCustomerId() throws POAAuditException {
+ String svcInstanceId = "24602405-7714-4c64-81da-9e182a3eba59";
+ String modelVersionId = "2f836857-d399-4de3-a6f8-e4a09d3017eb";
+ String modelInvariantId = "8c383ba3-20c3-4196-b092-c8c007ef7ddc";
+ String serviceType = "vFW";
+
+ POAServiceInstanceEntity svcEntity= new POAServiceInstanceEntity();
+ svcEntity.setServiceInstanceId(svcInstanceId);
+ svcEntity.setModelVersionId(modelVersionId);
+ svcEntity.setModelInvariantId(modelInvariantId);
+ svcEntity.setCustomerId("");
+ svcEntity.setServiceType(serviceType);
+
+ try {
+ svcEntity.validate();
+ } catch (POAAuditException e) {
+ assertEquals(Status.BAD_REQUEST, e.getHttpStatus());
+ }
+ }
+
+}
diff --git a/src/test/java/org/onap/aai/datarouter/exception/POAAuditExceptionTest.java b/src/test/java/org/onap/aai/datarouter/exception/POAAuditExceptionTest.java
new file mode 100644
index 0000000..d5d4377
--- /dev/null
+++ b/src/test/java/org/onap/aai/datarouter/exception/POAAuditExceptionTest.java
@@ -0,0 +1,53 @@
+/**
+ * ============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.aai.datarouter.exception;
+
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.Status;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.onap.aai.datarouter.logging.DataRouterMsgs;
+
+public class POAAuditExceptionTest {
+
+ @Test
+ public void testPOAAuditExceptionWith400() {
+ String error = "Missing attribute: serviceInstanceId ";
+
+ POAAuditException exception1 = new POAAuditException(error, Status.BAD_REQUEST, DataRouterMsgs.BAD_REST_REQUEST, error);
+ Assert.assertEquals(Response.Status.BAD_REQUEST, exception1.getHttpStatus());
+ Assert.assertEquals(DataRouterMsgs.BAD_REST_REQUEST, exception1.getLogCode());
+ }
+
+
+ @Test
+ public void testPOAAuditExceptionWith500() {
+ String error = "Failed to to create event publisher ";
+ String OPERATION = "POST to DMaaP";
+ POAAuditException exception1 = new POAAuditException(error, Status.INTERNAL_SERVER_ERROR, DataRouterMsgs.EXCEPTION_DURING_METHOD_CALL, OPERATION);
+
+ Assert.assertEquals(Response.Status.INTERNAL_SERVER_ERROR, exception1.getHttpStatus());
+ Assert.assertEquals(DataRouterMsgs.EXCEPTION_DURING_METHOD_CALL, exception1.getLogCode());
+ }
+
+
+}
diff --git a/src/test/java/org/onap/aai/datarouter/policy/ServiceIntegrityValidationPolicyStubbed.java b/src/test/java/org/onap/aai/datarouter/policy/ServiceIntegrityValidationPolicyStubbed.java
new file mode 100644
index 0000000..163801f
--- /dev/null
+++ b/src/test/java/org/onap/aai/datarouter/policy/ServiceIntegrityValidationPolicyStubbed.java
@@ -0,0 +1,67 @@
+/**
+ * ============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.aai.datarouter.policy;
+
+
+public class ServiceIntegrityValidationPolicyStubbed extends ServiceIntegrityValidationPolicy{
+
+ private InMemorySearchDatastore searchDb;
+
+ public ServiceIntegrityValidationPolicyStubbed(String searchCertPath, String searchCertTruststore,
+ String searchCertPassword, String searchBaseURL, String endpoint, String validationIndexName,
+ String violationIndexName) {
+ super(searchCertPath, searchCertTruststore, searchCertPassword, searchBaseURL, endpoint, validationIndexName,
+ violationIndexName);
+
+ }
+
+
+ public InMemorySearchDatastore getSearchDb() {
+ return searchDb;
+ }
+
+
+ public ServiceIntegrityValidationPolicyStubbed withSearchDb(InMemorySearchDatastore searchDb) {
+ this.searchDb = searchDb;
+ return this;
+ }
+
+
+ public void handleSearchDataServiceOperation(String index, String id, String payload, String action) {
+
+ //Stub out the actual call to Search Data service and instead store/update documents in memory
+ try {
+ switch (action.toLowerCase()) {
+ case "put":
+ searchDb.put(index, payload); // validation message
+ break;
+ case "post":
+ searchDb.put(index, payload); // violation message
+ break;
+
+ default:
+ break;
+ }
+ } catch (Exception ex) {
+ }
+
+ }
+}
diff --git a/src/test/java/org/onap/aai/datarouter/policy/ServiceIntegrityValidationPolicyTest.java b/src/test/java/org/onap/aai/datarouter/policy/ServiceIntegrityValidationPolicyTest.java
new file mode 100644
index 0000000..0f0ee80
--- /dev/null
+++ b/src/test/java/org/onap/aai/datarouter/policy/ServiceIntegrityValidationPolicyTest.java
@@ -0,0 +1,112 @@
+/**
+ * ============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.aai.datarouter.policy;
+
+import static org.junit.Assert.*;
+import static org.mockito.Matchers.anyObject;
+import static org.mockito.Matchers.anyString;
+
+import java.io.File;
+import java.io.FileInputStream;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.Message;
+import org.apache.commons.io.IOUtils;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.aai.datarouter.policy.EntityEventPolicy;
+import org.onap.aai.datarouter.policy.EntityEventPolicyConfig;
+import org.onap.aai.datarouter.util.NodeUtils;
+import org.onap.aai.datarouter.util.SearchServiceAgent;
+import org.powermock.api.mockito.PowerMockito;
+
+
+public class ServiceIntegrityValidationPolicyTest {
+ private ServiceIntegrityValidationPolicy policy;
+ private String eventJson;
+ private String validationJson;
+ private String violationjson;
+
+ private InMemorySearchDatastore searchDb;
+
+ @SuppressWarnings("unchecked")
+ @Before
+ public void init() throws Exception {
+
+ String searchCertPath = "";
+ String searchCertTruststore ="";
+ String searchCertPassword = "password";
+ String searchBaseURL = "";
+ String endpoint = "services/search-data-service/v1/search/indexes/";
+ String validationIndexName = "service-validations";
+ String violationIndexName = "service-violations";
+
+
+ searchDb = new InMemorySearchDatastore();
+ policy = new ServiceIntegrityValidationPolicyStubbed(searchCertPath, searchCertTruststore,
+ searchCertPassword, searchBaseURL, endpoint, validationIndexName, violationIndexName).withSearchDb(searchDb);
+
+ FileInputStream event = new FileInputStream( new File("src/test/resources/poa_audit_result.json"));
+ eventJson = IOUtils.toString(event, "UTF-8");
+
+ FileInputStream validation = new FileInputStream( new File("src/test/resources/poa_auditservice_validation.json"));
+ validationJson = IOUtils.toString(validation, "UTF-8");
+
+ FileInputStream violation = new FileInputStream( new File("src/test/resources/poa_auditservice_violation.json"));
+ violationjson = IOUtils.toString(violation, "UTF-8");
+
+
+ }
+
+ @Test
+ public void testProcess() throws Exception {
+
+ policy.process(getExchangeEvent(validationJson));
+ policy.process(getExchangeEvent(violationjson));
+
+ assertNotNull(searchDb.get("service-validations"));
+ assertNotNull(searchDb.get("service-violations"));
+
+ }
+
+
+
+ private Exchange getExchangeEvent(String outputJson){
+
+ Exchange exchange = PowerMockito.mock(Exchange.class);
+ Message inMessage = PowerMockito.mock(Message.class);
+ Message outMessage = PowerMockito.mock(Message.class);
+ PowerMockito.when(exchange.getIn()).thenReturn(inMessage);
+ PowerMockito.when(inMessage.getBody()).thenReturn(eventJson);
+
+ PowerMockito.when(exchange.getOut()).thenReturn(outMessage);
+ PowerMockito.when(outMessage.getBody()).thenReturn(outputJson);
+
+ PowerMockito.doNothing().when(outMessage).setBody(anyObject());
+ PowerMockito.doNothing().when(outMessage).setHeader(anyString(), anyObject());
+
+ return exchange;
+
+ }
+
+
+
+}
diff --git a/src/test/java/org/onap/aai/datarouter/service/AuditServiceTest.java b/src/test/java/org/onap/aai/datarouter/service/AuditServiceTest.java
new file mode 100644
index 0000000..334ff48
--- /dev/null
+++ b/src/test/java/org/onap/aai/datarouter/service/AuditServiceTest.java
@@ -0,0 +1,65 @@
+/**
+ * ============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.aai.datarouter.service;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.commons.io.IOUtils;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.aai.datarouter.entity.POAAuditEvent;
+import org.onap.aai.datarouter.entity.POAServiceInstanceEntity;
+
+
+public class AuditServiceTest {
+
+ private String eventJson;
+
+
+ @Before
+ public void init() throws Exception {
+ FileInputStream event = new FileInputStream( new File("src/test/resources/poa_event.json"));
+ eventJson = IOUtils.toString(event, "UTF-8");
+ }
+
+ @Test
+ public void testPOAEvent() throws Exception {
+
+ POAAuditEvent auditEvent = POAAuditEvent.fromJson(eventJson);
+
+ List<String> eventMessages = new ArrayList<String>();
+ for (POAServiceInstanceEntity serviceInstance: auditEvent.getServiceInstanceList()) {
+ serviceInstance.validate();
+ serviceInstance.setxFromAppId("data-router");
+ serviceInstance.setxTransactionId("111222888");
+ eventMessages.add(serviceInstance.toJson());
+ }
+
+ assertEquals(2, eventMessages.size());
+ }
+
+
+
+}
diff --git a/src/test/resources/poa_audit_result.json b/src/test/resources/poa_audit_result.json
new file mode 100644
index 0000000..aa48fec
--- /dev/null
+++ b/src/test/resources/poa_audit_result.json
@@ -0,0 +1,336 @@
+{
+ "validationId": "f825a232-b95b-425e-8ab0-bad4b913f770",
+ "validationTimestamp": "20180726T130520Z",
+ "entityType": "poa-entity",
+ "resourceVersion": null,
+ "violations": [
+ {
+ "severity": "CRITICAL",
+ "modelName": null,
+ "violationType": "Rule",
+ "validationRule": "Verify AAI nf-naming-code",
+ "violationDetails": {
+ "context-list.aai.vf-list[*]": [
+ {
+ "vnfc-list": [],
+ "name": "USBBBBmtwnjVVHP058",
+ "type": "HP",
+ "vf-module-list": [
+ {
+ "min-instances": 0,
+ "max-instances": 1,
+ "uuid": "null",
+ "invariant-id": "null"
+ }
+ ]
+ }
+ ]
+ },
+ "errorMessage": "The nf-naming-code is not populated in AAI VNF instance",
+ "category": "INVALID_VALUE",
+ "violationId": "b3ebe9ed846d3e1b07aad757cdd07cbec9d7012cab88d86889805b964cb70693"
+ },
+ {
+ "severity": "INFO",
+ "modelName": null,
+ "violationType": "Rule",
+ "validationRule": "port-mirroring-AAI-vnfc-type-exists-in-SDC-SUCCESS",
+ "violationDetails": {
+ "context-list.aai.vf-list[*]": [
+ {
+ "vnfc-list": [],
+ "name": "USBBBBmtwnjVVHP058",
+ "type": "HP",
+ "vf-module-list": [
+ {
+ "min-instances": 0,
+ "max-instances": 1,
+ "uuid": "null",
+ "invariant-id": "null"
+ }
+ ]
+ }
+ ],
+ "context-list.sdc.vf-list[*]": [
+ {
+ "vnfc-list": [
+ {
+ "name": "IP_Mux_Demux",
+ "uuid": "85311c4a-e105-450e-9e54-756e9a3b3354",
+ "invariant-id": "ae2cbc96-5094-4fe6-9bd0-f87c56a92576"
+ }
+ ],
+ "name": "Pri_IP_Mux_Demux_7-27 0",
+ "type": "org.openecomp.resource.vf.IpMuxDemux727",
+ "uuid": "166c8608-a448-4413-8768-44bb2611f44b",
+ "invariant-id": "302b5f0c-f0c7-458e-a9f6-a4e49d40eba9",
+ "vf-module-list": []
+ },
+ {
+ "vnfc-list": [
+ {
+ "name": "TEST",
+ "uuid": "14f2ee54-dc70-4193-af20-6c726897d3fa",
+ "invariant-id": "988b7048-4f46-4938-b6fd-b4e7ee1aec09"
+ }
+ ],
+ "name": "vHNF for SNIRO 0",
+ "type": "org.openecomp.resource.vf.VhnfForSniro",
+ "uuid": "68c00070-7f27-433b-b344-3b743e969039",
+ "invariant-id": "0c1522b2-fcd6-4718-8610-ed243ebb4659",
+ "vf-module-list": [
+ {
+ "min-instances": 1,
+ "max-instances": 1,
+ "uuid": "1b6ccf7b-6217-45f7-a193-9f05422ddf35",
+ "invariant-id": "e428d1d8-3260-4ba8-9ca6-c400ee3ca085"
+ }
+ ]
+ },
+ {
+ "vnfc-list": [
+ {
+ "name": "Tunnel_XConn",
+ "uuid": "85311c4a-e105-450e-9e54-756e9a3b3354",
+ "invariant-id": "ae2cbc96-5094-4fe6-9bd0-f87c56a92576"
+ }
+ ],
+ "name": "Pri_Tunnel_XConn_7-27 0",
+ "type": "org.openecomp.resource.vf.TunnelXconn727",
+ "uuid": "1c05f81c-e2f1-4480-946e-56b01d8ef368",
+ "invariant-id": "d7db10ac-ed6e-456b-a57a-509384a3d70c",
+ "vf-module-list": []
+ },
+ {
+ "vnfc-list": [
+ {
+ "name": "Tunnel_XConn",
+ "uuid": "85311c4a-e105-450e-9e54-756e9a3b3354",
+ "invariant-id": "ae2cbc96-5094-4fe6-9bd0-f87c56a92576"
+ }
+ ],
+ "name": "Sec_Tunnel_XConn_7-27 1",
+ "type": "org.openecomp.resource.vf.TunnelXconn727",
+ "uuid": "1c05f81c-e2f1-4480-946e-56b01d8ef368",
+ "invariant-id": "d7db10ac-ed6e-456b-a57a-509384a3d70c",
+ "vf-module-list": []
+ },
+ {
+ "vnfc-list": [
+ {
+ "name": "service_admin",
+ "uuid": "85311c4a-e105-450e-9e54-756e9a3b3354",
+ "invariant-id": "ae2cbc96-5094-4fe6-9bd0-f87c56a92576"
+ }
+ ],
+ "name": "Sec_service_admin_7-27 1",
+ "type": "org.openecomp.resource.vf.ServiceAdmin727",
+ "uuid": "a02eaa28-62af-47ee-aac2-e66079a91a4d",
+ "invariant-id": "d39bf435-c760-4d42-9882-65371db9c7bb",
+ "vf-module-list": []
+ },
+ {
+ "vnfc-list": [
+ {
+ "name": "IP_Mux_Demux",
+ "uuid": "85311c4a-e105-450e-9e54-756e9a3b3354",
+ "invariant-id": "ae2cbc96-5094-4fe6-9bd0-f87c56a92576"
+ }
+ ],
+ "name": "Sec_IP_Mux_Demux_7-27 1",
+ "type": "org.openecomp.resource.vf.IpMuxDemux727",
+ "uuid": "166c8608-a448-4413-8768-44bb2611f44b",
+ "invariant-id": "302b5f0c-f0c7-458e-a9f6-a4e49d40eba9",
+ "vf-module-list": []
+ },
+ {
+ "vnfc-list": [
+ {
+ "name": "service_admin",
+ "uuid": "85311c4a-e105-450e-9e54-756e9a3b3354",
+ "invariant-id": "ae2cbc96-5094-4fe6-9bd0-f87c56a92576"
+ }
+ ],
+ "name": "Pri_service_admin_7-27 0",
+ "type": "org.openecomp.resource.vf.ServiceAdmin727",
+ "uuid": "a02eaa28-62af-47ee-aac2-e66079a91a4d",
+ "invariant-id": "d39bf435-c760-4d42-9882-65371db9c7bb",
+ "vf-module-list": []
+ }
+ ]
+ },
+ "errorMessage": "Every vnfc type specified in sdc has been created in AAI",
+ "category": "SUCCESS",
+ "violationId": "bfe9ba434a231a0bd263f0753c517fc503639fc5210847f61c591e98e6dafbfa"
+ }
+ ],
+ "entityId": {
+
+ },
+ "entityLink": "",
+ "entity": {
+ "poa-event": {
+ "serviceType": "HNPORTAL",
+ "modelVersionId": "f8cd30d9-6583-4cc9-8b41-48ca67689ba1",
+ "modelInvariantId": "b4b1177c-4b1f-48b9-85fd-a57804df88ce",
+ "customerId": "21014aa2-526b-11e6-beb8-9e71128cae77",
+ "serviceInstanceId": "6133b7a8-da74-40c5-8a67-b458e0c0beb7",
+ "xTransactionId": "2309039=x",
+ "xFromAppId": "Data-Router"
+ },
+ "context-list": {
+ "sdc": {
+ "vf-list": [
+ {
+ "vnfc-list": [
+ {
+ "name": "IP_Mux_Demux",
+ "uuid": "85311c4a-e105-450e-9e54-756e9a3b3354",
+ "invariant-id": "ae2cbc96-5094-4fe6-9bd0-f87c56a92576"
+ }
+ ],
+ "name": "Pri_IP_Mux_Demux_7-27 0",
+ "type": "org.openecomp.resource.vf.IpMuxDemux727",
+ "uuid": "166c8608-a448-4413-8768-44bb2611f44b",
+ "invariant-id": "302b5f0c-f0c7-458e-a9f6-a4e49d40eba9",
+ "vf-module-list": []
+ },
+ {
+ "vnfc-list": [
+ {
+ "name": "TEST",
+ "uuid": "14f2ee54-dc70-4193-af20-6c726897d3fa",
+ "invariant-id": "988b7048-4f46-4938-b6fd-b4e7ee1aec09"
+ }
+ ],
+ "name": "vHNF for SNIRO 0",
+ "type": "org.openecomp.resource.vf.VhnfForSniro",
+ "uuid": "68c00070-7f27-433b-b344-3b743e969039",
+ "invariant-id": "0c1522b2-fcd6-4718-8610-ed243ebb4659",
+ "vf-module-list": [
+ {
+ "min-instances": 1,
+ "max-instances": 1,
+ "uuid": "1b6ccf7b-6217-45f7-a193-9f05422ddf35",
+ "invariant-id": "e428d1d8-3260-4ba8-9ca6-c400ee3ca085"
+ }
+ ]
+ },
+ {
+ "vnfc-list": [
+ {
+ "name": "Tunnel_XConn",
+ "uuid": "85311c4a-e105-450e-9e54-756e9a3b3354",
+ "invariant-id": "ae2cbc96-5094-4fe6-9bd0-f87c56a92576"
+ }
+ ],
+ "name": "Pri_Tunnel_XConn_7-27 0",
+ "type": "org.openecomp.resource.vf.TunnelXconn727",
+ "uuid": "1c05f81c-e2f1-4480-946e-56b01d8ef368",
+ "invariant-id": "d7db10ac-ed6e-456b-a57a-509384a3d70c",
+ "vf-module-list": []
+ },
+ {
+ "vnfc-list": [
+ {
+ "name": "Tunnel_XConn",
+ "uuid": "85311c4a-e105-450e-9e54-756e9a3b3354",
+ "invariant-id": "ae2cbc96-5094-4fe6-9bd0-f87c56a92576"
+ }
+ ],
+ "name": "Sec_Tunnel_XConn_7-27 1",
+ "type": "org.openecomp.resource.vf.TunnelXconn727",
+ "uuid": "1c05f81c-e2f1-4480-946e-56b01d8ef368",
+ "invariant-id": "d7db10ac-ed6e-456b-a57a-509384a3d70c",
+ "vf-module-list": []
+ },
+ {
+ "vnfc-list": [
+ {
+ "name": "service_admin",
+ "uuid": "85311c4a-e105-450e-9e54-756e9a3b3354",
+ "invariant-id": "ae2cbc96-5094-4fe6-9bd0-f87c56a92576"
+ }
+ ],
+ "name": "Sec_service_admin_7-27 1",
+ "type": "org.openecomp.resource.vf.ServiceAdmin727",
+ "uuid": "a02eaa28-62af-47ee-aac2-e66079a91a4d",
+ "invariant-id": "d39bf435-c760-4d42-9882-65371db9c7bb",
+ "vf-module-list": []
+ },
+ {
+ "vnfc-list": [
+ {
+ "name": "IP_Mux_Demux",
+ "uuid": "85311c4a-e105-450e-9e54-756e9a3b3354",
+ "invariant-id": "ae2cbc96-5094-4fe6-9bd0-f87c56a92576"
+ }
+ ],
+ "name": "Sec_IP_Mux_Demux_7-27 1",
+ "type": "org.openecomp.resource.vf.IpMuxDemux727",
+ "uuid": "166c8608-a448-4413-8768-44bb2611f44b",
+ "invariant-id": "302b5f0c-f0c7-458e-a9f6-a4e49d40eba9",
+ "vf-module-list": []
+ },
+ {
+ "vnfc-list": [
+ {
+ "name": "service_admin",
+ "uuid": "85311c4a-e105-450e-9e54-756e9a3b3354",
+ "invariant-id": "ae2cbc96-5094-4fe6-9bd0-f87c56a92576"
+ }
+ ],
+ "name": "Pri_service_admin_7-27 0",
+ "type": "org.openecomp.resource.vf.ServiceAdmin727",
+ "uuid": "a02eaa28-62af-47ee-aac2-e66079a91a4d",
+ "invariant-id": "d39bf435-c760-4d42-9882-65371db9c7bb",
+ "vf-module-list": []
+ }
+ ],
+ "service": {
+ "name": "SD-WAN_7-27",
+ "uuid": "f8cd30d9-6583-4cc9-8b41-48ca67689ba1",
+ "invariant-id": "b4b1177c-4b1f-48b9-85fd-a57804df88ce"
+ }
+ },
+ "sdnc": {
+ "vf-list": [
+ {
+ "vnfc-list": [],
+ "name": "null",
+ "type": "null",
+ "uuid": "null",
+ "invariant-id": "null",
+ "vf-module-list": []
+ }
+ ],
+ "service": {
+ "name": "null",
+ "uuid": "null",
+ "invariant-id": "null"
+ }
+ },
+ "aai": {
+ "vf-list": [
+ {
+ "vnfc-list": [],
+ "name": "USBBBBmtwnjVVHP058",
+ "type": "HP",
+ "vf-module-list": [
+ {
+ "min-instances": 0,
+ "max-instances": 1,
+ "uuid": "null",
+ "invariant-id": "null"
+ }
+ ]
+ }
+ ],
+ "service": {
+ "uuid": "f8cd30d9-6583-4cc9-8b41-48ca67689ba1",
+ "invariant-id": "b4b1177c-4b1f-48b9-85fd-a57804df88ce"
+ }
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/src/test/resources/poa_auditservice_validation.json b/src/test/resources/poa_auditservice_validation.json
new file mode 100644
index 0000000..68c7363
--- /dev/null
+++ b/src/test/resources/poa_auditservice_validation.json
@@ -0,0 +1,27 @@
+{
+ "violations": [
+ {
+ "severity": "CRITICAL",
+ "modelName": "string",
+ "violationType": "Rule",
+ "validationRule": "Default rule: Validate that vnf-type AAI VF instance matches vnf-type in SDN-C",
+ "errorMessage": "The vnf-type AAI VF instance does not match vnf-type in SDN-C",
+ "category": "INVALID_VALUE",
+ "violationId": "8b601abb25d5a1de57f18a76dfe387acfe5d3a80b808b536f9a87bd26cad4839"
+ },
+ {
+ "severity": "CRITICAL",
+ "modelName": "string ",
+ "violationType": "Rule",
+ "validationRule": "Default rule: Validate that vnf-name AAI VF instance matches vnf-name in SDN-C",
+ "errorMessage": "The vnf-name AAI VF instance does not match vnf-name in SDN-C",
+ "category": "INVALID_VALUE",
+ "violationId": "21ea7130f41b60b8611682fdfb7155706728b2b8d9b7152a7fcc976ae28fe31c"
+ }
+ ],
+ "validationId": "648c9c29-d820-483b-848e-7cb99a8c1281",
+ "validationTimestamp": "20180726T184111Z",
+ "modelVersionId": "f9f9a036-ee93-4d92-b779-a533463dba01",
+ "modelInvariantId": "726625ea-62be-4fe6-af5b-07862919232f",
+ "serviceInstanceId": "617745d3-1ccb-49f1-94ee-2d1aec00ff68"
+} \ No newline at end of file
diff --git a/src/test/resources/poa_auditservice_violation.json b/src/test/resources/poa_auditservice_violation.json
new file mode 100644
index 0000000..31320e3
--- /dev/null
+++ b/src/test/resources/poa_auditservice_violation.json
@@ -0,0 +1,14 @@
+{
+ "validationId": "b65a3abf-c95a-4917-bf70-50f588dc4c09",
+ "validationTimestamp": "20180531T161324Z",
+ "modelVersionId": "e9851a43-c068-4eb2-9fe7-2d123bd94ff0",
+ "modelInvariantId": "4fd21763-23ed-4f69-8654-e121626df327",
+ "serviceInstanceId": "b06270ab-99e6-4a58-9bc0-db2df5c36f4d",
+ "violationId": "596314f8158658eed4e12991b87409e21b57818cd62c2e6da4c42a61b3b9c29c",
+ "violationTimestamp": "20180724T161324Z",
+ "category": "INVALID_VALUE",
+ "severity": "CRITICAL",
+ "violationType": "Rule",
+ "validationRule": "Default rule: Validate that vnf-type AAI VF instance matches vnf-type in SDN-C",
+ "message": "The vnf-type AAI VF instance does not match vnf-type in SDN-C"
+} \ No newline at end of file
diff --git a/src/test/resources/poa_event.json b/src/test/resources/poa_event.json
new file mode 100644
index 0000000..c46d941
--- /dev/null
+++ b/src/test/resources/poa_event.json
@@ -0,0 +1,18 @@
+{
+ "serviceInstanceList": [
+ {
+ "serviceInstanceId": "24602405-7714-4c64-81da-9e182a3eba59",
+ "modelVersionId": "2f836857-d399-4de3-a6f8-e4a09d3017eb",
+ "modelInvariantId": "8c383ba3-20c3-4196-b092-c8c007ef7ddc",
+ "serviceType": "Mobility",
+ "customerId": "some.customer.id1"
+ },
+ {
+ "serviceInstanceId": "1111-744444-4c64-81da-9e182a3eba59",
+ "modelVersionId": "3333dfef836857-d399-4de3-a6f8-e4a09d3017eb",
+ "modelInvariantId": "7c5tba-20c3-4196-b092-c8c007ef7ddc",
+ "serviceType": "some.service.type",
+ "customerId": "some.customer.id2"
+ }
+ ]
+} \ No newline at end of file