-/**\r
- * ============LICENSE_START=======================================================\r
- * org.onap.aai\r
- * ================================================================================\r
- * Copyright © 2017 AT&T Intellectual Property.\r
- * Copyright © 2017 Amdocs\r
- * All rights reserved.\r
- * ================================================================================\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- * ============LICENSE_END=========================================================\r
- *\r
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.\r
- */\r
-package org.onap.aai.modelloader.notification;\r
-\r
-import com.google.gson.Gson;\r
-import com.google.gson.GsonBuilder;\r
-import com.google.gson.InstanceCreator;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-import org.mockito.Mock;\r
-import org.mockito.Mockito;\r
-import org.mockito.MockitoAnnotations;\r
-import org.onap.aai.modelloader.config.ModelLoaderConfig;\r
-import org.openecomp.sdc.api.IDistributionClient;\r
-import org.openecomp.sdc.api.consumer.INotificationCallback;\r
-import org.openecomp.sdc.api.notification.IArtifactInfo;\r
-import org.openecomp.sdc.api.notification.INotificationData;\r
-import org.openecomp.sdc.api.notification.IResourceInstance;\r
-import org.openecomp.sdc.api.results.IDistributionClientDownloadResult;\r
-import org.openecomp.sdc.api.results.IDistributionClientResult;\r
-import org.openecomp.sdc.impl.DistributionClientFactory;\r
-import org.openecomp.sdc.impl.DistributionClientImpl;\r
-import org.openecomp.sdc.utils.DistributionActionResultEnum;\r
-\r
-import java.lang.reflect.Type;\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-import java.util.Properties;\r
-\r
-public class EventCallbackTest {\r
-\r
- ModelLoaderConfig config;\r
- DistributionClientImpl client;\r
- EventCallback callBack;\r
-\r
- @Before\r
- public void init(){\r
- MockitoAnnotations.initMocks(this);\r
- Properties props = new Properties();\r
- props.setProperty("ml.distribution.ARTIFACT_TYPES",\r
- "MODEL_INVENTORY_PROFILE,MODEL_QUERY_SPEC,VNF_CATALOG");\r
- config = new ModelLoaderConfig(props, null);\r
- client = Mockito.spy(DistributionClientImpl.class);\r
- callBack = new EventCallback(client, config);\r
- }\r
-\r
- @Test\r
- public void testActivateCallBack_PublishFailure(){\r
- Gson gson = new GsonBuilder().setPrettyPrinting().create();\r
- NotificationDataInstance notification = gson.fromJson(getNotificationWithMultipleResources(),\r
- NotificationDataInstance.class);\r
-\r
- TestConfiguration testConfig = new TestConfiguration();\r
- Mockito.when(client.getConfiguration()).thenReturn(testConfig);\r
- callBack.activateCallback(notification);\r
- }\r
-\r
- @Test\r
- public void testActivateCallBack_PublishSuccess(){\r
- Gson gson = new GsonBuilder().setPrettyPrinting().create();\r
- NotificationDataInstance notification = gson.fromJson(getNotificationWithMultipleResources(),\r
- NotificationDataInstance.class);\r
-\r
- TestConfiguration testConfig = new TestConfiguration();\r
- Mockito.when(client.download(Mockito.any(IArtifactInfo.class))).thenReturn(buildSuccessResult());\r
- Mockito.when(client.getConfiguration()).thenReturn(testConfig);\r
- callBack.activateCallback(notification);\r
- }\r
-\r
- private static IDistributionClientDownloadResult buildSuccessResult() {\r
- return new IDistributionClientDownloadResult() {\r
-\r
- @Override\r
- public byte[] getArtifactPayload() {\r
- return new byte[0];\r
- }\r
-\r
- @Override\r
- public String getArtifactName() {\r
- return "";\r
- }\r
-\r
- @Override\r
- public String getArtifactFilename() {\r
- return "";\r
- }\r
-\r
- @Override\r
- public String getDistributionMessageResult() {\r
- return "";\r
- }\r
-\r
- @Override\r
- public DistributionActionResultEnum getDistributionActionResult() {\r
- return DistributionActionResultEnum.SUCCESS;\r
- }\r
- };\r
- }\r
-\r
- private String getNotificationWithMultipleResources(){\r
- return "{\"distributionID\" : \"bcc7a72e-90b1-4c5f-9a37-28dc3cd86416\",\r\n" +\r
- " \"serviceName\" : \"Testnotificationser1\",\r\n" +\r
- " \"serviceVersion\" : \"1.0\",\r\n" +\r
- " \"serviceUUID\" : \"7f7f94f4-373a-4b71-a0e3-80ae2ba4eb5d\",\r\n" +\r
- " \"serviceDescription\" : \"TestNotificationVF1\",\r\n" +\r
- " \"resources\" : [{\r\n" +\r
- " \"resourceInstanceName\" : \"testnotificationvf11\",\r\n" +\r
- " \"resourceName\" : \"TestNotificationVF1\",\r\n" +\r
- " \"resourceVersion\" : \"1.0\",\r\n" +\r
- " \"resoucreType\" : \"VF\",\r\n" +\r
- " \"resourceUUID\" : \"907e1746-9f69-40f5-9f2a-313654092a2d\",\r\n" +\r
- " \"artifacts\" : [{\r\n" +\r
- " \"artifactName\" : \"sample-xml-alldata-1-1.xml\",\r\n" +\r
- " \"artifactType\" : \"YANG_XML\",\r\n" +\r
- " \"artifactURL\" : \"/sdc/v1/catalog/services/Testnotificationser1/1.0/" +\r
- " resourceInstances/testnotificationvf11/artifacts/" +\r
- " sample-xml-alldata-1-1.xml\",\r\n" +\r
- " \"artifactChecksum\" : \"MTUxODFkMmRlOTNhNjYxMGYyYTI1ZjA5Y2QyNWQyYTk\\u003d\",\r\n" +\r
- " \"artifactDescription\" : \"MyYang\",\r\n" +\r
- " \"artifactTimeout\" : 0,\r\n" +\r
- " \"artifactUUID\" : \"0005bc4a-2c19-452e-be6d-d574a56be4d0\",\r\n" +\r
- " \"artifactVersion\" : \"1\"\r\n" +\r
- " }" +\r
- " ]\r\n" +\r
- " },\r\n" +\r
- " {\r\n" +\r
- " \"resourceInstanceName\" : \"testnotificationvf12\",\r\n" +\r
- " \"resourceName\" : \"TestNotificationVF1\",\r\n" +\r
- " \"resourceVersion\" : \"1.0\",\r\n" +\r
- " \"resoucreType\" : \"VF\",\r\n" +\r
- " \"resourceUUID\" : \"907e1746-9f69-40f5-9f2a-313654092a2e\",\r\n" +\r
- " \"artifacts\" : [{\r\n" +\r
- " \"artifactName\" : \"heat.yaml\",\r\n" +\r
- " \"artifactType\" : \"HEAT\",\r\n" +\r
- " \"artifactURL\" : \"/sdc/v1/catalog/services/Testnotificationser1/1.0/" +\r
- " resourceInstances/testnotificationvf11/artifacts/" +\r
- " heat.yaml\",\r\n" +\r
- " \"artifactChecksum\" : \"ODEyNjE4YTMzYzRmMTk2ODVhNTU2NTg3YWEyNmIxMTM\\u003d\",\r\n" +\r
- " \"artifactDescription\" : \"heat\",\r\n" +\r
- " \"artifactTimeout\" : 60,\r\n" +\r
- " \"artifactUUID\" : \"8df6123c-f368-47d3-93be-1972cefbcc35\",\r\n" +\r
- " \"artifactVersion\" : \"1\"\r\n" +\r
- " }" +\r
- " ]\r\n" +\r
- " }\r\n" +\r
- " ]}";\r
- }\r
-}\r
-\r
-class NotificationDataInstance implements INotificationData{\r
-\r
- private String distributionID;\r
- private String serviceName;\r
- private String serviceVersion;\r
- private String serviceUUID;\r
- private String serviceDescription;\r
- private String serviceInvariantUUID;\r
- private List<JsonContainerResourceInstance> resources;\r
- private List<ArtifactInfoImpl> serviceArtifacts;\r
- private String workloadContext;\r
-\r
- @Override\r
- public String getDistributionID() {\r
- return distributionID;\r
- }\r
-\r
- @Override\r
- public String getServiceName() {\r
- return serviceName;\r
- }\r
-\r
- @Override\r
- public String getServiceVersion() {\r
- return serviceVersion;\r
- }\r
-\r
- @Override\r
- public String getServiceUUID() {\r
- return serviceUUID;\r
- }\r
-\r
- public void setDistributionID(String distributionID) {\r
- this.distributionID = distributionID;\r
- }\r
-\r
- public void setServiceName(String serviceName) {\r
- this.serviceName = serviceName;\r
- }\r
-\r
- public void setServiceVersion(String serviceVersion) {\r
- this.serviceVersion = serviceVersion;\r
- }\r
-\r
- public void setServiceUUID(String serviceUUID) {\r
- this.serviceUUID = serviceUUID;\r
- }\r
-\r
-\r
-\r
- public String getServiceDescription() {\r
- return serviceDescription;\r
- }\r
-\r
- public void setServiceDescription(String serviceDescription) {\r
- this.serviceDescription = serviceDescription;\r
- }\r
-\r
- public String getWorkloadContext() {\r
- return workloadContext;\r
- }\r
-\r
- public void setWorkloadContext(String workloadContext) {\r
- this.workloadContext = workloadContext;\r
- }\r
-\r
- @Override\r
- public String toString() {\r
- return "NotificationDataImpl [distributionID=" + distributionID + ", serviceName=" + serviceName\r
- + ", serviceVersion=" + serviceVersion + ", serviceUUID=" + serviceUUID + ", serviceDescription="\r
- + serviceDescription + ", serviceInvariantUUID=" + serviceInvariantUUID + ", resources=" + resources\r
- + ", serviceArtifacts=" + serviceArtifacts + ", workloadContext=" + workloadContext + "]";\r
- }\r
-\r
- @Override\r
- public List<IResourceInstance> getResources() {\r
- List<IResourceInstance> ret = new ArrayList<IResourceInstance>();\r
- if( resources != null ){\r
- ret.addAll(resources);\r
- }\r
- return ret;\r
- }\r
-\r
- public void setResources(List<IResourceInstance> resources){\r
- this.resources = JsonContainerResourceInstance.convertToJsonContainer(resources);\r
- }\r
-\r
- public List<JsonContainerResourceInstance> getResourcesImpl(){\r
- return resources;\r
- }\r
-\r
- List<ArtifactInfoImpl> getServiceArtifactsImpl(){\r
- return serviceArtifacts;\r
- }\r
-\r
- @Override\r
- public List<IArtifactInfo> getServiceArtifacts() {\r
-\r
- List<IArtifactInfo> temp = new ArrayList<IArtifactInfo>();\r
- if( serviceArtifacts != null ){\r
- temp.addAll(serviceArtifacts);\r
- }\r
- return temp;\r
- }\r
-\r
- void setServiceArtifacts(List<ArtifactInfoImpl> relevantServiceArtifacts) {\r
- serviceArtifacts = relevantServiceArtifacts;\r
-\r
- }\r
-\r
- @Override\r
- public String getServiceInvariantUUID() {\r
- return serviceInvariantUUID;\r
- }\r
-\r
-\r
- public void setServiceInvariantUUID(String serviceInvariantUUID) {\r
- this.serviceInvariantUUID = serviceInvariantUUID;\r
- }\r
- @Override\r
- public IArtifactInfo getArtifactMetadataByUUID(String artifactUUID){\r
- IArtifactInfo ret = findArtifactInfoByUUID(artifactUUID, serviceArtifacts);\r
- if( ret == null && resources != null ){\r
- for( JsonContainerResourceInstance currResourceInstance : resources ){\r
- ret = findArtifactInfoByUUID(artifactUUID, currResourceInstance.getArtifactsImpl());\r
- if( ret != null ){\r
- break;\r
- }\r
- }\r
- }\r
- return ret;\r
-\r
- }\r
-\r
- private IArtifactInfo findArtifactInfoByUUID(String artifactUUID, List<ArtifactInfoImpl> listToCheck) {\r
- IArtifactInfo ret = null;\r
- if( listToCheck != null ){\r
- for(IArtifactInfo curr: listToCheck ){\r
- if(curr.getArtifactUUID().equals(artifactUUID) ){\r
- ret = curr;\r
- break;\r
- }\r
- }\r
- }\r
- return ret;\r
- }\r
-}\r
-\r
-class ArtifactInfoImpl implements IArtifactInfo{\r
-\r
- private String artifactName;\r
- private String artifactType;\r
- private String artifactURL;\r
- private String artifactChecksum;\r
- private String artifactDescription;\r
- private Integer artifactTimeout;\r
- private String artifactVersion;\r
- private String artifactUUID;\r
- private String generatedFromUUID;\r
- private IArtifactInfo generatedArtifact;\r
- private List<String> relatedArtifacts;\r
- private List<IArtifactInfo> relatedArtifactsInfo;\r
- ArtifactInfoImpl(){}\r
-\r
- private ArtifactInfoImpl(IArtifactInfo iArtifactInfo){\r
- artifactName = iArtifactInfo.getArtifactName();\r
- artifactType = iArtifactInfo.getArtifactType();\r
- artifactURL = iArtifactInfo.getArtifactURL();\r
- artifactChecksum = iArtifactInfo.getArtifactChecksum();\r
- artifactDescription = iArtifactInfo.getArtifactDescription();\r
- artifactTimeout = iArtifactInfo.getArtifactTimeout();\r
- artifactVersion = iArtifactInfo.getArtifactVersion();\r
- artifactUUID = iArtifactInfo.getArtifactUUID();\r
- generatedArtifact = iArtifactInfo.getGeneratedArtifact();\r
- relatedArtifactsInfo = iArtifactInfo.getRelatedArtifacts();\r
- relatedArtifacts = fillRelatedArtifactsUUID(relatedArtifactsInfo);\r
-\r
- }\r
-\r
-\r
- private List<String> fillRelatedArtifactsUUID(List<IArtifactInfo> relatedArtifactsInfo) {\r
- List<String> relatedArtifactsUUID = null;\r
- if( relatedArtifactsInfo != null && !relatedArtifactsInfo.isEmpty()){\r
- relatedArtifactsUUID = new ArrayList<>();\r
- for(IArtifactInfo curr: relatedArtifactsInfo){\r
- relatedArtifactsUUID.add(curr.getArtifactUUID());\r
- }\r
- }\r
- return relatedArtifactsUUID;\r
- }\r
-\r
- public static List<ArtifactInfoImpl> convertToArtifactInfoImpl(List<IArtifactInfo> list){\r
- List<ArtifactInfoImpl> ret = new ArrayList<ArtifactInfoImpl>();\r
- if( list != null ){\r
- for(IArtifactInfo artifactInfo : list ){\r
- ret.add(new ArtifactInfoImpl(artifactInfo));\r
- }\r
- }\r
- return ret;\r
- }\r
-\r
- public String getArtifactName() {\r
- return artifactName;\r
- }\r
-\r
- public void setArtifactName(String artifactName) {\r
- this.artifactName = artifactName;\r
- }\r
-\r
- public String getArtifactType() {\r
- return artifactType;\r
- }\r
-\r
- public void setArtifactType(String artifactType) {\r
- this.artifactType = artifactType;\r
- }\r
-\r
- public String getArtifactURL() {\r
- return artifactURL;\r
- }\r
-\r
- public void setArtifactURL(String artifactURL) {\r
- this.artifactURL = artifactURL;\r
- }\r
-\r
- public String getArtifactChecksum() {\r
- return artifactChecksum;\r
- }\r
-\r
- public void setArtifactChecksum(String artifactChecksum) {\r
- this.artifactChecksum = artifactChecksum;\r
- }\r
-\r
- public String getArtifactDescription() {\r
- return artifactDescription;\r
- }\r
-\r
- public void setArtifactDescription(String artifactDescription) {\r
- this.artifactDescription = artifactDescription;\r
- }\r
-\r
- public Integer getArtifactTimeout() {\r
- return artifactTimeout;\r
- }\r
-\r
- public void setArtifactTimeout(Integer artifactTimeout) {\r
- this.artifactTimeout = artifactTimeout;\r
- }\r
-\r
- @Override\r
- public String toString() {\r
- return "BaseArtifactInfoImpl [artifactName=" + artifactName\r
- + ", artifactType=" + artifactType + ", artifactURL="\r
- + artifactURL + ", artifactChecksum=" + artifactChecksum\r
- + ", artifactDescription=" + artifactDescription\r
- + ", artifactVersion=" + artifactVersion\r
- + ", artifactUUID=" + artifactUUID\r
- + ", artifactTimeout=" + artifactTimeout + "]";\r
- }\r
-\r
- public String getArtifactVersion() {\r
- return artifactVersion;\r
- }\r
-\r
- public void setArtifactVersion(String artifactVersion) {\r
- this.artifactVersion = artifactVersion;\r
- }\r
-\r
- public String getArtifactUUID() {\r
- return artifactUUID;\r
- }\r
-\r
- public void setArtifactUUID(String artifactUUID) {\r
- this.artifactUUID = artifactUUID;\r
- }\r
-\r
- public String getGeneratedFromUUID() {\r
- return generatedFromUUID;\r
- }\r
-\r
- public void setGeneratedFromUUID(String generatedFromUUID) {\r
- this.generatedFromUUID = generatedFromUUID;\r
- }\r
-\r
- public IArtifactInfo getGeneratedArtifact() {\r
- return generatedArtifact;\r
- }\r
-\r
- public void setGeneratedArtifact(IArtifactInfo generatedArtifact) {\r
- this.generatedArtifact = generatedArtifact;\r
- }\r
-\r
- public List<IArtifactInfo> getRelatedArtifacts(){\r
- List<IArtifactInfo> temp = new ArrayList<IArtifactInfo>();\r
- if( relatedArtifactsInfo != null ){\r
- temp.addAll(relatedArtifactsInfo);\r
- }\r
- return temp;\r
- }\r
-\r
- public void setRelatedArtifacts(List<String> relatedArtifacts) {\r
- this.relatedArtifacts = relatedArtifacts;\r
- }\r
-\r
- public void setRelatedArtifactsInfo(List<IArtifactInfo> relatedArtifactsInfo) {\r
- this.relatedArtifactsInfo = relatedArtifactsInfo;\r
- }\r
-\r
- public List<String> getRelatedArtifactsUUID(){\r
- return relatedArtifacts;\r
- }\r
-}\r
-\r
-class JsonContainerResourceInstance implements IResourceInstance{\r
- JsonContainerResourceInstance (){}\r
- private String resourceInstanceName;\r
- private String resourceCustomizationUUID;\r
- private String resourceName;\r
- private String resourceVersion;\r
- private String resoucreType;\r
- private String resourceUUID;\r
- private String resourceInvariantUUID;\r
- private String category;\r
- private String subcategory;\r
- private List<ArtifactInfoImpl> artifacts;\r
-\r
- private JsonContainerResourceInstance(IResourceInstance resourceInstance){\r
- resourceInstanceName = resourceInstance.getResourceInstanceName();\r
- resourceCustomizationUUID = resourceInstance.getResourceCustomizationUUID();\r
- resourceName = resourceInstance.getResourceName();\r
- resourceVersion = resourceInstance.getResourceVersion();\r
- resoucreType = resourceInstance.getResourceType();\r
- resourceUUID = resourceInstance.getResourceUUID();\r
- resourceInvariantUUID = resourceInstance.getResourceInvariantUUID();\r
- category = resourceInstance.getCategory();\r
- subcategory = resourceInstance.getSubcategory();\r
- artifacts = ArtifactInfoImpl.convertToArtifactInfoImpl(resourceInstance.getArtifacts());\r
- }\r
-\r
- public static List<JsonContainerResourceInstance> convertToJsonContainer(List<IResourceInstance> resources){\r
- List<JsonContainerResourceInstance> buildResources = new ArrayList<JsonContainerResourceInstance>();\r
- if( resources != null ){\r
- for( IResourceInstance resourceInstance : resources ){\r
- buildResources.add(new JsonContainerResourceInstance(resourceInstance));\r
- }\r
- }\r
- return buildResources;\r
- }\r
-\r
- @Override\r
- public String getResourceInstanceName() {\r
- return resourceInstanceName;\r
- }\r
-\r
- public void setResourceInstanceName(String resourceInstanceName) {\r
- this.resourceInstanceName = resourceInstanceName;\r
- }\r
-\r
- @Override\r
- public String getResourceName() {\r
- return resourceName;\r
- }\r
-\r
- public void setResourceName(String resourceName) {\r
- this.resourceName = resourceName;\r
- }\r
-\r
- @Override\r
- public String getResourceVersion() {\r
- return resourceVersion;\r
- }\r
-\r
- public void setResourceVersion(String resourceVersion) {\r
- this.resourceVersion = resourceVersion;\r
- }\r
-\r
- @Override\r
- public String getResourceType() {\r
- return resoucreType;\r
- }\r
-\r
- public void setResoucreType(String resoucreType) {\r
- this.resoucreType = resoucreType;\r
- }\r
-\r
- @Override\r
- public String getResourceUUID() {\r
- return resourceUUID;\r
- }\r
-\r
- public void setResourceUUID(String resourceUUID) {\r
- this.resourceUUID = resourceUUID;\r
- }\r
-\r
- @Override\r
- public List<IArtifactInfo> getArtifacts() {\r
- List<IArtifactInfo> temp = new ArrayList<IArtifactInfo>();\r
- if( artifacts != null ){\r
- temp.addAll(artifacts);\r
- }\r
- return temp;\r
- }\r
-\r
- public void setArtifacts(List<ArtifactInfoImpl> artifacts) {\r
- this.artifacts = artifacts;\r
- }\r
-\r
- public List<ArtifactInfoImpl> getArtifactsImpl(){\r
- return artifacts;\r
- }\r
-\r
- @Override\r
- public String getResourceInvariantUUID() {\r
- return resourceInvariantUUID;\r
- }\r
-\r
- public void setResourceInvariantUUID(String resourceInvariantUUID) {\r
- this.resourceInvariantUUID = resourceInvariantUUID;\r
- }\r
- public String getResourceCustomizationUUID() {\r
- return resourceCustomizationUUID;\r
- }\r
-\r
- public void setResourceCustomizationUUID(String resourceCustomizationUUID) {\r
- this.resourceCustomizationUUID = resourceCustomizationUUID;\r
- }\r
-\r
- public String getCategory() {\r
- return category;\r
- }\r
-\r
- public void setCategory(String category) {\r
- this.category = category;\r
- }\r
-\r
- public String getSubcategory() {\r
- return subcategory;\r
- }\r
-\r
- public void setSubcategory(String subcategory) {\r
- this.subcategory = subcategory;\r
- }\r
-}\r
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017-2018 European Software Marketing Ltd.
+ * ================================================================================
+ * 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.modelloader.notification;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Properties;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mockito;
+import org.mockito.internal.util.reflection.Whitebox;
+import org.onap.aai.modelloader.config.ModelLoaderConfig;
+import org.onap.aai.modelloader.entity.model.BabelArtifactParsingException;
+import org.onap.aai.modelloader.fixture.NotificationDataFixtureBuilder;
+import org.onap.sdc.api.IDistributionClient;
+import org.onap.sdc.api.notification.INotificationData;
+
+/**
+ * Tests {@link EventCallback}
+ */
+public class EventCallbackTest {
+
+ private static final String CONFIG_FILE = "model-loader.properties";
+
+ private ModelLoaderConfig config;
+ private Properties configProperties;
+ private EventCallback eventCallback;
+
+ private ArtifactDeploymentManager mockArtifactDeploymentManager;
+ private ArtifactDownloadManager mockArtifactDownloadManager;
+ private IDistributionClient mockDistributionClient;
+
+ @Before
+ public void setup() throws IOException {
+ configProperties = new Properties();
+ configProperties.load(this.getClass().getClassLoader().getResourceAsStream(CONFIG_FILE));
+ config = new ModelLoaderConfig(configProperties, null);
+
+ mockArtifactDeploymentManager = mock(ArtifactDeploymentManager.class);
+ mockArtifactDownloadManager = mock(ArtifactDownloadManager.class);
+ mockDistributionClient = mock(IDistributionClient.class);
+
+ eventCallback = new EventCallback(mockDistributionClient, config);
+
+ Whitebox.setInternalState(eventCallback, "artifactDeploymentManager", mockArtifactDeploymentManager);
+ Whitebox.setInternalState(eventCallback, "artifactDownloadManager", mockArtifactDownloadManager);
+ }
+
+ @After
+ public void tearDown() {
+ config = null;
+ configProperties = null;
+ eventCallback = null;
+ mockArtifactDeploymentManager = null;
+ mockArtifactDownloadManager = null;
+ mockDistributionClient = null;
+ }
+
+ @Test
+ @SuppressWarnings("unchecked")
+ public void activateCallback_downloadFails() {
+ INotificationData data = NotificationDataFixtureBuilder.getNotificationDataWithToscaCsarFile();
+
+ when(mockArtifactDownloadManager.downloadArtifacts(any(INotificationData.class), any(List.class),
+ any(List.class), any(List.class))).thenReturn(false);
+
+ eventCallback.activateCallback(data);
+
+ verify(mockArtifactDownloadManager).downloadArtifacts(any(INotificationData.class), any(List.class),
+ any(List.class), any(List.class));
+ Mockito.verifyZeroInteractions(mockArtifactDeploymentManager);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void activateCallback() throws BabelArtifactParsingException {
+ INotificationData data = NotificationDataFixtureBuilder.getNotificationDataWithToscaCsarFile();
+
+ when(mockArtifactDownloadManager.downloadArtifacts(any(INotificationData.class), any(List.class),
+ any(List.class), any(List.class))).thenReturn(true);
+
+ when(mockArtifactDeploymentManager.deploy(any(INotificationData.class), any(List.class), any(List.class),
+ any(List.class))).thenReturn(true);
+
+ eventCallback.activateCallback(data);
+
+ verify(mockArtifactDownloadManager).downloadArtifacts(any(INotificationData.class), any(List.class),
+ any(List.class), any(List.class));
+ verify(mockArtifactDeploymentManager).deploy(any(INotificationData.class), any(List.class), any(List.class),
+ any(List.class));
+ }
+}