From 2b653a3e248cc91e02b12b4e91bc0022919f6089 Mon Sep 17 00:00:00 2001 From: Jennie Jia Date: Fri, 3 Aug 2018 18:33:40 +0000 Subject: Merge the POMBA code to ONAP AAI data router Issue-ID: LOG-588 Change-Id: I5d121121e1f6b8167cc0f6b3326b488aedf01430 Signed-off-by: Jennie Jia --- .../entity/POAServiceInstanceEntityTest.java | 281 +++++++++++++++++++++ .../exception/POAAuditExceptionTest.java | 53 ++++ .../ServiceIntegrityValidationPolicyStubbed.java | 67 +++++ .../ServiceIntegrityValidationPolicyTest.java | 112 ++++++++ .../aai/datarouter/service/AuditServiceTest.java | 65 +++++ 5 files changed, 578 insertions(+) create mode 100644 src/test/java/org/onap/aai/datarouter/entity/POAServiceInstanceEntityTest.java create mode 100644 src/test/java/org/onap/aai/datarouter/exception/POAAuditExceptionTest.java create mode 100644 src/test/java/org/onap/aai/datarouter/policy/ServiceIntegrityValidationPolicyStubbed.java create mode 100644 src/test/java/org/onap/aai/datarouter/policy/ServiceIntegrityValidationPolicyTest.java create mode 100644 src/test/java/org/onap/aai/datarouter/service/AuditServiceTest.java (limited to 'src/test/java/org') 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 eventMessages = new ArrayList(); + for (POAServiceInstanceEntity serviceInstance: auditEvent.getServiceInstanceList()) { + serviceInstance.validate(); + serviceInstance.setxFromAppId("data-router"); + serviceInstance.setxTransactionId("111222888"); + eventMessages.add(serviceInstance.toJson()); + } + + assertEquals(2, eventMessages.size()); + } + + + +} -- cgit 1.2.3-korg