1710 Rebase - Second Attempt
[so.git] / bpmn / MSOInfrastructureBPMN / src / test / java / org / openecomp / mso / bpmn / infrastructure / DoUpdateVnfAndModulesTest.java
1 package org.openecomp.mso.bpmn.infrastructure;\r
2 \r
3 import static org.junit.Assert.assertEquals;\r
4 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockAAIVfModule;\r
5 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDBUpdateVfModule;\r
6 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfByIdWithDepth;\r
7 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfById_404;\r
8 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetServiceInstance;\r
9 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockNodeQueryServiceInstanceById;\r
10 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchGenericVnf;\r
11 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchVfModuleId;\r
12 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutGenericVnf;\r
13 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockSDNCAdapterVfModule;\r
14 import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;\r
15 import static org.openecomp.mso.bpmn.mock.StubResponseVNFAdapter.mockVNFPut;\r
16 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockVNFAdapterRestVfModule;\r
17 import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;\r
18 \r
19 import java.io.IOException;\r
20 import java.util.HashMap;\r
21 import java.util.Map;\r
22 import java.util.UUID;\r
23 \r
24 import org.camunda.bpm.engine.test.Deployment;\r
25 import org.junit.Assert;\r
26 import org.junit.Ignore;\r
27 import org.junit.Test;\r
28 import org.openecomp.mso.bpmn.common.BPMNUtil;\r
29 import org.openecomp.mso.bpmn.common.WorkflowTest;\r
30 import org.openecomp.mso.bpmn.core.domain.ModelInfo;\r
31 import org.openecomp.mso.bpmn.core.domain.ModuleResource;\r
32 import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition;\r
33 import org.openecomp.mso.bpmn.core.domain.VnfResource;\r
34 import org.openecomp.mso.bpmn.mock.FileUtil;\r
35 \r
36 /**\r
37  * Unit Test for the DoUpdateVnfAndModules Flow\r
38  *\r
39  */\r
40 public class DoUpdateVnfAndModulesTest extends WorkflowTest {\r
41 \r
42         private final CallbackSet callbacks = new CallbackSet();\r
43 \r
44         public DoUpdateVnfAndModulesTest() throws IOException { \r
45 \r
46                 callbacks.put("changeassign", FileUtil.readResourceFile(\r
47                                 "__files/VfModularity/SDNCTopologyChangeAssignCallback.xml"));\r
48                 callbacks.put("activate", FileUtil.readResourceFile(\r
49                                 "__files/VfModularity/SDNCTopologyActivateCallback.xml"));\r
50                 callbacks.put("query", FileUtil.readResourceFile(\r
51                                 "__files/VfModularity/SDNCTopologyQueryCallback.xml"));         \r
52                 callbacks.put("vnfUpdate", FileUtil.readResourceFile(\r
53                                 "__files/VfModularity/VNFAdapterRestUpdateCallback.xml"));\r
54         }\r
55 \r
56         @Test\r
57         \r
58         @Deployment(resources = {                       \r
59                         "subprocess/SDNCAdapterV1.bpmn",\r
60                         "subprocess/PrepareUpdateAAIVfModule.bpmn",\r
61                         "subprocess/DoUpdateVfModule.bpmn",\r
62                         "subprocess/DoUpdateVnfAndModules.bpmn",                \r
63                         "subprocess/VnfAdapterRestV1.bpmn",\r
64                         "subprocess/ConfirmVolumeGroupTenant.bpmn",             \r
65                         "subprocess/UpdateAAIVfModule.bpmn",                    \r
66                         "subprocess/UpdateAAIGenericVnf.bpmn"})\r
67         public void testDoUpdateVnfAndModules_success() throws Exception{\r
68                 \r
69                 MockNodeQueryServiceInstanceById("MIS%2F1604%2F0026%2FSW_INTERNET", "GenericFlows/getSIUrlByIdVipr.xml");\r
70                 MockGetServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getServiceInstance.xml");\r
71                 //MockGetGenericVnfById_404("testVnfId");\r
72                 MockGetGenericVnfByIdWithDepth("skask", 1, "VfModularity/GenericVnf.xml");\r
73                 MockPutGenericVnf(".*");\r
74                 MockAAIVfModule();\r
75                 MockPatchGenericVnf("skask");\r
76                 MockPatchVfModuleId("skask", ".*");\r
77                 mockSDNCAdapter("VfModularity/StandardSDNCSynchResponse.xml");  \r
78                 mockVNFPut("skask", "/supercool", 202);\r
79                 mockVNFPut("skask", "/lukewarm", 202);\r
80                 MockVNFAdapterRestVfModule();\r
81                 MockDBUpdateVfModule(); \r
82                 \r
83                 mockSDNCAdapter("VfModularity/StandardSDNCSynchResponse.xml");\r
84                 mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");\r
85 \r
86                 String businessKey = UUID.randomUUID().toString();\r
87                 Map<String, Object> variables = new HashMap<String, Object>();\r
88                 setVariablesSuccess(variables, "", "testRequestId123", "MIS%2F1604%2F0026%2FSW_INTERNET");\r
89                 invokeSubProcess("DoUpdateVnfAndModules", businessKey, variables);\r
90 \r
91                 injectSDNCCallbacks(callbacks, "changeassign, query");\r
92                 injectVNFRestCallbacks(callbacks, "vnfUpdate");\r
93                 injectSDNCCallbacks(callbacks, "activate");\r
94                 injectSDNCCallbacks(callbacks, "changeassign, query");\r
95                 injectVNFRestCallbacks(callbacks, "vnfUpdate");\r
96                 injectSDNCCallbacks(callbacks, "activate");\r
97                 waitForProcessEnd(businessKey, 10000);\r
98 \r
99                 Assert.assertTrue(isProcessEnded(businessKey));\r
100                 assertVariables("2", "200", null);\r
101 \r
102         }\r
103         \r
104         \r
105 \r
106         private void assertVariables(String exModuleCount, String exVnfFound, String exWorkflowException) {\r
107 \r
108                 String moduleCount = BPMNUtil.getVariable(processEngineRule, "DoUpdateVnfAndModules", "DUVAM_moduleCount");             \r
109                 String vnfFound = BPMNUtil.getVariable(processEngineRule, "DoUpdateVnfAndModules", "DUVAM_queryAAIVfModuleResponseCode");               \r
110                 String workflowException = BPMNUtil.getVariable(processEngineRule, "DoUpdateVnfAndModules", "SavedWorkflowException1");\r
111                 \r
112                 assertEquals(exModuleCount, moduleCount);\r
113                 assertEquals(exVnfFound, vnfFound);             \r
114                 assertEquals(exWorkflowException, workflowException);\r
115         }\r
116 \r
117         private void setVariables(Map<String, String> variables, String request, String requestId, String siId) {\r
118                 variables.put("isDebugLogEnabled", "true");\r
119                 variables.put("bpmnRequest", request);\r
120                 variables.put("msoRequestUdid", requestId);\r
121                 variables.put("serviceInstanceId",siId);\r
122                 variables.put("testVnfId","testVnfId123");\r
123                 variables.put("vnfType", "STMTN");\r
124         \r
125         }\r
126 \r
127         private void setVariablesSuccess(Map<String, Object> variables, String request, String requestId, String siId) {\r
128                 variables.put("isDebugLogEnabled", "true");                     \r
129                 variables.put("requestId", requestId);\r
130                 variables.put("msoRequestId", requestId);\r
131                 variables.put("serviceInstanceId",siId);                \r
132                 variables.put("disableRollback", "true");               \r
133                 //variables.put("testVnfId","testVnfId123");\r
134                 variables.put("vnfType", "STMTN");\r
135                 variables.put("vnfId", "skask");\r
136                 variables.put("tenantId", "88a6ca3ee0394ade9403f075db23167e");\r
137                 variables.put("lcpCloudRegionId", "mdt1");\r
138                 \r
139                 String serviceModelInfo = "{ "+ "\"modelType\": \"service\"," +\r
140                                 "\"modelInvariantUuid\": \"995256d2-5a33-55df-13ab-12abad84e7ff\"," +\r
141                                 "\"modelUuid\": \"ab6478e5-ea33-3346-ac12-ab121484a3fe\"," +\r
142                                 "\"modelName\": \"ServicevSAMP12\"," +\r
143                                 "\"modelVersion\": \"1.0\"," +\r
144                                 "}";\r
145                 variables.put("serviceModelInfo", serviceModelInfo);\r
146                 variables.put("productFamilyId", "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb");\r
147                 String vnfModelInfo = "{" + "\"modelType\": \"vnf\"," +\r
148                                 "\"modelInvariantUuid\": \"ff5256d2-5a33-55df-13ab-12abad84e7ff\"," +\r
149                                 "\"modelUuid\": \"fe6478e5-ea33-3346-ac12-ab121484a3fe\"," +\r
150                                 "\"modelName\": \"vSAMP12\"," +\r
151                                 "\"modelVersion\": \"1.0\"," + \r
152                                 "\"modelCustomizationUuid\": \"MODEL-ID-1234\"" + "}";\r
153                 variables.put("vnfModelInfo", vnfModelInfo);\r
154 \r
155                 String cloudConfiguration = "{" + "\"cloudConfiguration\": { " +\r
156                                 "\"lcpCloudRegionId\": \"mdt1\"," +\r
157                                 "\"tenantId\": \"88a6ca3ee0394ade9403f075db23167e\"" + "}}";\r
158                 variables.put("cloudConfiguration", cloudConfiguration);\r
159                 variables.put("sdncVersion", "1702");\r
160                 variables.put("globalSubscriberId", "subscriber123");\r
161                 variables.put("asdcServiceModelVersion", "serviceVersion01");\r
162                 \r
163                 try {                                           \r
164                         VnfResource vr = new VnfResource();\r
165                         ModelInfo mvr = new ModelInfo();\r
166                         mvr.setModelName("vSAMP12");\r
167                         mvr.setModelInstanceName("v123");\r
168                         mvr.setModelInvariantUuid("extrovert");\r
169                         mvr.setModelVersion("1.0");\r
170                         mvr.setModelCustomizationUuid("MODEL-ID-1234");\r
171                         vr.setModelInfo(mvr);\r
172                         vr.constructVnfType("vnf1");                    \r
173                         vr.setNfType("somenftype");\r
174                         vr.setNfRole("somenfrole");\r
175                         vr.setNfFunction("somenffunction");\r
176                         vr.setNfNamingCode("somenamingcode");   \r
177                         ModuleResource mr = new ModuleResource();\r
178                         ModelInfo mvmr = new ModelInfo();\r
179                         mvmr.setModelInvariantUuid("introvert");\r
180                         mvmr.setModelName("STMTN5MMSC21-MMSC::model-1-0");\r
181                         mvmr.setModelVersion("1");\r
182                         mvmr.setModelCustomizationUuid("MODEL-123");\r
183                         mr.setModelInfo(mvmr);\r
184                         mr.setIsBase(true);\r
185                         mr.setVfModuleLabel("MODULELABEL");\r
186                         vr.addVfModule(mr);\r
187                         ModuleResource mr1 = new ModuleResource();\r
188                         ModelInfo mvmr1 = new ModelInfo();\r
189                         mvmr1.setModelInvariantUuid("extrovert");\r
190                         mvmr1.setModelName("SECONDMODELNAME");\r
191                         mvmr1.setModelVersion("1");\r
192                         mvmr1.setModelCustomizationUuid("MODEL-123");\r
193                         mr1.setModelInfo(mvmr1);\r
194                         mr1.setIsBase(false);\r
195                         mr1.setVfModuleLabel("MODULELABEL1");\r
196                         vr.addVfModule(mr1);                    \r
197                         variables.put("vnfResourceDecomposition", vr);\r
198                         variables.put("isTest", true);\r
199                 } catch(Exception e) {\r
200                         \r
201                 }\r
202                 \r
203         }\r
204                 \r
205         \r
206 }\r