2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.openecomp.sdc.ci.tests.execute.resource;
23 import static org.openecomp.sdc.ci.tests.utils.rest.BaseRestUtils.STATUS_CODE_SUCCESS;
24 import static org.testng.AssertJUnit.assertEquals;
25 import static org.testng.AssertJUnit.assertFalse;
26 import static org.testng.AssertJUnit.assertNotNull;
27 import static org.testng.AssertJUnit.assertTrue;
29 import java.io.IOException;
30 import java.util.ArrayList;
31 import java.util.Arrays;
32 import java.util.List;
35 import org.apache.http.client.ClientProtocolException;
36 import org.junit.rules.TestName;
37 import org.openecomp.sdc.be.dao.api.ActionStatus;
38 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
39 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
40 import org.openecomp.sdc.be.model.CapReqDef;
41 import org.openecomp.sdc.be.model.CapabilityDefinition;
42 import org.openecomp.sdc.be.model.ComponentInstance;
43 import org.openecomp.sdc.be.model.RelationshipImpl;
44 import org.openecomp.sdc.be.model.RequirementAndRelationshipPair;
45 import org.openecomp.sdc.be.model.RequirementCapabilityRelDef;
46 import org.openecomp.sdc.be.model.RequirementDefinition;
47 import org.openecomp.sdc.be.model.Resource;
48 import org.openecomp.sdc.be.model.User;
49 import org.openecomp.sdc.ci.tests.api.ComponentBaseTest;
50 import org.openecomp.sdc.ci.tests.datatypes.ResourceReqDetails;
51 import org.openecomp.sdc.ci.tests.datatypes.enums.LifeCycleStatesEnum;
52 import org.openecomp.sdc.ci.tests.datatypes.enums.NormativeTypesEnum;
53 import org.openecomp.sdc.ci.tests.datatypes.enums.ResourceCategoryEnum;
54 import org.openecomp.sdc.ci.tests.datatypes.enums.UserRoleEnum;
55 import org.openecomp.sdc.ci.tests.datatypes.http.RestResponse;
56 import org.openecomp.sdc.ci.tests.utils.general.ElementFactory;
57 import org.openecomp.sdc.ci.tests.utils.rest.ComponentInstanceRestUtils;
58 import org.openecomp.sdc.ci.tests.utils.rest.ComponentRestUtils;
59 import org.openecomp.sdc.ci.tests.utils.rest.LifecycleRestUtils;
60 import org.openecomp.sdc.ci.tests.utils.rest.ResourceRestUtils;
61 import org.openecomp.sdc.ci.tests.utils.rest.ResponseParser;
62 import org.openecomp.sdc.ci.tests.utils.validation.ErrorValidationUtils;
63 import org.testng.annotations.BeforeMethod;
64 import org.testng.annotations.Test;
66 public class ComponentRelationshipInVfTest extends ComponentBaseTest {
68 public ComponentRelationshipInVfTest() {
69 super(new TestName(), ComponentRelationshipInVfTest.class.getName());
72 private ResourceReqDetails resourceDetailsVF;
73 private User designerUser;
74 private User adminUser;
75 private User testerUser;
76 private ResourceReqDetails resourceDetailsReq;
77 private ResourceReqDetails resourceDetailsCap;
80 public void before() throws Exception {
81 designerUser = ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER);
82 adminUser = ElementFactory.getDefaultUser(UserRoleEnum.ADMIN);
83 testerUser = ElementFactory.getDefaultUser(UserRoleEnum.TESTER);
85 resourceDetailsVF = ElementFactory.getDefaultResourceByType("VF100", NormativeTypesEnum.ROOT,
86 ResourceCategoryEnum.GENERIC_INFRASTRUCTURE, designerUser.getUserId(), ResourceTypeEnum.VF.toString());
87 createResource(resourceDetailsVF, designerUser);
89 resourceDetailsReq = ElementFactory.getDefaultResourceByType("SoftCompRouter",
90 NormativeTypesEnum.SOFTWARE_COMPONENT, ResourceCategoryEnum.NETWORK_L2_3_ROUTERS,
91 designerUser.getUserId(), ResourceTypeEnum.CP.toString()); // resourceType
94 resourceDetailsCap = ElementFactory.getDefaultResourceByType("MyCompute", NormativeTypesEnum.COMPUTE,
95 ResourceCategoryEnum.NETWORK_L2_3_ROUTERS, designerUser.getUserId(), ResourceTypeEnum.CP.toString()); // resourceType
101 private void createResource(ResourceReqDetails resourceDetails, User user) throws Exception, IOException {
102 RestResponse createResourceResponse = ResourceRestUtils.createResource(resourceDetails, user);
103 ResourceRestUtils.checkCreateResponse(createResourceResponse);
104 if (!resourceDetails.getResourceType().equals("VF"))
105 LifecycleRestUtils.changeResourceState(resourceDetails, user, "0.1", LifeCycleStatesEnum.CHECKIN);
108 private void createAtomicResource(ResourceReqDetails resourceDetails, User user) throws Exception {
109 createResource(resourceDetails, user);
112 private RequirementCapabilityRelDef setRelationshipBetweenInstances(ComponentInstance riReq,
113 ComponentInstance riCap, CapReqDef capReqDef) throws Exception {
115 String capbilityUid = capReqDef.getCapabilities().get("tosca.capabilities.Container").get(0).getUniqueId();
116 String requirementUid = capReqDef.getRequirements().get("tosca.capabilities.Container").get(0).getUniqueId();
118 RequirementCapabilityRelDef requirementDef = new RequirementCapabilityRelDef();
119 requirementDef.setFromNode(riReq.getUniqueId());
120 requirementDef.setToNode(riCap.getUniqueId());
122 RequirementAndRelationshipPair pair = new RequirementAndRelationshipPair();
123 pair.setRequirementOwnerId(riReq.getUniqueId());
124 pair.setCapabilityOwnerId(riCap.getUniqueId());
125 pair.setRequirement("host");
126 RelationshipImpl relationship = new RelationshipImpl();
127 relationship.setType("tosca.capabilities.Container");
128 pair.setRelationships(relationship);
129 pair.setCapabilityUid(capbilityUid);
130 pair.setRequirementUid(requirementUid);
131 List<RequirementAndRelationshipPair> relationships = new ArrayList<>();
132 relationships.add(pair);
133 requirementDef.setRelationships(relationships);
134 return requirementDef;
137 private ComponentInstance createComponentInstance(ResourceReqDetails res) throws Exception {
138 return createComponentInstance(res, designerUser);
141 private ComponentInstance createComponentInstance(ResourceReqDetails res, User user, ResourceReqDetails vf)
143 RestResponse response = ResourceRestUtils.createResourceInstance(res, user, vf.getUniqueId());
144 ResourceRestUtils.checkCreateResponse(response);
145 ComponentInstance compInstance = ResponseParser.parseToObject(response.getResponse(), ComponentInstance.class);
149 private ComponentInstance createComponentInstance(ResourceReqDetails res, User user) throws Exception {
150 return createComponentInstance(res, user, resourceDetailsVF);
153 private void createTwoAtomicResourcesByType(String reqType, String capType, User user1, User user2)
155 resourceDetailsReq.setResourceType(reqType);
156 createAtomicResource(resourceDetailsReq, user1);
157 resourceDetailsCap.setResourceType(capType);
158 createAtomicResource(resourceDetailsCap, user2);
161 private void createTwoAtomicResourcesByType(String reqType, String capType) throws Exception {
162 createTwoAtomicResourcesByType(reqType, capType, designerUser, designerUser);
166 public void associateInVF() throws Exception {
168 createTwoAtomicResourcesByType(ResourceTypeEnum.VFC.toString(), ResourceTypeEnum.VFC.toString());
170 ComponentInstance riReq = createComponentInstance(resourceDetailsReq);
171 ComponentInstance riCap = createComponentInstance(resourceDetailsCap);
173 CapReqDef capReqDef = getResourceReqCap();
175 List<CapabilityDefinition> capList = capReqDef.getCapabilities().get("tosca.capabilities.Container");
176 List<RequirementDefinition> reqList = capReqDef.getRequirements().get("tosca.capabilities.Container");
178 RequirementCapabilityRelDef requirementDef = new RequirementCapabilityRelDef();
179 requirementDef.setFromNode(riReq.getUniqueId());
180 requirementDef.setToNode(riCap.getUniqueId());
182 RequirementAndRelationshipPair pair = new RequirementAndRelationshipPair();
183 pair.setRequirementOwnerId(riReq.getUniqueId());
184 pair.setCapabilityOwnerId(riCap.getUniqueId());
185 pair.setRequirement("host");
186 RelationshipImpl relationship = new RelationshipImpl();
187 relationship.setType("tosca.capabilities.Container");
188 pair.setRelationships(relationship);
189 pair.setCapabilityUid(capList.get(0).getUniqueId());
190 pair.setRequirementUid(reqList.get(0).getUniqueId());
191 List<RequirementAndRelationshipPair> relationships = new ArrayList<>();
192 relationships.add(pair);
193 requirementDef.setRelationships(relationships);
195 RestResponse associateInstances = ComponentInstanceRestUtils.associateInstances(requirementDef, designerUser,
196 resourceDetailsVF.getUniqueId(), ComponentTypeEnum.RESOURCE);
197 assertEquals("Check response code ", STATUS_CODE_SUCCESS, associateInstances.getErrorCode().intValue());
199 RestResponse getResourceResponse = ComponentRestUtils.getComponentRequirmentsCapabilities(designerUser,
201 capReqDef = ResponseParser.parseToObject(getResourceResponse.getResponse(), CapReqDef.class);
203 List<RequirementDefinition> list = capReqDef.getRequirements().get("tosca.capabilities.Container");
204 assertEquals("Check requirement", null, list);
206 RestResponse dissociateInstances = ComponentInstanceRestUtils.dissociateInstances(requirementDef, designerUser,
207 resourceDetailsVF.getUniqueId(), ComponentTypeEnum.RESOURCE);
208 assertEquals("Check response code ", STATUS_CODE_SUCCESS, dissociateInstances.getErrorCode().intValue());
210 getResourceResponse = ComponentRestUtils.getComponentRequirmentsCapabilities(designerUser, resourceDetailsVF);
211 capReqDef = ResponseParser.parseToObject(getResourceResponse.getResponse(), CapReqDef.class);
213 list = capReqDef.getRequirements().get("tosca.capabilities.Container");
214 assertEquals("Check requirement", 1, list.size());
217 //////////////////////////////// Q A //////////////////////////////
218 private boolean checkRealtionship(String fromNode, String toNode, String resourceUniqueId) throws Exception {
219 List<RequirementCapabilityRelDef> componentInstancesRelations = getComponentInstancesRelations(
221 RequirementCapabilityRelDef requirementCapabilityRelDef = componentInstancesRelations.get(0);
222 boolean fromNodeCheck = requirementCapabilityRelDef.getFromNode().equals(fromNode);
223 boolean toNodeCheck = requirementCapabilityRelDef.getToNode().equals(toNode);
225 return fromNodeCheck && toNodeCheck;
228 private List<RequirementCapabilityRelDef> getComponentInstancesRelations(String resourceUniqueId)
229 throws ClientProtocolException, IOException {
230 Resource resource = getVfAsResourceObject(resourceUniqueId);
231 List<RequirementCapabilityRelDef> componenRelationInstances = resource.getComponentInstancesRelations();
233 return componenRelationInstances;
236 private Resource getVfAsResourceObject(String resourceUniqueId) throws ClientProtocolException, IOException {
237 RestResponse getResource = ResourceRestUtils.getResource(resourceUniqueId);
238 Resource resource = ResponseParser.parseToObjectUsingMapper(getResource.getResponse(), Resource.class);
242 private List<ComponentInstance> getComponentInstancesList(String resourceUniqueId) throws Exception {
243 Resource resource = getVfAsResourceObject(resourceUniqueId);
244 List<ComponentInstance> componentInstances = resource.getComponentInstances();
245 return componentInstances;
249 public void associateCpToCpTest() throws Exception {
250 createTwoAtomicResourcesByType(ResourceTypeEnum.CP.toString(), ResourceTypeEnum.CP.toString());
252 ComponentInstance riReq = createComponentInstance(resourceDetailsReq);
253 ComponentInstance riCap = createComponentInstance(resourceDetailsCap);
255 CapReqDef capReqDefBeforeAssociate = getResourceReqCap();
257 Map<String, List<CapabilityDefinition>> capabilitiesBeforeAssociate = capReqDefBeforeAssociate
259 Map<String, List<RequirementDefinition>> requirementsBeforeAssociate = capReqDefBeforeAssociate
262 RequirementCapabilityRelDef requirementDef = setRelationshipBetweenInstances(riReq, riCap,
263 capReqDefBeforeAssociate);
265 RestResponse associateInstances = ComponentInstanceRestUtils.associateInstances(requirementDef, designerUser,
266 resourceDetailsVF.getUniqueId(), ComponentTypeEnum.RESOURCE);
267 assertEquals("Check response code ", STATUS_CODE_SUCCESS, associateInstances.getErrorCode().intValue());
268 assertTrue(checkRealtionship(requirementDef.getFromNode(), requirementDef.getToNode(),
269 resourceDetailsVF.getUniqueId()));
271 CapReqDef capReqDef = getResourceReqCap();
273 requirementsBeforeAssociate.remove("tosca.capabilities.Container");
274 assertTrue(capReqDef.getRequirements().equals(requirementsBeforeAssociate));
276 List<CapabilityDefinition> list = capabilitiesBeforeAssociate.get("tosca.capabilities.Container");
277 for (CapabilityDefinition cap : list) {
278 cap.setMinOccurrences("0");
281 Map<String, List<CapabilityDefinition>> capabilitiesAfterAssociate = capReqDef.getCapabilities();
282 assertTrue(capabilitiesAfterAssociate.equals(capabilitiesBeforeAssociate));
285 private CapReqDef getResourceReqCap(ResourceReqDetails res) throws IOException {
286 RestResponse getResourceBeforeAssociate = ComponentRestUtils.getComponentRequirmentsCapabilities(designerUser,
288 CapReqDef capReqDef = ResponseParser.parseToObject(getResourceBeforeAssociate.getResponse(), CapReqDef.class);
292 private CapReqDef getResourceReqCap() throws IOException {
293 return getResourceReqCap(resourceDetailsVF);
297 public void associateCpToVLTest() throws Exception {
298 createTwoAtomicResourcesByType(ResourceTypeEnum.CP.toString(), ResourceTypeEnum.VL.toString());
300 ComponentInstance riReq = createComponentInstance(resourceDetailsReq);
301 ComponentInstance riCap = createComponentInstance(resourceDetailsCap);
303 CapReqDef capReqDefBeforeAssociate = getResourceReqCap();
304 Map<String, List<CapabilityDefinition>> capabilitiesBeforeAssociate = capReqDefBeforeAssociate
306 Map<String, List<RequirementDefinition>> requirementsBeforeAssociate = capReqDefBeforeAssociate
309 RequirementCapabilityRelDef requirementDef = setRelationshipBetweenInstances(riReq, riCap,
310 capReqDefBeforeAssociate);
312 RestResponse associateInstances = ComponentInstanceRestUtils.associateInstances(requirementDef, designerUser,
313 resourceDetailsVF.getUniqueId(), ComponentTypeEnum.RESOURCE);
314 assertEquals("Check response code ", STATUS_CODE_SUCCESS, associateInstances.getErrorCode().intValue());
315 assertTrue(checkRealtionship(requirementDef.getFromNode(), requirementDef.getToNode(),
316 resourceDetailsVF.getUniqueId()));
318 CapReqDef capReqDef = getResourceReqCap();
320 requirementsBeforeAssociate.remove("tosca.capabilities.Container");
321 assertTrue(capReqDef.getRequirements().equals(requirementsBeforeAssociate));
323 List<CapabilityDefinition> list = capabilitiesBeforeAssociate.get("tosca.capabilities.Container");
324 for (CapabilityDefinition cap : list) {
325 cap.setMinOccurrences("0");
328 Map<String, List<CapabilityDefinition>> capabilitiesAfterAssociate = capReqDef.getCapabilities();
329 assertTrue(capabilitiesAfterAssociate.equals(capabilitiesBeforeAssociate));
334 // ELLA - more informative error
336 public void associateCpToVlInVFCTest() throws Exception {
337 ResourceReqDetails vfcDetails = ElementFactory.getDefaultResourceByType("VFC100", NormativeTypesEnum.ROOT,
338 ResourceCategoryEnum.GENERIC_INFRASTRUCTURE, designerUser.getUserId(), ResourceTypeEnum.VFC.toString());
339 RestResponse createVfcResponse = ResourceRestUtils.createResource(vfcDetails, designerUser);
340 ResourceRestUtils.checkCreateResponse(createVfcResponse);
342 createTwoAtomicResourcesByType(ResourceTypeEnum.CP.toString(), ResourceTypeEnum.VL.toString());
344 ComponentInstance riReq = createComponentInstance(resourceDetailsReq);
345 ComponentInstance riCap = createComponentInstance(resourceDetailsCap);
347 CapReqDef capReqDefBeforeAssociate = getResourceReqCap();
349 RequirementCapabilityRelDef requirementDef = setRelationshipBetweenInstances(riReq, riCap,
350 capReqDefBeforeAssociate);
352 RestResponse associateInstances = ComponentInstanceRestUtils.associateInstances(requirementDef, designerUser,
353 vfcDetails.getUniqueId(), ComponentTypeEnum.RESOURCE);
354 assertEquals("Check response code ", 400, associateInstances.getErrorCode().intValue());
356 // "messageId": "SVC4116",
357 // "text": "Error: Invalid Content.",
359 // "SoftCompRouter 1",
367 public void associateCpToVfTest() throws Exception {
368 createTwoAtomicResourcesByType(ResourceTypeEnum.CP.toString(), ResourceTypeEnum.VL.toString());
370 ComponentInstance riCapInVfInstance = createComponentInstance(resourceDetailsCap, designerUser,
372 ComponentInstance riReqInVfInstance = createComponentInstance(resourceDetailsReq, designerUser,
375 ResourceReqDetails vfHigh = new ResourceReqDetails(resourceDetailsVF, "0.1");
376 vfHigh.setName("vfHigh");
377 vfHigh.setTags(new ArrayList<String>(Arrays.asList(vfHigh.getName())));
378 vfHigh.setResourceType(ResourceTypeEnum.VF.toString());
379 createResource(vfHigh, designerUser);
381 ComponentInstance riReq = createComponentInstance(resourceDetailsReq, designerUser, vfHigh);
382 LifecycleRestUtils.changeResourceState(resourceDetailsVF, designerUser, "0.1", LifeCycleStatesEnum.CHECKIN);
383 ComponentInstance riCap = createComponentInstance(resourceDetailsVF, designerUser, vfHigh);
385 CapReqDef capReqDefBeforeAssociate = getResourceReqCap();
387 RequirementCapabilityRelDef requirementDef = setRelationshipBetweenInstances(riReq, riCap,
388 capReqDefBeforeAssociate);
390 RestResponse associateInstances = ComponentInstanceRestUtils.associateInstances(requirementDef, designerUser,
391 resourceDetailsVF.getUniqueId(), ComponentTypeEnum.RESOURCE);
392 assertEquals("Check response code ", 409, associateInstances.getErrorCode().intValue());
393 ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESTRICTED_OPERATION.name(), new ArrayList<String>(),
394 associateInstances.getResponse());
395 // "messageId": "SVC4116",
396 // "text": "Error: Invalid Content.",
398 // "SoftCompRouter 1",
406 public void associateVfcToVfcNotFoundTest() throws Exception {
407 createTwoAtomicResourcesByType(ResourceTypeEnum.VFC.toString(), ResourceTypeEnum.VFC.toString());
409 ComponentInstance riReq = createComponentInstance(resourceDetailsReq);
410 ComponentInstance riCap = createComponentInstance(resourceDetailsCap);
411 riCap.setUniqueId("123");
413 CapReqDef capReqDefBeforeAssociate = getResourceReqCap();
415 RequirementCapabilityRelDef requirementDef = setRelationshipBetweenInstances(riReq, riCap,
416 capReqDefBeforeAssociate);
418 RestResponse associateInstances = ComponentInstanceRestUtils.associateInstances(requirementDef, designerUser,
419 resourceDetailsVF.getUniqueId(), ComponentTypeEnum.RESOURCE);
420 assertEquals("Check response code ", 400, associateInstances.getErrorCode().intValue());
421 ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESOURCE_INSTANCE_BAD_REQUEST.name(),
422 new ArrayList<String>(), associateInstances.getResponse());
424 // "messageId": "SVC4116",
425 // "text": "Error: Invalid Content.",
427 // "SoftCompRouter 1",
428 // "012f6dcd-bcdf-4d9b-87be-ff1442b95831.5d265453-0b6a-4453-8f3d-57a253b88432.softcomprouter1",
433 public void associateCpToDeletedVfcTest() throws Exception {
434 createTwoAtomicResourcesByType(ResourceTypeEnum.CP.toString(), ResourceTypeEnum.VFC.toString());
436 ComponentInstance riReq = createComponentInstance(resourceDetailsReq);
437 ComponentInstance riCap = createComponentInstance(resourceDetailsCap);
439 CapReqDef capReqDefBeforeAssociate = getResourceReqCap();
441 RequirementCapabilityRelDef requirementDef = setRelationshipBetweenInstances(riReq, riCap,
442 capReqDefBeforeAssociate);
444 RestResponse deleteResourceResponse = ResourceRestUtils.deleteResource(resourceDetailsCap.getUniqueId(),
445 designerUser.getUserId());
446 ResourceRestUtils.checkDeleteResponse(deleteResourceResponse);
448 RestResponse associateInstances = ComponentInstanceRestUtils.associateInstances(requirementDef, designerUser,
449 resourceDetailsVF.getUniqueId(), ComponentTypeEnum.RESOURCE);
450 assertEquals("Check response code ", STATUS_CODE_SUCCESS, associateInstances.getErrorCode().intValue());
451 assertTrue(checkRealtionship(requirementDef.getFromNode(), requirementDef.getToNode(),
452 resourceDetailsVF.getUniqueId()));
457 public void associateCpToDeletedVlTest() throws Exception {
458 createTwoAtomicResourcesByType(ResourceTypeEnum.CP.toString(), ResourceTypeEnum.VL.toString());
460 ComponentInstance riReq = createComponentInstance(resourceDetailsReq);
461 ComponentInstance riCap = createComponentInstance(resourceDetailsCap);
463 CapReqDef capReqDefBeforeAssociate = getResourceReqCap();
465 RequirementCapabilityRelDef requirementDef = setRelationshipBetweenInstances(riReq, riCap,
466 capReqDefBeforeAssociate);
468 RestResponse deleteResourceResponse = ResourceRestUtils.deleteResource(resourceDetailsCap.getUniqueId(),
469 designerUser.getUserId());
470 ResourceRestUtils.checkDeleteResponse(deleteResourceResponse);
472 RestResponse associateInstances = ComponentInstanceRestUtils.associateInstances(requirementDef, designerUser,
473 resourceDetailsVF.getUniqueId(), ComponentTypeEnum.RESOURCE);
474 assertEquals("Check response code ", STATUS_CODE_SUCCESS, associateInstances.getErrorCode().intValue());
475 assertTrue(checkRealtionship(requirementDef.getFromNode(), requirementDef.getToNode(),
476 resourceDetailsVF.getUniqueId()));
481 public void associateCpToDeletedCpTest() throws Exception {
482 createTwoAtomicResourcesByType(ResourceTypeEnum.CP.toString(), ResourceTypeEnum.CP.toString());
484 ComponentInstance riReq = createComponentInstance(resourceDetailsReq);
485 ComponentInstance riCap = createComponentInstance(resourceDetailsCap);
487 CapReqDef capReqDefBeforeAssociate = getResourceReqCap();
489 RequirementCapabilityRelDef requirementDef = setRelationshipBetweenInstances(riReq, riCap,
490 capReqDefBeforeAssociate);
492 RestResponse deleteResourceResponse = ResourceRestUtils.deleteResource(resourceDetailsCap.getUniqueId(),
493 designerUser.getUserId());
494 ResourceRestUtils.checkDeleteResponse(deleteResourceResponse);
496 RestResponse associateInstances = ComponentInstanceRestUtils.associateInstances(requirementDef, designerUser,
497 resourceDetailsVF.getUniqueId(), ComponentTypeEnum.RESOURCE);
498 assertEquals("Check response code ", STATUS_CODE_SUCCESS, associateInstances.getErrorCode().intValue());
499 assertTrue(checkRealtionship(requirementDef.getFromNode(), requirementDef.getToNode(),
500 resourceDetailsVF.getUniqueId()));
506 public void associateCpToDeletedCpInstanceTest() throws Exception {
507 createTwoAtomicResourcesByType(ResourceTypeEnum.CP.toString(), ResourceTypeEnum.CP.toString());
509 ComponentInstance riReq = createComponentInstance(resourceDetailsReq);
510 ComponentInstance riCap = createComponentInstance(resourceDetailsCap);
512 CapReqDef capReqDefBeforeAssociate = getResourceReqCap();
513 Map<String, List<CapabilityDefinition>> capabilitiesBeforeAssociate = capReqDefBeforeAssociate
515 Map<String, List<RequirementDefinition>> requirementsBeforeAssociate = capReqDefBeforeAssociate
518 RequirementCapabilityRelDef requirementDef = setRelationshipBetweenInstances(riReq, riCap,
519 capReqDefBeforeAssociate);
521 RestResponse deleteComponentInstance = ComponentInstanceRestUtils.deleteComponentInstance(designerUser,
522 resourceDetailsVF.getUniqueId(), riReq.getUniqueId(), ComponentTypeEnum.RESOURCE);
523 ComponentInstanceRestUtils.checkDeleteResponse(deleteComponentInstance);
525 RestResponse associateInstances = ComponentInstanceRestUtils.associateInstances(requirementDef, designerUser,
526 resourceDetailsVF.getUniqueId(), ComponentTypeEnum.RESOURCE);
527 assertEquals("Check response code ", 400, associateInstances.getErrorCode().intValue());
529 // "messageId": "SVC4116",
530 // "text": "Error: Invalid Content.",
532 // "7d6aca08-9321-4ea1-a781-c52c8214a30e.c0e63466-5283-44d8-adff-365c0885a6ba.softcomprouter1",
540 public void associateVfcToDeletedVFCInstanceTest() throws Exception {
541 createTwoAtomicResourcesByType(ResourceTypeEnum.VFC.toString(), ResourceTypeEnum.VFC.toString());
543 ComponentInstance riReq = createComponentInstance(resourceDetailsReq);
544 ComponentInstance riCap = createComponentInstance(resourceDetailsCap);
546 CapReqDef capReqDefBeforeAssociate = getResourceReqCap();
547 Map<String, List<CapabilityDefinition>> capabilitiesBeforeAssociate = capReqDefBeforeAssociate
549 Map<String, List<RequirementDefinition>> requirementsBeforeAssociate = capReqDefBeforeAssociate
552 RequirementCapabilityRelDef requirementDef = setRelationshipBetweenInstances(riReq, riCap,
553 capReqDefBeforeAssociate);
555 RestResponse deleteComponentInstance = ComponentInstanceRestUtils.deleteComponentInstance(designerUser,
556 resourceDetailsVF.getUniqueId(), riReq.getUniqueId(), ComponentTypeEnum.RESOURCE);
557 ComponentInstanceRestUtils.checkDeleteResponse(deleteComponentInstance);
559 RestResponse associateInstances = ComponentInstanceRestUtils.associateInstances(requirementDef, designerUser,
560 resourceDetailsVF.getUniqueId(), ComponentTypeEnum.RESOURCE);
561 assertEquals("Check response code ", 400, associateInstances.getErrorCode().intValue());
563 // "messageId": "SVC4116",
564 // "text": "Error: Invalid Content.",
566 // "7d6aca08-9321-4ea1-a781-c52c8214a30e.c0e63466-5283-44d8-adff-365c0885a6ba.softcomprouter1",
573 public void associateWithDifferentOwnerOfVf() throws Exception {
574 createTwoAtomicResourcesByType(ResourceTypeEnum.CP.toString(), ResourceTypeEnum.VL.toString());
576 ComponentInstance riReq = createComponentInstance(resourceDetailsReq);
577 ComponentInstance riCap = createComponentInstance(resourceDetailsCap);
579 CapReqDef capReqDefBeforeAssociate = getResourceReqCap();
581 RequirementCapabilityRelDef requirementDef = setRelationshipBetweenInstances(riReq, riCap,
582 capReqDefBeforeAssociate);
584 Map<String, List<CapabilityDefinition>> capabilitiesBeforeAssociate = capReqDefBeforeAssociate
586 Map<String, List<RequirementDefinition>> requirementsBeforeAssociate = capReqDefBeforeAssociate
589 RestResponse associateInstances = ComponentInstanceRestUtils.associateInstances(requirementDef,
590 ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER2), resourceDetailsVF.getUniqueId(),
591 ComponentTypeEnum.RESOURCE);
592 assertEquals("Check response code ", 409, associateInstances.getErrorCode().intValue());
593 ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESTRICTED_OPERATION.name(), new ArrayList<String>(),
594 associateInstances.getResponse());
596 CapReqDef capReqDef = getResourceReqCap();
598 Map<String, List<CapabilityDefinition>> capabilitiesAfterAssociate = capReqDef.getCapabilities();
599 Map<String, List<RequirementDefinition>> requirementsAfterAssociate = capReqDef.getRequirements();
601 assertTrue(capabilitiesAfterAssociate.equals(capabilitiesBeforeAssociate));
602 assertTrue(requirementsAfterAssociate.equals(requirementsBeforeAssociate));
606 public void associateWithTester() throws Exception {
607 createTwoAtomicResourcesByType(ResourceTypeEnum.CP.toString(), ResourceTypeEnum.VL.toString());
609 ComponentInstance riReq = createComponentInstance(resourceDetailsReq);
610 ComponentInstance riCap = createComponentInstance(resourceDetailsCap);
612 CapReqDef capReqDefBeforeAssociate = getResourceReqCap();
614 RequirementCapabilityRelDef requirementDef = setRelationshipBetweenInstances(riReq, riCap,
615 capReqDefBeforeAssociate);
617 Map<String, List<CapabilityDefinition>> capabilitiesBeforeAssociate = capReqDefBeforeAssociate
619 Map<String, List<RequirementDefinition>> requirementsBeforeAssociate = capReqDefBeforeAssociate
622 RestResponse associateInstances = ComponentInstanceRestUtils.associateInstances(requirementDef,
623 ElementFactory.getDefaultUser(UserRoleEnum.TESTER), resourceDetailsVF.getUniqueId(),
624 ComponentTypeEnum.RESOURCE);
625 assertEquals("Check response code ", 409, associateInstances.getErrorCode().intValue());
626 ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESTRICTED_OPERATION.name(), new ArrayList<String>(),
627 associateInstances.getResponse());
629 CapReqDef capReqDef = getResourceReqCap();
631 Map<String, List<CapabilityDefinition>> capabilitiesAfterAssociate = capReqDef.getCapabilities();
632 Map<String, List<RequirementDefinition>> requirementsAfterAssociate = capReqDef.getRequirements();
634 assertTrue(capabilitiesAfterAssociate.equals(capabilitiesBeforeAssociate));
635 assertTrue(requirementsAfterAssociate.equals(requirementsBeforeAssociate));
640 public void associateCpToVLIntoVFNotFound() throws Exception {
641 createTwoAtomicResourcesByType(ResourceTypeEnum.CP.toString(), ResourceTypeEnum.VL.toString());
643 ComponentInstance riReq = createComponentInstance(resourceDetailsReq);
644 ComponentInstance riCap = createComponentInstance(resourceDetailsCap);
646 CapReqDef capReqDefBeforeAssociate = getResourceReqCap();
648 RequirementCapabilityRelDef requirementDef = setRelationshipBetweenInstances(riReq, riCap,
649 capReqDefBeforeAssociate);
651 String uidNotFound = "123";
652 RestResponse associateInstances = ComponentInstanceRestUtils.associateInstances(requirementDef, designerUser,
653 uidNotFound, ComponentTypeEnum.RESOURCE);
654 assertEquals("Check response code ", 404, associateInstances.getErrorCode().intValue());
655 ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESOURCE_NOT_FOUND.name(),
656 new ArrayList<String>(Arrays.asList("")), associateInstances.getResponse());
658 // {"serviceException":{"messageId":"SVC4063","text":"Error: Requested
659 // '%1' resource was not found.","variables":[""]}}}
664 public void associateCpToVlWithMissingUid() throws Exception {
665 createTwoAtomicResourcesByType(ResourceTypeEnum.CP.toString(), ResourceTypeEnum.VL.toString());
667 ComponentInstance riReq = createComponentInstance(resourceDetailsReq);
668 ComponentInstance riCap = createComponentInstance(resourceDetailsCap);
670 CapReqDef capReqDefBeforeAssociate = getResourceReqCap();
672 RequirementCapabilityRelDef requirementDef = setRelationshipBetweenInstances(riReq, riCap,
673 capReqDefBeforeAssociate);
675 requirementDef.setToNode("");
676 RestResponse associateInstances = ComponentInstanceRestUtils.associateInstances(requirementDef, designerUser,
677 resourceDetailsVF.getUniqueId(), ComponentTypeEnum.RESOURCE);
678 assertEquals("Check response code ", 400, associateInstances.getErrorCode().intValue());
679 // ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESTRICTED_OPERATION.name(),
680 // new ArrayList<String>(), associateInstances.getResponse());
682 // "messageId": "SVC4116",
683 // "text": "Error: Invalid Content.",
685 // "SoftCompRouter 1",
686 // "fd3a689b-fa1c-4105-933d-d1310e642f05.95bce626-ce73-413b-8c14-2388d1589d5c.softcomprouter1",
692 public void associateInServiceWithUidOfVf() throws Exception {
693 createTwoAtomicResourcesByType(ResourceTypeEnum.CP.toString(), ResourceTypeEnum.VL.toString());
695 ComponentInstance riReq = createComponentInstance(resourceDetailsReq);
696 ComponentInstance riCap = createComponentInstance(resourceDetailsCap);
698 CapReqDef capReqDefBeforeAssociate = getResourceReqCap();
700 RequirementCapabilityRelDef requirementDef = setRelationshipBetweenInstances(riReq, riCap,
701 capReqDefBeforeAssociate);
703 RestResponse associateInstances = ComponentInstanceRestUtils.associateInstances(requirementDef, designerUser,
704 resourceDetailsVF.getUniqueId(), ComponentTypeEnum.SERVICE);
705 assertEquals("Check response code ", 404, associateInstances.getErrorCode().intValue());
706 ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.SERVICE_NOT_FOUND.name(),
707 new ArrayList<String>(Arrays.asList("")), associateInstances.getResponse());
711 public void associateCpToVl_DifferentOwners() throws Exception {
712 createTwoAtomicResourcesByType(ResourceTypeEnum.CP.toString(), ResourceTypeEnum.VL.toString(), designerUser,
713 ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER2));
715 ComponentInstance riReq = createComponentInstance(resourceDetailsReq);
716 ComponentInstance riCap = createComponentInstance(resourceDetailsCap);
718 CapReqDef capReqDefBeforeAssociate = getResourceReqCap();
720 Map<String, List<CapabilityDefinition>> capabilitiesBeforeAssociate = capReqDefBeforeAssociate
722 Map<String, List<RequirementDefinition>> requirementsBeforeAssociate = capReqDefBeforeAssociate
725 RequirementCapabilityRelDef requirementDef = setRelationshipBetweenInstances(riReq, riCap,
726 capReqDefBeforeAssociate);
728 RestResponse associateInstances = ComponentInstanceRestUtils.associateInstances(requirementDef, designerUser,
729 resourceDetailsVF.getUniqueId(), ComponentTypeEnum.RESOURCE);
730 assertEquals("Check response code ", STATUS_CODE_SUCCESS, associateInstances.getErrorCode().intValue());
731 assertTrue(checkRealtionship(requirementDef.getFromNode(), requirementDef.getToNode(),
732 resourceDetailsVF.getUniqueId()));
734 CapReqDef capReqDef = getResourceReqCap();
736 requirementsBeforeAssociate.remove("tosca.capabilities.Container");
737 assertTrue(capReqDef.getRequirements().equals(requirementsBeforeAssociate));
739 List<CapabilityDefinition> list = capabilitiesBeforeAssociate.get("tosca.capabilities.Container");
740 for (CapabilityDefinition cap : list) {
741 cap.setMinOccurrences("0");
744 Map<String, List<CapabilityDefinition>> capabilitiesAfterAssociate = capReqDef.getCapabilities();
745 assertTrue(capabilitiesAfterAssociate.equals(capabilitiesBeforeAssociate));
748 @Test(enabled = false)
749 public void associateToNotCheckedoutVf() throws Exception {
750 createTwoAtomicResourcesByType(ResourceTypeEnum.CP.toString(), ResourceTypeEnum.VL.toString());
752 ComponentInstance riReq = createComponentInstance(resourceDetailsReq);
753 ComponentInstance riCap = createComponentInstance(resourceDetailsCap);
755 CapReqDef capReqDefBeforeAssociate = getResourceReqCap();
756 Map<String, List<CapabilityDefinition>> capabilitiesBeforeAssociate = capReqDefBeforeAssociate
758 Map<String, List<RequirementDefinition>> requirementsBeforeAssociate = capReqDefBeforeAssociate
761 RequirementCapabilityRelDef requirementDef = setRelationshipBetweenInstances(riReq, riCap,
762 capReqDefBeforeAssociate);
764 RestResponse changeResourceStateToCheckin = LifecycleRestUtils.changeResourceState(resourceDetailsVF,
765 designerUser, LifeCycleStatesEnum.CHECKIN);
766 LifecycleRestUtils.checkSuccess(changeResourceStateToCheckin);
768 RestResponse associateInstances = ComponentInstanceRestUtils.associateInstances(requirementDef, designerUser,
769 resourceDetailsVF.getUniqueId(), ComponentTypeEnum.RESOURCE);
770 assertEquals("Check response code ", 409, associateInstances.getErrorCode().intValue());
771 ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESTRICTED_OPERATION.name(), new ArrayList<String>(),
772 associateInstances.getResponse());
774 CapReqDef capReqDef = getResourceReqCap();
775 assertTrue(capReqDef.getRequirements().equals(requirementsBeforeAssociate));
776 assertTrue(capReqDef.getCapabilities().equals(capabilitiesBeforeAssociate));
778 String firstUniqueId = resourceDetailsVF.getUniqueId();
782 RestResponse changeResourceStateToCheckout = LifecycleRestUtils.changeResourceState(resourceDetailsVF,
783 designerUser, LifeCycleStatesEnum.CHECKOUT);
784 LifecycleRestUtils.checkSuccess(changeResourceStateToCheckout);
785 String secondUniqueId = resourceDetailsVF.getUniqueId();
787 CapReqDef capReqDefAfterFirstCheckout = getResourceReqCap();
788 Map<String, List<CapabilityDefinition>> capabilitiesAfterFirstCheckout = capReqDefAfterFirstCheckout
790 Map<String, List<RequirementDefinition>> requirementsAfterFirstCheckout = capReqDefAfterFirstCheckout
793 requirementDef = setUidsOfInstancesAfterLifecycleStateChange(riReq, riCap, capReqDefBeforeAssociate);
795 RestResponse firstAssociateInstances = ComponentInstanceRestUtils.associateInstances(requirementDef,
796 designerUser, resourceDetailsVF.getUniqueId(), ComponentTypeEnum.RESOURCE);
797 assertEquals("Check response code ", STATUS_CODE_SUCCESS, firstAssociateInstances.getErrorCode().intValue());
798 assertTrue(checkRealtionship(requirementDef.getFromNode(), requirementDef.getToNode(),
799 resourceDetailsVF.getUniqueId()));
801 CapReqDef capReqDefAfterFirstAssociate = getResourceReqCap();
802 Map<String, List<CapabilityDefinition>> capabilitiesAfterFirstAssociate = capReqDefAfterFirstAssociate
804 Map<String, List<RequirementDefinition>> requirementsAfterFirstAssociate = capReqDefAfterFirstAssociate
807 requirementsAfterFirstCheckout.remove("tosca.capabilities.Container");
808 assertTrue(requirementsAfterFirstAssociate.equals(requirementsAfterFirstCheckout));
809 assertTrue(capabilitiesAfterFirstAssociate.equals(capabilitiesAfterFirstCheckout));
811 resourceDetailsVF.setUniqueId(firstUniqueId);
812 CapReqDef capReqDefOfFirstVersion = getResourceReqCap();
813 Map<String, List<CapabilityDefinition>> capabilitiesOfFirstVersion = capReqDefOfFirstVersion.getCapabilities();
814 Map<String, List<RequirementDefinition>> requirementsOfFirstVersion = capReqDefOfFirstVersion.getRequirements();
816 assertTrue(getComponentInstancesRelations(resourceDetailsVF.getUniqueId()).isEmpty());
817 assertTrue(requirementsBeforeAssociate.equals(requirementsOfFirstVersion));
818 assertTrue(capabilitiesBeforeAssociate.equals(capabilitiesOfFirstVersion));
821 resourceDetailsVF.setUniqueId(secondUniqueId);
822 RestResponse changeResourceStateToCheckin2 = LifecycleRestUtils.changeResourceState(resourceDetailsVF,
823 designerUser, LifeCycleStatesEnum.CHECKIN);
824 LifecycleRestUtils.checkSuccess(changeResourceStateToCheckin2);
825 RestResponse changeResourceStateToCheckout2 = LifecycleRestUtils.changeResourceState(resourceDetailsVF,
826 designerUser, LifeCycleStatesEnum.CHECKOUT);
827 LifecycleRestUtils.checkSuccess(changeResourceStateToCheckout2);
829 List<RequirementCapabilityRelDef> componentInstancesRelations = getComponentInstancesRelations(
830 resourceDetailsVF.getUniqueId());
831 assertFalse(componentInstancesRelations.isEmpty());
832 assertEquals(1, componentInstancesRelations.size());
833 List<ComponentInstance> componentInstancesList = getComponentInstancesList(resourceDetailsVF.getUniqueId());
834 for (ComponentInstance comp : componentInstancesList) {
835 String instanceUid = comp.getUniqueId();
836 assertTrue(checkNodesInRelations(instanceUid, componentInstancesRelations.get(0)));
838 assertEquals(2, componentInstancesList.size());
842 private RequirementCapabilityRelDef setUidsOfInstancesAfterLifecycleStateChange(ComponentInstance riReq,
843 ComponentInstance riCap, CapReqDef capReqDefBeforeAssociate)
844 throws ClientProtocolException, IOException, Exception {
845 RequirementCapabilityRelDef requirementDef;
846 // RestResponse getResourceResponse =
847 // ResourceRestUtils.getResource(resourceDetailsVF.getUniqueId());
848 // Resource resource_0_2 =
849 // ResponseParser.parseToObjectUsingMapper(getResourceResponse.getResponse(),
851 // List<ComponentInstance> componentInstances =
852 // resource_0_2.getComponentInstances();
853 List<ComponentInstance> componentInstances = getComponentInstancesList(resourceDetailsVF.getUniqueId());
855 for (ComponentInstance comp : componentInstances) {
856 if (comp.getName().equals(riReq.getName())) {
857 riReq.setUniqueId(comp.getUniqueId());
858 } else if (comp.getName().equals(riCap.getName())) {
859 riCap.setUniqueId(comp.getUniqueId());
862 requirementDef = setRelationshipBetweenInstances(riReq, riCap, capReqDefBeforeAssociate);
863 return requirementDef;
866 private boolean checkNodesInRelations(String instanceUid, RequirementCapabilityRelDef relation) {
867 if (relation.getToNode().equals(instanceUid)) {
869 } else if (relation.getFromNode().equals(instanceUid)) {
877 public void associateOneOfTwoCPsToVl_ThenDiscocciate() throws Exception {
878 createTwoAtomicResourcesByType(ResourceTypeEnum.CP.toString(), ResourceTypeEnum.VL.toString());
879 ResourceReqDetails secondResourceDetailsReq = new ResourceReqDetails(resourceDetailsReq, "0.1");
880 secondResourceDetailsReq.setName("secondCP");
881 secondResourceDetailsReq.setTags(Arrays.asList(secondResourceDetailsReq.getName()));
882 createAtomicResource(secondResourceDetailsReq, designerUser);
884 ComponentInstance riReq = createComponentInstance(resourceDetailsReq);
885 ComponentInstance riReq2 = createComponentInstance(secondResourceDetailsReq);
886 ComponentInstance riCap = createComponentInstance(resourceDetailsCap);
888 CapReqDef capReqDefBeforeAssociate = getResourceReqCap();
890 Map<String, List<CapabilityDefinition>> capabilitiesBeforeAssociate = capReqDefBeforeAssociate
892 Map<String, List<RequirementDefinition>> requirementsBeforeAssociate = capReqDefBeforeAssociate
895 RequirementCapabilityRelDef requirementDef = setRelationshipBetweenInstances(riReq, riCap,
896 capReqDefBeforeAssociate);
898 RestResponse associateInstances = ComponentInstanceRestUtils.associateInstances(requirementDef, designerUser,
899 resourceDetailsVF.getUniqueId(), ComponentTypeEnum.RESOURCE);
900 assertEquals("Check response code ", STATUS_CODE_SUCCESS, associateInstances.getErrorCode().intValue());
901 assertTrue(checkRealtionship(requirementDef.getFromNode(), requirementDef.getToNode(),
902 resourceDetailsVF.getUniqueId()));
904 CapReqDef capReqDef = getResourceReqCap();
906 List<RequirementDefinition> expectedList = requirementsBeforeAssociate.get("tosca.capabilities.Container");
907 for (RequirementDefinition req : expectedList) {
908 if (req.getOwnerName().equals(riReq2.getName())) {
909 expectedList = new ArrayList<RequirementDefinition>(Arrays.asList(req));
913 requirementsBeforeAssociate.put("tosca.capabilities.Container", expectedList);
914 assertTrue(capReqDef.getRequirements().equals(requirementsBeforeAssociate));
916 List<CapabilityDefinition> list = capabilitiesBeforeAssociate.get("tosca.capabilities.Container");
917 for (CapabilityDefinition cap : list) {
918 cap.setMinOccurrences("0");
921 Map<String, List<CapabilityDefinition>> capabilitiesAfterAssociate = capReqDef.getCapabilities();
922 assertTrue(capabilitiesAfterAssociate.equals(capabilitiesBeforeAssociate));
924 // second relationship
926 RequirementCapabilityRelDef secondRequirementDef = setRelationshipBetweenInstances(riReq2, riCap,
927 capReqDefBeforeAssociate);
928 RestResponse secondAssociateInstances = ComponentInstanceRestUtils.associateInstances(secondRequirementDef,
929 designerUser, resourceDetailsVF.getUniqueId(), ComponentTypeEnum.RESOURCE);
930 assertEquals("Check response code ", STATUS_CODE_SUCCESS, secondAssociateInstances.getErrorCode().intValue());
931 assertTrue(checkRealtionship(secondRequirementDef.getFromNode(), secondRequirementDef.getToNode(),
932 resourceDetailsVF.getUniqueId()));
934 CapReqDef capReqDefAfterSecondAssociation = getResourceReqCap();
936 requirementsBeforeAssociate.remove("tosca.capabilities.Container");
937 assertTrue(capReqDefAfterSecondAssociation.getRequirements().equals(requirementsBeforeAssociate));
939 Map<String, List<CapabilityDefinition>> capabilitiesAfterSecondAssociate = capReqDefAfterSecondAssociation
941 assertTrue(capabilitiesAfterSecondAssociate.equals(capabilitiesBeforeAssociate));
945 RestResponse dissociateInstances = ComponentInstanceRestUtils.dissociateInstances(secondRequirementDef,
946 designerUser, resourceDetailsVF.getUniqueId(), ComponentTypeEnum.RESOURCE);
947 assertEquals("Check response code ", STATUS_CODE_SUCCESS, dissociateInstances.getErrorCode().intValue());
948 assertTrue(getComponentInstancesRelations(resourceDetailsVF.getUniqueId()).isEmpty());
950 CapReqDef capReqDefAfterDissociation = getResourceReqCap();
951 Map<String, List<CapabilityDefinition>> capabilitiesAfterDissociate = capReqDefAfterDissociation
953 Map<String, List<RequirementDefinition>> requirementsAfterDissociate = capReqDefAfterDissociation
956 assertTrue(capabilitiesAfterDissociate.equals(capReqDef.getCapabilities()));
957 requirementsBeforeAssociate.put("tosca.capabilities.Container", expectedList);
958 assertTrue(requirementsAfterDissociate.equals(requirementsBeforeAssociate));
962 public void associateNotCompitableCapAndReq() throws Exception {
963 resourceDetailsReq = ElementFactory.getDefaultResourceByType("Database", NormativeTypesEnum.DATABASE,
964 ResourceCategoryEnum.NETWORK_L2_3_ROUTERS, designerUser.getUserId(), ResourceTypeEnum.CP.toString()); // resourceType
967 createTwoAtomicResourcesByType(ResourceTypeEnum.CP.toString(), ResourceTypeEnum.VL.toString());
969 ComponentInstance riReq = createComponentInstance(resourceDetailsReq);
970 ComponentInstance riCap = createComponentInstance(resourceDetailsCap);
972 CapReqDef capReqDefBeforeAssociate = getResourceReqCap();
974 Map<String, List<CapabilityDefinition>> capabilitiesBeforeAssociate = capReqDefBeforeAssociate
976 Map<String, List<RequirementDefinition>> requirementsBeforeAssociate = capReqDefBeforeAssociate
979 RequirementCapabilityRelDef requirementDef = setRelationshipBetweenInstances(riReq, riCap,
980 capReqDefBeforeAssociate);
981 assertTrue(requirementDef.getRelationships().size() == 1);
982 String requirement = requirementDef.getRelationships().get(0).getRequirement();
983 RestResponse associateInstances = ComponentInstanceRestUtils.associateInstances(requirementDef, designerUser,
984 resourceDetailsVF.getUniqueId(), ComponentTypeEnum.RESOURCE);
985 assertEquals("Check response code ", 404, associateInstances.getErrorCode().intValue());
986 ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESOURCE_INSTANCE_MATCH_NOT_FOUND.name(),
987 new ArrayList<String>(Arrays.asList(riReq.getName(), riCap.getName(), requirement)),
988 associateInstances.getResponse());
990 CapReqDef capReqDef = getResourceReqCap();
992 Map<String, List<CapabilityDefinition>> capabilitiesAfterAssociate = capReqDef.getCapabilities();
993 Map<String, List<RequirementDefinition>> requirementsAfterAssociate = capReqDef.getRequirements();
995 assertTrue(capabilitiesAfterAssociate.equals(capabilitiesBeforeAssociate));
996 assertTrue(requirementsAfterAssociate.equals(requirementsBeforeAssociate));
1001 public void disassociateCpAndCpTest() throws Exception {
1002 createTwoAtomicResourcesByType(ResourceTypeEnum.CP.toString(), ResourceTypeEnum.CP.toString());
1004 ComponentInstance riReq = createComponentInstance(resourceDetailsReq);
1005 ComponentInstance riCap = createComponentInstance(resourceDetailsCap);
1007 CapReqDef capReqDefBeforeAssociate = getResourceReqCap();
1009 RequirementCapabilityRelDef requirementDef = setRelationshipBetweenInstances(riReq, riCap,
1010 capReqDefBeforeAssociate);
1011 Map<String, List<CapabilityDefinition>> capabilitiesBeforeAssociate = capReqDefBeforeAssociate
1013 Map<String, List<RequirementDefinition>> requirementsBeforeAssociate = capReqDefBeforeAssociate
1016 RestResponse associateInstances = ComponentInstanceRestUtils.associateInstances(requirementDef, designerUser,
1017 resourceDetailsVF.getUniqueId(), ComponentTypeEnum.RESOURCE);
1018 assertEquals("Check response code ", STATUS_CODE_SUCCESS, associateInstances.getErrorCode().intValue());
1019 assertTrue(checkRealtionship(requirementDef.getFromNode(), requirementDef.getToNode(),
1020 resourceDetailsVF.getUniqueId()));
1022 RestResponse dissociateInstances = ComponentInstanceRestUtils.dissociateInstances(requirementDef, designerUser,
1023 resourceDetailsVF.getUniqueId(), ComponentTypeEnum.RESOURCE);
1024 assertEquals("Check response code ", STATUS_CODE_SUCCESS, dissociateInstances.getErrorCode().intValue());
1025 assertTrue(getComponentInstancesRelations(resourceDetailsVF.getUniqueId()).isEmpty());
1027 CapReqDef capReqDefAfterDissociate = getResourceReqCap();
1029 List<RequirementDefinition> listOfRequierments = capReqDefAfterDissociate.getRequirements()
1030 .get("tosca.capabilities.Container");
1031 assertEquals("Check requirement", 1, listOfRequierments.size());
1032 assertTrue(capReqDefAfterDissociate.getRequirements().equals(requirementsBeforeAssociate));
1033 assertTrue(capReqDefAfterDissociate.getCapabilities().equals(capabilitiesBeforeAssociate));
1037 public void disassociateCpAndVfcTest() throws Exception {
1038 createTwoAtomicResourcesByType(ResourceTypeEnum.CP.toString(), ResourceTypeEnum.VFC.toString());
1040 ComponentInstance riReq = createComponentInstance(resourceDetailsReq);
1041 ComponentInstance riCap = createComponentInstance(resourceDetailsCap);
1043 CapReqDef capReqDefBeforeAssociate = getResourceReqCap();
1045 RequirementCapabilityRelDef requirementDef = setRelationshipBetweenInstances(riReq, riCap,
1046 capReqDefBeforeAssociate);
1047 Map<String, List<CapabilityDefinition>> capabilitiesBeforeAssociate = capReqDefBeforeAssociate
1049 Map<String, List<RequirementDefinition>> requirementsBeforeAssociate = capReqDefBeforeAssociate
1052 RestResponse associateInstances = ComponentInstanceRestUtils.associateInstances(requirementDef, designerUser,
1053 resourceDetailsVF.getUniqueId(), ComponentTypeEnum.RESOURCE);
1054 assertEquals("Check response code ", STATUS_CODE_SUCCESS, associateInstances.getErrorCode().intValue());
1055 assertTrue(checkRealtionship(requirementDef.getFromNode(), requirementDef.getToNode(),
1056 resourceDetailsVF.getUniqueId()));
1058 RestResponse dissociateInstances = ComponentInstanceRestUtils.dissociateInstances(requirementDef, designerUser,
1059 resourceDetailsVF.getUniqueId(), ComponentTypeEnum.RESOURCE);
1060 assertEquals("Check response code ", STATUS_CODE_SUCCESS, dissociateInstances.getErrorCode().intValue());
1061 assertTrue(getComponentInstancesRelations(resourceDetailsVF.getUniqueId()).isEmpty());
1063 CapReqDef capReqDefAfterDissociate = getResourceReqCap();
1065 List<RequirementDefinition> listOfRequierments = capReqDefAfterDissociate.getRequirements()
1066 .get("tosca.capabilities.Container");
1067 assertEquals("Check requirement", 1, listOfRequierments.size());
1068 assertTrue(capReqDefAfterDissociate.getRequirements().equals(requirementsBeforeAssociate));
1069 assertTrue(capReqDefAfterDissociate.getCapabilities().equals(capabilitiesBeforeAssociate));
1073 public void disassociateCpAndVLTest() throws Exception {
1074 createTwoAtomicResourcesByType(ResourceTypeEnum.CP.toString(), ResourceTypeEnum.VL.toString());
1076 ComponentInstance riReq = createComponentInstance(resourceDetailsReq);
1077 ComponentInstance riCap = createComponentInstance(resourceDetailsCap);
1079 CapReqDef capReqDefBeforeAssociate = getResourceReqCap();
1081 RequirementCapabilityRelDef requirementDef = setRelationshipBetweenInstances(riReq, riCap,
1082 capReqDefBeforeAssociate);
1083 Map<String, List<CapabilityDefinition>> capabilitiesBeforeAssociate = capReqDefBeforeAssociate
1085 Map<String, List<RequirementDefinition>> requirementsBeforeAssociate = capReqDefBeforeAssociate
1088 RestResponse associateInstances = ComponentInstanceRestUtils.associateInstances(requirementDef, designerUser,
1089 resourceDetailsVF.getUniqueId(), ComponentTypeEnum.RESOURCE);
1090 assertEquals("Check response code ", STATUS_CODE_SUCCESS, associateInstances.getErrorCode().intValue());
1091 assertTrue(checkRealtionship(requirementDef.getFromNode(), requirementDef.getToNode(),
1092 resourceDetailsVF.getUniqueId()));
1094 RestResponse dissociateInstances = ComponentInstanceRestUtils.dissociateInstances(requirementDef, designerUser,
1095 resourceDetailsVF.getUniqueId(), ComponentTypeEnum.RESOURCE);
1096 assertEquals("Check response code ", STATUS_CODE_SUCCESS, dissociateInstances.getErrorCode().intValue());
1097 assertTrue(getComponentInstancesRelations(resourceDetailsVF.getUniqueId()).isEmpty());
1099 CapReqDef capReqDefAfterDissociate = getResourceReqCap();
1101 List<RequirementDefinition> listOfRequierments = capReqDefAfterDissociate.getRequirements()
1102 .get("tosca.capabilities.Container");
1103 assertEquals("Check requirement", 1, listOfRequierments.size());
1104 assertTrue(capReqDefAfterDissociate.getRequirements().equals(requirementsBeforeAssociate));
1105 assertTrue(capReqDefAfterDissociate.getCapabilities().equals(capabilitiesBeforeAssociate));
1109 // in the error should we get the unique id of instances instead of names
1111 public void disassociateNotFoundAssociation() throws Exception {
1112 createTwoAtomicResourcesByType(ResourceTypeEnum.CP.toString(), ResourceTypeEnum.VL.toString());
1114 ComponentInstance riReq = createComponentInstance(resourceDetailsReq);
1115 ComponentInstance riCap = createComponentInstance(resourceDetailsCap);
1117 CapReqDef capReqDefBeforeAssociate = getResourceReqCap();
1119 RequirementCapabilityRelDef requirementDef = setRelationshipBetweenInstances(riReq, riCap,
1120 capReqDefBeforeAssociate);
1121 Map<String, List<CapabilityDefinition>> capabilitiesBeforeAssociate = capReqDefBeforeAssociate
1123 Map<String, List<RequirementDefinition>> requirementsBeforeAssociate = capReqDefBeforeAssociate
1125 String requirementName = requirementDef.getRelationships().get(0).getRequirement();
1127 RestResponse dissociateInstances = ComponentInstanceRestUtils.dissociateInstances(requirementDef, designerUser,
1128 resourceDetailsVF.getUniqueId(), ComponentTypeEnum.RESOURCE);
1129 assertEquals("Check response code ", 404, dissociateInstances.getErrorCode().intValue());
1130 ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESOURCE_INSTANCE_RELATION_NOT_FOUND.name(),
1131 new ArrayList<String>(Arrays.asList(riReq.getName(), riCap.getName(), requirementName)),
1132 dissociateInstances.getResponse());
1134 CapReqDef capReqDefAfterDissociate = getResourceReqCap();
1136 List<RequirementDefinition> listOfRequierments = capReqDefAfterDissociate.getRequirements()
1137 .get("tosca.capabilities.Container");
1138 assertEquals("Check requirement", 1, listOfRequierments.size());
1139 assertTrue(capReqDefAfterDissociate.getRequirements().equals(requirementsBeforeAssociate));
1140 assertTrue(capReqDefAfterDissociate.getCapabilities().equals(capabilitiesBeforeAssociate));
1145 public void disassociateRelationInVfNotFound() throws Exception {
1146 createTwoAtomicResourcesByType(ResourceTypeEnum.CP.toString(), ResourceTypeEnum.VL.toString());
1148 ComponentInstance riReq = createComponentInstance(resourceDetailsReq);
1149 ComponentInstance riCap = createComponentInstance(resourceDetailsCap);
1151 CapReqDef capReqDefBeforeAssociate = getResourceReqCap();
1153 RequirementCapabilityRelDef requirementDef = setRelationshipBetweenInstances(riReq, riCap,
1154 capReqDefBeforeAssociate);
1155 Map<String, List<CapabilityDefinition>> capabilitiesBeforeAssociate = capReqDefBeforeAssociate
1157 Map<String, List<RequirementDefinition>> requirementsBeforeAssociate = capReqDefBeforeAssociate
1160 String uidNotFound = "123";
1161 RestResponse dissociateInstances = ComponentInstanceRestUtils.dissociateInstances(requirementDef, designerUser,
1162 uidNotFound, ComponentTypeEnum.RESOURCE);
1163 assertEquals("Check response code ", 404, dissociateInstances.getErrorCode().intValue());
1164 ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESOURCE_NOT_FOUND.name(),
1165 new ArrayList<String>(Arrays.asList(uidNotFound)), dissociateInstances.getResponse());
1167 // "serviceException": {
1168 // "messageId": "SVC4063",
1169 // "text": "Error: Requested \u0027%1\u0027 resource was not found.",
1176 public void disassociateWithDifferentDesigner() throws Exception {
1177 createTwoAtomicResourcesByType(ResourceTypeEnum.CP.toString(), ResourceTypeEnum.VL.toString());
1179 ComponentInstance riReq = createComponentInstance(resourceDetailsReq);
1180 ComponentInstance riCap = createComponentInstance(resourceDetailsCap);
1182 CapReqDef capReqDefBeforeAssociate = getResourceReqCap();
1184 RequirementCapabilityRelDef requirementDef = setRelationshipBetweenInstances(riReq, riCap,
1185 capReqDefBeforeAssociate);
1186 Map<String, List<CapabilityDefinition>> capabilitiesBeforeAssociate = capReqDefBeforeAssociate
1188 Map<String, List<RequirementDefinition>> requirementsBeforeAssociate = capReqDefBeforeAssociate
1191 RestResponse dissociateInstances = ComponentInstanceRestUtils.dissociateInstances(requirementDef,
1192 ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER2), resourceDetailsVF.getUniqueId(),
1193 ComponentTypeEnum.RESOURCE);
1194 assertEquals("Check response code ", 409, dissociateInstances.getErrorCode().intValue());
1195 ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESTRICTED_OPERATION.name(), new ArrayList<String>(),
1196 dissociateInstances.getResponse());
1198 CapReqDef capReqDefAfterDissociate = getResourceReqCap();
1200 List<RequirementDefinition> listOfRequierments = capReqDefAfterDissociate.getRequirements()
1201 .get("tosca.capabilities.Container");
1202 assertEquals("Check requirement", 1, listOfRequierments.size());
1203 assertTrue(capReqDefAfterDissociate.getRequirements().equals(requirementsBeforeAssociate));
1204 assertTrue(capReqDefAfterDissociate.getCapabilities().equals(capabilitiesBeforeAssociate));
1209 public void disassociateWithTester() throws Exception {
1210 createTwoAtomicResourcesByType(ResourceTypeEnum.CP.toString(), ResourceTypeEnum.VL.toString());
1212 ComponentInstance riReq = createComponentInstance(resourceDetailsReq);
1213 ComponentInstance riCap = createComponentInstance(resourceDetailsCap);
1215 CapReqDef capReqDefBeforeAssociate = getResourceReqCap();
1217 RequirementCapabilityRelDef requirementDef = setRelationshipBetweenInstances(riReq, riCap,
1218 capReqDefBeforeAssociate);
1219 Map<String, List<CapabilityDefinition>> capabilitiesBeforeAssociate = capReqDefBeforeAssociate
1221 Map<String, List<RequirementDefinition>> requirementsBeforeAssociate = capReqDefBeforeAssociate
1224 RestResponse dissociateInstances = ComponentInstanceRestUtils.dissociateInstances(requirementDef,
1225 ElementFactory.getDefaultUser(UserRoleEnum.TESTER), resourceDetailsVF.getUniqueId(),
1226 ComponentTypeEnum.RESOURCE);
1227 assertEquals("Check response code ", 409, dissociateInstances.getErrorCode().intValue());
1228 ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESTRICTED_OPERATION.name(), new ArrayList<String>(),
1229 dissociateInstances.getResponse());
1231 CapReqDef capReqDefAfterDissociate = getResourceReqCap();
1233 List<RequirementDefinition> listOfRequierments = capReqDefAfterDissociate.getRequirements()
1234 .get("tosca.capabilities.Container");
1235 assertNotNull("Requierment is null after disassociate with tester", listOfRequierments);
1236 assertEquals("Check requirement", 1, listOfRequierments.size());
1237 assertTrue(capReqDefAfterDissociate.getRequirements().equals(requirementsBeforeAssociate));
1238 assertTrue(capReqDefAfterDissociate.getCapabilities().equals(capabilitiesBeforeAssociate));
1242 public void disassociateServiceWithUidOfVF() throws Exception {
1243 createTwoAtomicResourcesByType(ResourceTypeEnum.CP.toString(), ResourceTypeEnum.VFC.toString());
1245 ComponentInstance riReq = createComponentInstance(resourceDetailsReq);
1246 ComponentInstance riCap = createComponentInstance(resourceDetailsCap);
1248 CapReqDef capReqDefBeforeAssociate = getResourceReqCap();
1250 RequirementCapabilityRelDef requirementDef = setRelationshipBetweenInstances(riReq, riCap,
1251 capReqDefBeforeAssociate);
1253 RestResponse associateInstances = ComponentInstanceRestUtils.associateInstances(requirementDef, designerUser,
1254 resourceDetailsVF.getUniqueId(), ComponentTypeEnum.RESOURCE);
1255 assertEquals("Check response code ", STATUS_CODE_SUCCESS, associateInstances.getErrorCode().intValue());
1256 assertTrue(checkRealtionship(requirementDef.getFromNode(), requirementDef.getToNode(),
1257 resourceDetailsVF.getUniqueId()));
1259 RestResponse dissociateInstances = ComponentInstanceRestUtils.dissociateInstances(requirementDef, designerUser,
1260 resourceDetailsVF.getUniqueId(), ComponentTypeEnum.SERVICE);
1261 assertEquals("Check response code ", 404, dissociateInstances.getErrorCode().intValue());
1262 ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.SERVICE_NOT_FOUND.name(),
1263 new ArrayList<String>(Arrays.asList("")), dissociateInstances.getResponse());
1265 CapReqDef capReqDefAfterDissociate = getResourceReqCap();
1267 List<RequirementDefinition> listOfRequierments = capReqDefAfterDissociate.getRequirements()
1268 .get("tosca.capabilities.Container");
1269 assertTrue(listOfRequierments == null);
1270 assertTrue(getComponentInstancesRelations(resourceDetailsVF.getUniqueId()).size() != 0);
1274 public void disassociateWithEmptyVfUid() throws Exception {
1275 createTwoAtomicResourcesByType(ResourceTypeEnum.CP.toString(), ResourceTypeEnum.VL.toString());
1277 ComponentInstance riReq = createComponentInstance(resourceDetailsReq);
1278 ComponentInstance riCap = createComponentInstance(resourceDetailsCap);
1280 CapReqDef capReqDefBeforeAssociate = getResourceReqCap();
1282 RequirementCapabilityRelDef requirementDef = setRelationshipBetweenInstances(riReq, riCap,
1283 capReqDefBeforeAssociate);
1284 Map<String, List<CapabilityDefinition>> capabilitiesBeforeAssociate = capReqDefBeforeAssociate
1286 Map<String, List<RequirementDefinition>> requirementsBeforeAssociate = capReqDefBeforeAssociate
1289 RestResponse associateInstances = ComponentInstanceRestUtils.associateInstances(requirementDef, designerUser,
1290 resourceDetailsVF.getUniqueId(), ComponentTypeEnum.RESOURCE);
1291 assertEquals("Check response code ", STATUS_CODE_SUCCESS, associateInstances.getErrorCode().intValue());
1292 assertTrue(checkRealtionship(requirementDef.getFromNode(), requirementDef.getToNode(),
1293 resourceDetailsVF.getUniqueId()));
1295 RestResponse dissociateInstances = ComponentInstanceRestUtils.dissociateInstances(requirementDef, designerUser,
1296 "", ComponentTypeEnum.RESOURCE);
1297 assertEquals("Check response code ", 404, dissociateInstances.getErrorCode().intValue());
1299 CapReqDef capReqDef = getResourceReqCap();
1301 requirementsBeforeAssociate.remove("tosca.capabilities.Container");
1302 assertTrue(capReqDef.getRequirements().equals(requirementsBeforeAssociate));
1304 List<CapabilityDefinition> list = capabilitiesBeforeAssociate.get("tosca.capabilities.Container");
1305 for (CapabilityDefinition cap : list) {
1306 cap.setMinOccurrences("0");
1309 Map<String, List<CapabilityDefinition>> capabilitiesAfterAssociate = capReqDef.getCapabilities();
1310 assertTrue(capabilitiesAfterAssociate.equals(capabilitiesBeforeAssociate));
1314 public void disassociateOneComponentDeleted() throws Exception {
1315 createTwoAtomicResourcesByType(ResourceTypeEnum.CP.toString(), ResourceTypeEnum.VL.toString());
1317 ComponentInstance riReq = createComponentInstance(resourceDetailsReq);
1318 ComponentInstance riCap = createComponentInstance(resourceDetailsCap);
1320 CapReqDef capReqDefBeforeAssociate = getResourceReqCap();
1322 RequirementCapabilityRelDef requirementDef = setRelationshipBetweenInstances(riReq, riCap,
1323 capReqDefBeforeAssociate);
1324 Map<String, List<CapabilityDefinition>> capabilitiesBeforeAssociate = capReqDefBeforeAssociate
1326 Map<String, List<RequirementDefinition>> requirementsBeforeAssociate = capReqDefBeforeAssociate
1329 RestResponse associateInstances = ComponentInstanceRestUtils.associateInstances(requirementDef, designerUser,
1330 resourceDetailsVF.getUniqueId(), ComponentTypeEnum.RESOURCE);
1332 RestResponse deleteResourceResponse = ResourceRestUtils.deleteResource(resourceDetailsCap.getUniqueId(),
1333 designerUser.getUserId());
1334 ResourceRestUtils.checkDeleteResponse(deleteResourceResponse);
1336 RestResponse dissociateInstances = ComponentInstanceRestUtils.dissociateInstances(requirementDef, designerUser,
1337 resourceDetailsVF.getUniqueId(), ComponentTypeEnum.RESOURCE);
1338 assertEquals("Check response code ", STATUS_CODE_SUCCESS, dissociateInstances.getErrorCode().intValue());
1339 assertTrue(getComponentInstancesRelations(resourceDetailsVF.getUniqueId()).isEmpty());
1341 CapReqDef capReqDefAfterDissociate = getResourceReqCap();
1343 List<RequirementDefinition> listOfRequierments = capReqDefAfterDissociate.getRequirements()
1344 .get("tosca.capabilities.Container");
1345 assertEquals("Check requirement", 1, listOfRequierments.size());
1346 assertTrue(capReqDefAfterDissociate.getRequirements().equals(requirementsBeforeAssociate));
1347 assertTrue(capReqDefAfterDissociate.getCapabilities().equals(capabilitiesBeforeAssociate));
1351 public void disassociateNotCheckedoutVf() throws Exception {
1352 createTwoAtomicResourcesByType(ResourceTypeEnum.CP.toString(), ResourceTypeEnum.VL.toString());
1354 ComponentInstance riReq = createComponentInstance(resourceDetailsReq);
1355 ComponentInstance riCap = createComponentInstance(resourceDetailsCap);
1357 CapReqDef capReqDefBeforeAssociate = getResourceReqCap();
1358 Map<String, List<CapabilityDefinition>> capabilitiesBeforeAssociate = capReqDefBeforeAssociate
1360 Map<String, List<RequirementDefinition>> requirementsBeforeAssociate = capReqDefBeforeAssociate
1363 RequirementCapabilityRelDef requirementDef = setRelationshipBetweenInstances(riReq, riCap,
1364 capReqDefBeforeAssociate);
1366 RestResponse changeResourceStateToCheckin = LifecycleRestUtils.changeResourceState(resourceDetailsVF,
1367 designerUser, LifeCycleStatesEnum.CHECKIN);
1368 LifecycleRestUtils.checkSuccess(changeResourceStateToCheckin);
1370 RestResponse dissociateInstances = ComponentInstanceRestUtils.dissociateInstances(requirementDef, designerUser,
1371 resourceDetailsVF.getUniqueId(), ComponentTypeEnum.RESOURCE);
1372 assertEquals("Check response code ", 409, dissociateInstances.getErrorCode().intValue());
1373 ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESTRICTED_OPERATION.name(), new ArrayList<String>(),
1374 dissociateInstances.getResponse());
1376 CapReqDef capReqDefAfterDissociate = getResourceReqCap();
1377 assertTrue(capReqDefAfterDissociate.getRequirements().equals(requirementsBeforeAssociate));
1378 assertTrue(capReqDefAfterDissociate.getCapabilities().equals(capabilitiesBeforeAssociate));
1380 RestResponse changeResourceStateToCheckout = LifecycleRestUtils.changeResourceState(resourceDetailsVF,
1381 designerUser, LifeCycleStatesEnum.CHECKOUT);
1382 LifecycleRestUtils.checkSuccess(changeResourceStateToCheckout);
1384 requirementDef = setUidsOfInstancesAfterLifecycleStateChange(riReq, riCap, capReqDefBeforeAssociate);
1386 RestResponse associateInstances = ComponentInstanceRestUtils.associateInstances(requirementDef, designerUser,
1387 resourceDetailsVF.getUniqueId(), ComponentTypeEnum.RESOURCE);
1388 assertEquals("Check response code ", STATUS_CODE_SUCCESS, associateInstances.getErrorCode().intValue());
1389 assertTrue(checkRealtionship(requirementDef.getFromNode(), requirementDef.getToNode(),
1390 resourceDetailsVF.getUniqueId()));
1392 RestResponse secondDisociateInstances = ComponentInstanceRestUtils.dissociateInstances(requirementDef,
1393 designerUser, resourceDetailsVF.getUniqueId(), ComponentTypeEnum.RESOURCE);
1394 assertEquals("Check response code ", STATUS_CODE_SUCCESS, secondDisociateInstances.getErrorCode().intValue());
1395 assertTrue(getComponentInstancesRelations(resourceDetailsVF.getUniqueId()).isEmpty());
1397 RestResponse changeResourceStateToCheckout2 = LifecycleRestUtils.changeResourceState(resourceDetailsVF,
1398 designerUser, LifeCycleStatesEnum.CHECKIN);
1399 LifecycleRestUtils.checkSuccess(changeResourceStateToCheckout2);
1400 RestResponse changeResourceStateToCheckout3 = LifecycleRestUtils.changeResourceState(resourceDetailsVF,
1401 designerUser, LifeCycleStatesEnum.CHECKOUT);
1402 LifecycleRestUtils.checkSuccess(changeResourceStateToCheckout3);
1404 assertTrue(getComponentInstancesRelations(resourceDetailsVF.getUniqueId()).isEmpty());