re base code
[sdc.git] / test-apis-ci / src / main / java / org / openecomp / sdc / ci / tests / execute / product / ProductComponentInstanceCRUDTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
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
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
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=========================================================
19  */
20
21 package org.openecomp.sdc.ci.tests.execute.product;
22
23 import org.junit.Rule;
24 import org.junit.rules.TestName;
25 import org.openecomp.sdc.be.dao.api.ActionStatus;
26 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
27 import org.openecomp.sdc.be.model.ComponentInstance;
28 import org.openecomp.sdc.be.model.LifecycleStateEnum;
29 import org.openecomp.sdc.be.model.Product;
30 import org.openecomp.sdc.be.model.User;
31 import org.openecomp.sdc.ci.tests.api.ComponentInstanceBaseTest;
32 import org.openecomp.sdc.ci.tests.datatypes.ArtifactReqDetails;
33 import org.openecomp.sdc.ci.tests.datatypes.ComponentInstanceReqDetails;
34 import org.openecomp.sdc.ci.tests.datatypes.ResourceReqDetails;
35 import org.openecomp.sdc.ci.tests.datatypes.ServiceReqDetails;
36 import org.openecomp.sdc.ci.tests.datatypes.enums.ArtifactTypeEnum;
37 import org.openecomp.sdc.ci.tests.datatypes.enums.LifeCycleStatesEnum;
38 import org.openecomp.sdc.ci.tests.datatypes.enums.UserRoleEnum;
39 import org.openecomp.sdc.ci.tests.datatypes.http.RestResponse;
40 import org.openecomp.sdc.ci.tests.utils.general.ElementFactory;
41 import org.openecomp.sdc.ci.tests.utils.rest.*;
42 import org.openecomp.sdc.ci.tests.utils.validation.ErrorValidationUtils;
43 import org.testng.AssertJUnit;
44 import org.testng.annotations.BeforeMethod;
45 import org.testng.annotations.Test;
46
47 import java.util.ArrayList;
48 import java.util.List;
49
50 import static org.openecomp.sdc.ci.tests.utils.rest.BaseRestUtils.*;
51 import static org.testng.AssertJUnit.assertEquals;
52 import static org.testng.AssertJUnit.assertTrue;
53
54 public class ProductComponentInstanceCRUDTest extends ComponentInstanceBaseTest {
55
56     protected ArtifactReqDetails heatArtifactDetails;
57     @Rule
58     public static TestName name = new TestName();
59
60     public ProductComponentInstanceCRUDTest() {
61         super(name, ProductComponentInstanceCRUDTest.class.getName());
62     }
63
64     @BeforeMethod
65     public void before() throws Exception {
66         init();
67         createComponents();
68     }
69
70     private void createComponents() throws Exception {
71
72         heatArtifactDetails = ElementFactory.getDefaultDeploymentArtifactForType(ArtifactTypeEnum.HEAT.getType());
73         createAtomicResource(resourceDetailsVFC_01);
74         changeResourceStateToCertified(resourceDetailsVFC_01);
75         createAtomicResource(resourceDetailsCP_01);
76         changeResourceStateToCertified(resourceDetailsCP_01);
77         createAtomicResource(resourceDetailsVL_01);
78         changeResourceStateToCertified(resourceDetailsVL_01);
79         createAtomicResource(resourceDetailsVFC_02);
80         changeResourceStateToCertified(resourceDetailsVFC_02);
81         createAtomicResource(resourceDetailsCP_02);
82         changeResourceStateToCertified(resourceDetailsCP_02);
83         createAtomicResource(resourceDetailsVL_02);
84         changeResourceStateToCertified(resourceDetailsVL_02);
85         createVF(resourceDetailsVF_02);
86         createVF(resourceDetailsVF_01);
87         // create check-In services
88         createService(serviceDetails_01);
89         createService(serviceDetails_02);
90         createService(serviceDetails_03);
91         createProduct(productDetails_01);
92         createProduct(productDetails_02);
93
94         // addresourceDetailsCP_02 ,resourceDetailsVFC_02 and
95         // resourceDetailsVL_02 to resourceDetailsVF_02 check-in VF
96         RestResponse createAtomicResourceInstance = createAtomicInstanceForVFDuringSetup(resourceDetailsVF_02, resourceDetailsVFC_02, sdncDesignerDetails);
97         ResourceRestUtils.checkCreateResponse(createAtomicResourceInstance);
98         createAtomicResourceInstance = createAtomicInstanceForVFDuringSetup(resourceDetailsVF_02, resourceDetailsCP_02, sdncDesignerDetails);
99         ResourceRestUtils.checkCreateResponse(createAtomicResourceInstance);
100         createAtomicResourceInstance = createAtomicInstanceForVFDuringSetup(resourceDetailsVF_02, resourceDetailsVL_02, sdncDesignerDetails);
101         ResourceRestUtils.checkCreateResponse(createAtomicResourceInstance);
102         RestResponse restResponse = LifecycleRestUtils.changeResourceState(resourceDetailsVF_02, sdncDesignerDetails, LifeCycleStatesEnum.CHECKIN);
103         resourceDetailsVF_02.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKIN);
104         // addresourceDetailsCP_01 ,resourceDetailsVFC_01 and
105         // resourceDetailsVL_01 to resourceDetailsVF_01 and certify
106         // resourceDetailsVF_01
107         certifyVf(resourceDetailsVF_01);
108         createVFInstanceDuringSetup(serviceDetails_01, resourceDetailsVF_01, sdncDesignerDetails); // serviceDetails_01
109         // has
110         // certified
111         // VF
112         createVFInstanceDuringSetup(serviceDetails_02, resourceDetailsVF_02, sdncDesignerDetails); // serviceDetails_02
113         // has
114         // check-in
115         // VF
116         restResponse = LifecycleRestUtils.changeServiceState(serviceDetails_01, sdncDesignerDetails, LifeCycleStatesEnum.CHECKIN);
117         ResourceRestUtils.checkSuccess(restResponse);
118         restResponse = LifecycleRestUtils.changeServiceState(serviceDetails_02, sdncDesignerDetails, LifeCycleStatesEnum.CHECKIN);
119         ResourceRestUtils.checkSuccess(restResponse);
120     }
121
122     // pass
123     @Test
124     public void createServiceInstanceTest() throws Exception {
125         RestResponse createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
126         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
127         getComponentAndValidateRIs(productDetails_01, 1, 0);
128     }
129
130     // DE189427
131     @Test(enabled = false)
132     public void createServiceInstanceFromCheckedOutState() throws Exception {
133         // can't create instance of checked-out component
134         RestResponse restResponse = LifecycleRestUtils.changeServiceState(serviceDetails_01, sdncDesignerDetails, LifeCycleStatesEnum.CHECKOUT);
135         ResourceRestUtils.checkSuccess(restResponse);
136         RestResponse createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
137         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
138         getComponentAndValidateRIs(productDetails_01, 1, 0);
139     }
140
141     @Test
142     public void createServiceInstanceInToAnotherServiceInstance() throws Exception {
143         RestResponse createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_02, sdncPmDetails1);
144         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
145         String uniqueIdFromResponse = ResponseParser.getUniqueIdFromResponse(createServiceInstanceResp);
146         getComponentAndValidateRIs(productDetails_01, 1, 0);
147         ComponentInstanceReqDetails serviceInstanceReqDetails = ElementFactory.getComponentResourceInstance(serviceDetails_01);
148         createServiceInstanceResp = ComponentInstanceRestUtils.createComponentInstance(serviceInstanceReqDetails, sdncPmDetails1, uniqueIdFromResponse, ComponentTypeEnum.PRODUCT);
149         assertTrue(createServiceInstanceResp.getErrorCode() == STATUS_CODE_NOT_FOUND);
150     }
151
152     @Test
153     public void createSeveralServiceInstanceFromSameServices() throws Exception {
154         RestResponse createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
155         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
156         createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
157         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
158         getComponentAndValidateRIs(productDetails_01, 2, 0);
159     }
160
161     @Test
162     public void createSeveralServiceInstanceFromDifferentServices() throws Exception {
163         RestResponse createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
164         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
165         createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_02, sdncPmDetails1);
166         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
167         getComponentAndValidateRIs(productDetails_01, 2, 0);
168     }
169
170     @Test
171     public void createCertifiedServiceInstance() throws Exception {
172         changeServiceStateToCertified(serviceDetails_01);
173         RestResponse createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
174         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
175         getComponentAndValidateRIs(productDetails_01, 1, 0);
176     }
177
178     @Test
179     public void createServiceInstanceByPm() throws Exception {
180         RestResponse restResponse = LifecycleRestUtils.changeProductState(productDetails_01, sdncPmDetails1, LifeCycleStatesEnum.CHECKIN);
181         ResourceRestUtils.checkSuccess(restResponse);
182         restResponse = LifecycleRestUtils.changeProductState(productDetails_01, sdncPmDetails1, LifeCycleStatesEnum.CHECKOUT);
183         ResourceRestUtils.checkSuccess(restResponse);
184         RestResponse createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
185         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
186         getComponentAndValidateRIs(productDetails_01, 1, 0);
187     }
188
189     @Test
190     public void createServiceInstanceWithoutVf() throws Exception {
191         LifecycleRestUtils.changeServiceState(serviceDetails_03, sdncAdminDetails, "0.1", LifeCycleStatesEnum.CHECKIN);
192         RestResponse createServiceInstanceResp = createServiceInstance(productDetails_02, serviceDetails_03, sdncPmDetails1);
193         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
194         getComponentAndValidateRIs(productDetails_02, 1, 0);
195     }
196
197     @Test
198     public void createServiceInstanceByNonProductOwner() throws Exception {
199         RestResponse createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
200         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
201         createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_02, sdncPmDetails2);
202         assertTrue(createServiceInstanceResp.getErrorCode() == STATUS_CODE_RESTRICTED_OPERATION);
203         ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESTRICTED_OPERATION.name(), new ArrayList<String>(), createServiceInstanceResp.getResponse());
204         getComponentAndValidateRIs(productDetails_01, 1, 0);
205     }
206
207     @Test
208     public void createServiceInstanceByNonAsdcUser() throws Exception {
209         RestResponse createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
210         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
211         User nonExistingSdncUser = ElementFactory.getDefaultUser(UserRoleEnum.PRODUCT_MANAGER1);
212         ;
213         nonExistingSdncUser.setUserId("bt1234");
214         createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, nonExistingSdncUser);
215         assertTrue(createServiceInstanceResp.getErrorCode() == STATUS_CODE_RESTRICTED_OPERATION);
216         ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESTRICTED_OPERATION.name(), new ArrayList<String>(), createServiceInstanceResp.getResponse());
217         getComponentAndValidateRIs(productDetails_01, 1, 0);
218     }
219
220     @Test
221     public void createServiceInstanceToNotCheckOutProduct() throws Exception {
222         RestResponse createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
223         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
224         RestResponse restResponse = LifecycleRestUtils.changeProductState(productDetails_01, sdncPmDetails1, LifeCycleStatesEnum.CHECKIN);
225         ResourceRestUtils.checkSuccess(restResponse);
226         createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
227         assertTrue(createServiceInstanceResp.getErrorCode() == STATUS_CODE_RESTRICTED_OPERATION);
228         ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESTRICTED_OPERATION.name(), new ArrayList<String>(), createServiceInstanceResp.getResponse());
229         getComponentAndValidateRIs(productDetails_01, 1, 0);
230     }
231
232     // pass
233     @Test
234     public void createServiceInstanceNameIsEmpty() throws Exception {
235         String expectedServiceInstanceName = serviceDetails_01.getName() + " 1";
236         String expectedServiceInstancenormalizedName = serviceDetails_01.getName() + "1";
237         serviceDetails_01.setName("");
238         RestResponse createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
239         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
240         String instanceNormalizedName = ResponseParser.getValueFromJsonResponse(createServiceInstanceResp.getResponse(), "normalizedName");
241         String instanceName = ResponseParser.getValueFromJsonResponse(createServiceInstanceResp.getResponse(), "name");
242         assertEquals("check Resource Instance normalizedName ", (expectedServiceInstancenormalizedName).toLowerCase(), instanceNormalizedName);
243         assertEquals("check Resource Instance Name ", expectedServiceInstanceName, instanceName);
244         getComponentAndValidateRIs(productDetails_01, 1, 0);
245         // get product and verify that service instanceName is correct
246         RestResponse getActualProductResponse = ProductRestUtils.getProduct(productDetails_01.getUniqueId(), sdncPmDetails1.getUserId());
247         Product actualProduct = ResponseParser.parseToObjectUsingMapper(getActualProductResponse.getResponse(), Product.class);
248         ComponentInstance actualComponentInstance = actualProduct.getComponentInstances().get(0);
249         assertEquals(expectedServiceInstanceName, actualComponentInstance.getName());
250         assertEquals((expectedServiceInstancenormalizedName).toLowerCase(), actualComponentInstance.getNormalizedName());
251     }
252
253     // pass
254     @Test
255     public void createServiceInstanceNameIsNull() throws Exception {
256         serviceDetails_01.setName(null);
257         String expectedServiceInstanceName = (serviceDetails_01.getName() != null ? serviceDetails_01.getName() : "resourceInstanceName") + " 1";
258         String expectedServiceInstancenormalizedName = (serviceDetails_01.getName() != null ? serviceDetails_01.getName() : "resourceInstanceName") + "1";
259         RestResponse createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
260         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
261         String instanceNormalizedName = ResponseParser.getValueFromJsonResponse(createServiceInstanceResp.getResponse(), "normalizedName");
262         String instanceName = ResponseParser.getValueFromJsonResponse(createServiceInstanceResp.getResponse(), "name");
263         assertEquals("check Resource Instance normalizedName ", (expectedServiceInstancenormalizedName).toLowerCase(), instanceNormalizedName);
264         assertEquals("check Resource Instance Name ", expectedServiceInstanceName, instanceName);
265         getComponentAndValidateRIs(productDetails_01, 1, 0);
266         // get product and verify that service instanceName is correct
267         RestResponse getActualProductResponse = ProductRestUtils.getProduct(productDetails_01.getUniqueId(), sdncPmDetails1.getUserId());
268         Product actualProduct = ResponseParser.parseToObjectUsingMapper(getActualProductResponse.getResponse(), Product.class);
269         ComponentInstance actualComponentInstance = actualProduct.getComponentInstances().get(0);
270         assertEquals(expectedServiceInstanceName, actualComponentInstance.getName());
271         assertEquals((expectedServiceInstancenormalizedName).toLowerCase(), actualComponentInstance.getNormalizedName());
272     }
273
274     @Test(enabled = false)
275     public void createServiceInstanceToNonExistingProduct() throws Exception {
276         RestResponse createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
277         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
278         ComponentInstanceReqDetails serviceInstanceReqDetails = ElementFactory.getComponentResourceInstance(serviceDetails_01);
279         createServiceInstanceResp = ComponentInstanceRestUtils.createComponentInstance(serviceInstanceReqDetails, sdncPmDetails1, "blabla", ComponentTypeEnum.PRODUCT);
280         AssertJUnit.assertEquals("Check response code ", STATUS_CODE_NOT_FOUND, createServiceInstanceResp.getErrorCode().intValue());
281         ArrayList<String> varibales = new ArrayList<String>();
282         varibales.add("blabla");
283         ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.PRODUCT_NOT_FOUND.name(), varibales, createServiceInstanceResp.getResponse());
284         getComponentAndValidateRIs(productDetails_01, 1, 0);
285     }
286
287     @Test
288     public void createServiceInstanceToNonSupportedComponentType() throws Exception {
289         RestResponse createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
290         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
291         ComponentInstanceReqDetails serviceInstanceReqDetails = ElementFactory.getComponentResourceInstance(serviceDetails_01);
292         createServiceInstanceResp = ComponentInstanceRestUtils.createComponentInstance(serviceInstanceReqDetails, sdncPmDetails1, productDetails_01.getUniqueId(), ComponentTypeEnum.RESOURCE_INSTANCE);
293         assertTrue(createServiceInstanceResp.getErrorCode() == STATUS_CODE_UNSUPPORTED_ERROR);
294         ArrayList<String> varibales = new ArrayList<String>();
295         varibales.add("null");
296         ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.UNSUPPORTED_ERROR.name(), varibales, createServiceInstanceResp.getResponse());
297         getComponentAndValidateRIs(productDetails_01, 1, 0);
298     }
299
300     // pass
301     @Test
302     public void createServiceInstancePositionIsEmpty() throws Exception {
303         ComponentInstanceReqDetails serviceInstanceReqDetails = ElementFactory.getComponentResourceInstance(serviceDetails_01);
304         serviceInstanceReqDetails.setPosX("");
305         serviceInstanceReqDetails.setPosY("");
306         RestResponse createServiceInstanceResp = ComponentInstanceRestUtils.createComponentInstance(serviceInstanceReqDetails, sdncPmDetails1, productDetails_01.getUniqueId(), ComponentTypeEnum.PRODUCT);
307         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
308         ComponentInstance componentInstance = ResponseParser.parseToObjectUsingMapper(createServiceInstanceResp.getResponse(), ComponentInstance.class);
309         addCompInstReqCapToExpected(componentInstance, ComponentTypeEnum.PRODUCT);
310         getComponentAndValidateRIs(productDetails_01, 1, 0);
311     }
312
313     @Test
314     public void createServiceInstancePositionIsNull() throws Exception {
315         ComponentInstanceReqDetails serviceInstanceReqDetails = ElementFactory.getComponentResourceInstance(serviceDetails_01);
316         serviceInstanceReqDetails.setPosX(null);
317         serviceInstanceReqDetails.setPosY(null);
318         RestResponse createServiceInstanceResp = ComponentInstanceRestUtils.createComponentInstance(serviceInstanceReqDetails, sdncPmDetails1, productDetails_01.getUniqueId(), ComponentTypeEnum.PRODUCT);
319         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
320         ComponentInstance componentInstance = ResponseParser.parseToObjectUsingMapper(createServiceInstanceResp.getResponse(), ComponentInstance.class);
321         addCompInstReqCapToExpected(componentInstance, ComponentTypeEnum.PRODUCT);
322         getComponentAndValidateRIs(productDetails_01, 1, 0);
323     }
324
325     @Test
326     public void createServiceInstanceByDesigner() throws Exception {
327         RestResponse createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
328         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
329         createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncDesignerDetails);
330         assertTrue(createServiceInstanceResp.getErrorCode() == STATUS_CODE_RESTRICTED_OPERATION);
331         ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESTRICTED_OPERATION.name(), new ArrayList<String>(), createServiceInstanceResp.getResponse());
332         getComponentAndValidateRIs(productDetails_01, 1, 0);
333     }
334
335     @Test
336     public void createServiceInstanceUserIdIsEmpty() throws Exception {
337         RestResponse createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
338         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
339         User nonSdncDetails = ElementFactory.getDefaultUser(UserRoleEnum.TESTER);
340         nonSdncDetails.setUserId("");
341         createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, nonSdncDetails);
342         assertTrue(createServiceInstanceResp.getErrorCode() == STATUS_CODE_MISSING_INFORMATION);
343         ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.MISSING_INFORMATION.name(), new ArrayList<String>(), createServiceInstanceResp.getResponse());
344         getComponentAndValidateRIs(productDetails_01, 1, 0);
345     }
346
347     //// Update Service instance
348
349     @Test
350     public void updateServiceInstanceNameByPm() throws Exception {
351         // Check-in Product by PM and Check-out by PM
352         RestResponse restResponse = LifecycleRestUtils.changeProductState(productDetails_01, sdncPmDetails1, LifeCycleStatesEnum.CHECKIN);
353         ResourceRestUtils.checkSuccess(restResponse);
354         restResponse = LifecycleRestUtils.changeProductState(productDetails_01, sdncPmDetails1, LifeCycleStatesEnum.CHECKOUT);
355         ResourceRestUtils.checkSuccess(restResponse);
356         // Create service instance by PM
357         ComponentInstanceReqDetails serviceInstanceReqDetails = ElementFactory.getComponentResourceInstance(serviceDetails_01);
358         RestResponse createServiceInstanceResp = ComponentInstanceRestUtils.createComponentInstance(serviceInstanceReqDetails, sdncPmDetails1, productDetails_01.getUniqueId(), ComponentTypeEnum.PRODUCT);
359         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
360         String newName = "abcD";
361         serviceInstanceReqDetails.setName(newName);
362         RestResponse updateServiceInstanceResponse = ComponentInstanceRestUtils.updateComponentInstance(serviceInstanceReqDetails, sdncPmDetails1, productDetails_01.getUniqueId(), ComponentTypeEnum.PRODUCT);
363         ResourceRestUtils.checkSuccess(updateServiceInstanceResponse);
364         String instanceNormalizedName = ResponseParser.getValueFromJsonResponse(updateServiceInstanceResponse.getResponse(), "normalizedName");
365         String instanceName = ResponseParser.getValueFromJsonResponse(updateServiceInstanceResponse.getResponse(), "name");
366         assertEquals("check Resource Instance normalizedName ", (newName).toLowerCase(), instanceNormalizedName);
367         assertEquals("check Resource Instance Name ", newName, instanceName);
368         // get product and verify that service instanceName is correct
369         RestResponse getActualProductResponse = ProductRestUtils.getProduct(productDetails_01.getUniqueId(), sdncPmDetails1.getUserId());
370         Product actualProduct = ResponseParser.parseToObjectUsingMapper(getActualProductResponse.getResponse(), Product.class);
371         ComponentInstance actualComponentInstance = actualProduct.getComponentInstances().get(0);
372         assertEquals(newName, actualComponentInstance.getName());
373         assertEquals((newName).toLowerCase(), actualComponentInstance.getNormalizedName());
374     }
375
376     @Test
377     public void updateServiceInstanceNewNameAndLocation() throws Exception {
378         ComponentInstanceReqDetails serviceInstanceReqDetails = ElementFactory.getComponentResourceInstance(serviceDetails_01);
379         RestResponse createServiceInstanceResp = ComponentInstanceRestUtils.createComponentInstance(serviceInstanceReqDetails, sdncPmDetails1, productDetails_01.getUniqueId(), ComponentTypeEnum.PRODUCT);
380         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
381         String newName = "updaatedName100";
382         serviceInstanceReqDetails.setPosX("100");
383         serviceInstanceReqDetails.setPosY("100");
384         serviceInstanceReqDetails.setName(newName);
385         RestResponse updateServiceInstanceResponse = ComponentInstanceRestUtils.updateComponentInstance(serviceInstanceReqDetails, sdncPmDetails1, productDetails_01.getUniqueId(), ComponentTypeEnum.PRODUCT);
386         ResourceRestUtils.checkSuccess(updateServiceInstanceResponse);
387         // get product and verify that service instanceName is correct
388         RestResponse getActualProductResponse = ProductRestUtils.getProduct(productDetails_01.getUniqueId(), sdncPmDetails1.getUserId());
389         Product actualProduct = ResponseParser.parseToObjectUsingMapper(getActualProductResponse.getResponse(), Product.class);
390         ComponentInstance actualComponentInstance = actualProduct.getComponentInstances().get(0);
391         assertEquals(serviceInstanceReqDetails.getPosX(), actualComponentInstance.getPosX());
392         assertEquals(serviceInstanceReqDetails.getPosY(), actualComponentInstance.getPosY());
393         assertEquals(newName, actualComponentInstance.getName());
394         assertEquals(newName.toLowerCase(), actualComponentInstance.getNormalizedName());
395     }
396
397     @Test(enabled = false)
398     public void updateServiceInstanceNameRemoveSpacesFromBiginningAndEnd() throws Exception {
399         ComponentInstanceReqDetails serviceInstanceReqDetails = ElementFactory.getComponentResourceInstance(serviceDetails_01);
400         RestResponse createServiceInstanceResp = ComponentInstanceRestUtils.createComponentInstance(serviceInstanceReqDetails, sdncPmDetails1, productDetails_01.getUniqueId(), ComponentTypeEnum.PRODUCT);
401         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
402         String newName = "  Abcd   ";
403         String expectedNewName = "  Abcd   ";
404         serviceInstanceReqDetails.setName(newName);
405         RestResponse updateServiceInstanceResponse = ComponentInstanceRestUtils.updateComponentInstance(serviceInstanceReqDetails, sdncPmDetails1, productDetails_01.getUniqueId(), ComponentTypeEnum.PRODUCT);
406         ResourceRestUtils.checkSuccess(updateServiceInstanceResponse);
407         String instanceNormalizedName = ResponseParser.getValueFromJsonResponse(updateServiceInstanceResponse.getResponse(), "normalizedName");
408         String instanceName = ResponseParser.getValueFromJsonResponse(updateServiceInstanceResponse.getResponse(), "name");
409         assertEquals("check Resource Instance normalizedName ", (expectedNewName).toLowerCase(), instanceNormalizedName);
410         assertEquals("check Resource Instance Name ", expectedNewName, instanceName);
411         // get product and verify that service instanceName is correct
412         RestResponse getActualProductResponse = ProductRestUtils.getProduct(productDetails_01.getUniqueId(), sdncPmDetails1.getUserId());
413         Product actualProduct = ResponseParser.parseToObjectUsingMapper(getActualProductResponse.getResponse(), Product.class);
414         ComponentInstance actualComponentInstance = actualProduct.getComponentInstances().get(0);
415         assertEquals(expectedNewName, actualComponentInstance.getName());
416         assertEquals((expectedNewName).toLowerCase(), actualComponentInstance.getNormalizedName());
417     }
418
419     // pass
420     @Test
421     public void updateServiceInstanceNameAllowedCharacters() throws Exception {
422         ComponentInstanceReqDetails serviceInstanceReqDetails = ElementFactory.getComponentResourceInstance(serviceDetails_01);
423         RestResponse createServiceInstanceResp = ComponentInstanceRestUtils.createComponentInstance(serviceInstanceReqDetails, sdncPmDetails1, productDetails_01.getUniqueId(), ComponentTypeEnum.PRODUCT);
424         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
425         String newName = "cier-TYUIOP_asd_0987654321.Abcd";
426         String ExpectedNormalizName = "ciertyuiop_asd_0987654321abcd";
427         serviceInstanceReqDetails.setName(newName);
428         RestResponse updateServiceInstanceResponse = ComponentInstanceRestUtils.updateComponentInstance(serviceInstanceReqDetails, sdncPmDetails1, productDetails_01.getUniqueId(), ComponentTypeEnum.PRODUCT);
429         ResourceRestUtils.checkSuccess(updateServiceInstanceResponse);
430         String instanceNormalizedName = ResponseParser.getValueFromJsonResponse(updateServiceInstanceResponse.getResponse(), "normalizedName");
431         String instanceName = ResponseParser.getValueFromJsonResponse(updateServiceInstanceResponse.getResponse(), "name");
432         assertEquals("check Resource Instance normalizedName ", ExpectedNormalizName, instanceNormalizedName);
433         assertEquals("check Resource Instance Name ", newName, instanceName);
434         // get product and verify that service instanceName is correct
435         RestResponse getActualProductResponse = ProductRestUtils.getProduct(productDetails_01.getUniqueId(), sdncPmDetails1.getUserId());
436         Product actualProduct = ResponseParser.parseToObjectUsingMapper(getActualProductResponse.getResponse(), Product.class);
437         ComponentInstance actualComponentInstance = actualProduct.getComponentInstances().get(0);
438         assertEquals(newName, actualComponentInstance.getName());
439         assertEquals(ExpectedNormalizName, actualComponentInstance.getNormalizedName());
440
441     }
442
443     @Test
444     public void updateInstanceNameInvalidCharacters() throws Exception {
445         char invalidChars[] = {'~', '!', '$', '%', '^', '*', '(', ')', '"', '{', '}', '[', ']', '?', '>', '<', '/', '|', '\\', ','};
446         ComponentInstanceReqDetails serviceInstanceReqDetails = ElementFactory.getComponentResourceInstance(serviceDetails_01);
447         RestResponse createServiceInstanceResp = ComponentInstanceRestUtils.createComponentInstance(serviceInstanceReqDetails, sdncPmDetails1, productDetails_01.getUniqueId(), ComponentTypeEnum.PRODUCT);
448         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
449         String newName = "Abcd1";
450         String updateName;
451         for (int i = 0; i < invalidChars.length; i++) {
452             updateName = newName + invalidChars[i];
453             serviceInstanceReqDetails.setName(updateName);
454             RestResponse updateServiceInstanceResponse = ComponentInstanceRestUtils.updateComponentInstance(serviceInstanceReqDetails, sdncPmDetails1, productDetails_01.getUniqueId(), ComponentTypeEnum.PRODUCT);
455             assertEquals("Check response code ", STATUS_CODE_INVALID_CONTENT, updateServiceInstanceResponse.getErrorCode().intValue());
456             ArrayList<String> varibales = new ArrayList<String>();
457             varibales.add("Service Instance");
458             ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_COMPONENT_NAME.name(), varibales, updateServiceInstanceResponse.getResponse());
459         }
460     }
461
462     // pass
463     @Test
464     public void updateInstanceNameMaxLength() throws Exception {
465         ComponentInstanceReqDetails serviceInstanceReqDetails = ElementFactory.getComponentResourceInstance(serviceDetails_01);
466         RestResponse createServiceInstanceResp = ComponentInstanceRestUtils.createComponentInstance(serviceInstanceReqDetails, sdncPmDetails1, productDetails_01.getUniqueId(), ComponentTypeEnum.PRODUCT);
467         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
468         String newName = "Qwertyuiop1234567890asdfAhjklzxcvbnmasdfghjkl12345";
469         serviceInstanceReqDetails.setName(newName);
470         RestResponse updateServiceInstanceResponse = ComponentInstanceRestUtils.updateComponentInstance(serviceInstanceReqDetails, sdncPmDetails1, productDetails_01.getUniqueId(), ComponentTypeEnum.PRODUCT);
471         ResourceRestUtils.checkSuccess(updateServiceInstanceResponse);
472         String instanceNormalizedName = ResponseParser.getValueFromJsonResponse(updateServiceInstanceResponse.getResponse(), "normalizedName");
473         String instanceName = ResponseParser.getValueFromJsonResponse(updateServiceInstanceResponse.getResponse(), "name");
474         assertEquals("check Resource Instance normalizedName ", (newName).toLowerCase(), instanceNormalizedName);
475         assertEquals("check Resource Instance Name ", newName, instanceName);
476         // get product and verify that service instanceName is correct
477         RestResponse getActualProductResponse = ProductRestUtils.getProduct(productDetails_01.getUniqueId(), sdncPmDetails1.getUserId());
478         Product actualProduct = ResponseParser.parseToObjectUsingMapper(getActualProductResponse.getResponse(), Product.class);
479         ComponentInstance actualComponentInstance = actualProduct.getComponentInstances().get(0);
480         assertEquals(newName, actualComponentInstance.getName());
481         assertEquals((newName).toLowerCase(), actualComponentInstance.getNormalizedName());
482     }
483
484     @Test
485     public void updateInstanceNameExceedMaxLength() throws Exception {
486         ComponentInstanceReqDetails serviceInstanceReqDetails = ElementFactory.getComponentResourceInstance(serviceDetails_01);
487         RestResponse createServiceInstanceResp = ComponentInstanceRestUtils.createComponentInstance(serviceInstanceReqDetails, sdncPmDetails1, productDetails_01.getUniqueId(), ComponentTypeEnum.PRODUCT);
488         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
489         String expectedName = ResponseParser.getValueFromJsonResponse(createServiceInstanceResp.getResponse(), "name");
490         String expectedNormalizedName = ResponseParser.getValueFromJsonResponse(createServiceInstanceResp.getResponse(), "normalizedName");
491         String newName = "Ciertyuiop1234567890asdfAhjklzxcvbnmasdfghjkl123456Ahjklzxcvbnmasdfghjkl123456Ahjklzxcvbnmasdfghjkl123456Ahjklzxcvbnmasdfghjkl123456Ahjklzxcvbnmasdfghjkl123456Ciertyuiop1234567890asdfAhjklzxcvbnmasdfghjkl123456Ahjklzxcvbnmasdfghjkl123456Ahjklzxcvbnmasdfghjkl123456Ahjklzxcvbnmasdfghjkl123456Ahjklzxcvbnmasdfghjkl123456Ciertyuiop1234567890asdfAhjklzxcvbnmasdfghjkl123456Ahjklzxcvbnmasdfghjkl123456Ahjklzxcvbnmasdfghjkl123456Ahjklzxcvbnmasdfghjkl123456Ahjklzxcvbnmasdfghjkl123456Ciertyuiop1234567890asdfAhjklzxcvbnmasdfghjkl123456Ahjklzxcvbnmasdfghjkl123456Ahjklzxcvbnmasdfghjkl123456Ahjklzxcvbnmasdfghjkl123456Ahjklzxcvbnmasdfghjkl123456Ciertyuiop1234567890asdfAhjklzxcvbnmasdfghjkl123456Ahjklzxcvbnmasdfghjkl123456Ahjklzxcvbnmasdfghjkl123456Ahjklzxcvbnmasdfghjkl123456Ahjklzxcvbnmasdfghjkl123456Ciertyuiop1234567890asdfAhjklzxcvbnmasdfghjkl123456Ahjklzxcvbnmasdfghjkl123456Ahjklzxcvbnmasdfghjkl123456Ahjklzxcvbnmasdfghjkl123456Ahjklzxcvbnmasdfghjkl123456Ciertyuiop1234567890asdfAhjklzxcvbnmasdfghjkl123456Ahjklzxcvbnmasdfghjkl123456Ahjklzxcvbnmasdfghjkl123456Ahjklzxcvbnmasdfghjkl123456Ahjklzxcvbnmasdfghjkl123456Ciertyuiop1234567890asdfAhjklzxcvbnmasdfghjkl123456Ahjklzxcvbnmasdfghjkl123456Ahjklzxcvbnmasdfghjkl123456Ahjklzxcvbnmasdfghjkl123456Ahjklzxcvbnmasdfghjkl123456Ciertyuiop1234567890asdfAhjklzxcvbnmasdfghjkl123456Ahjklzxcvbnmasdfghjkl123456Ahjklzxcvbnmasdfghjkl123456Ahjklzxcvbnmasdfghjkl123456Ahjklzxcvbnmasdfghjkl123456";
492         serviceInstanceReqDetails.setName(newName);
493         RestResponse updateServiceInstanceResponse = ComponentInstanceRestUtils.updateComponentInstance(serviceInstanceReqDetails, sdncPmDetails1, productDetails_01.getUniqueId(), ComponentTypeEnum.PRODUCT);
494         assertEquals("Check response code ", STATUS_CODE_COMPONENT_NAME_EXCEEDS_LIMIT, updateServiceInstanceResponse.getErrorCode().intValue());
495         ArrayList<String> varibales = new ArrayList<String>();
496         varibales.add("Service Instance");
497         varibales.add("1024");
498         ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_NAME_EXCEEDS_LIMIT.name(), varibales, updateServiceInstanceResponse.getResponse());
499         // get product and verify that service instanceName is correct
500         RestResponse getActualProductResponse = ProductRestUtils.getProduct(productDetails_01.getUniqueId(), sdncPmDetails1.getUserId());
501         Product actualProduct = ResponseParser.parseToObjectUsingMapper(getActualProductResponse.getResponse(), Product.class);
502         ComponentInstance actualComponentInstance = actualProduct.getComponentInstances().get(0);
503         assertEquals(expectedName, actualComponentInstance.getName());
504         assertEquals(expectedNormalizedName, actualComponentInstance.getNormalizedName());
505     }
506
507     @Test
508     public void updateServiceInstanceNameEmpty() throws Exception {
509         // see US534663 In case a PS/PM removes the current service instance
510         // name then BE has to generate again the "default" service instance
511         // name
512         ComponentInstanceReqDetails serviceInstanceReqDetails = ElementFactory.getComponentResourceInstance(serviceDetails_01);
513         RestResponse createServiceInstanceResp = ComponentInstanceRestUtils.createComponentInstance(serviceInstanceReqDetails, sdncPmDetails1, productDetails_01.getUniqueId(), ComponentTypeEnum.PRODUCT);
514         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
515         String newName = "";
516         serviceInstanceReqDetails.setName(newName);
517         RestResponse updateServiceInstanceResponse = ComponentInstanceRestUtils.updateComponentInstance(serviceInstanceReqDetails, sdncPmDetails1, productDetails_01.getUniqueId(), ComponentTypeEnum.PRODUCT);
518         ResourceRestUtils.checkSuccess(updateServiceInstanceResponse);
519         String instanceNormalizedName = ResponseParser.getValueFromJsonResponse(updateServiceInstanceResponse.getResponse(), "normalizedName");
520         String instanceName = ResponseParser.getValueFromJsonResponse(updateServiceInstanceResponse.getResponse(), "name");
521         assertEquals("check Resource Instance normalizedName ", (serviceDetails_01.getName() + "2").toLowerCase(), instanceNormalizedName);
522         assertEquals("check Resource Instance normalizedName ", (serviceDetails_01.getName() + " 2"), instanceName);
523         // get product and verify that service instanceName is correct
524         RestResponse getActualProductResponse = ProductRestUtils.getProduct(productDetails_01.getUniqueId(), sdncPmDetails1.getUserId());
525         Product actualProduct = ResponseParser.parseToObjectUsingMapper(getActualProductResponse.getResponse(), Product.class);
526         ComponentInstance actualComponentInstance = actualProduct.getComponentInstances().get(0);
527         assertEquals(instanceName, actualComponentInstance.getName());
528         assertEquals(instanceNormalizedName, actualComponentInstance.getNormalizedName());
529     }
530
531     // pass
532     @Test
533     public void updateServiceInstanceNameNull() throws Exception {
534         // see US534663 In case a PS/PM removes the current service instance
535         // name then BE has to generate again the "default" service instance
536         // name
537         ComponentInstanceReqDetails serviceInstanceReqDetails = ElementFactory.getComponentResourceInstance(serviceDetails_01);
538         RestResponse createServiceInstanceResp = ComponentInstanceRestUtils.createComponentInstance(serviceInstanceReqDetails, sdncPmDetails1, productDetails_01.getUniqueId(), ComponentTypeEnum.PRODUCT);
539         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
540         String newName = null;
541         serviceInstanceReqDetails.setName(newName);
542         RestResponse updateServiceInstanceResponse = ComponentInstanceRestUtils.updateComponentInstance(serviceInstanceReqDetails, sdncPmDetails1, productDetails_01.getUniqueId(), ComponentTypeEnum.PRODUCT);
543         ResourceRestUtils.checkSuccess(updateServiceInstanceResponse);
544         String instanceNormalizedName = ResponseParser.getValueFromJsonResponse(updateServiceInstanceResponse.getResponse(), "normalizedName");
545         String instanceName = ResponseParser.getValueFromJsonResponse(updateServiceInstanceResponse.getResponse(), "name");
546         assertEquals("check Resource Instance normalizedName ", (serviceDetails_01.getName() + "1").toLowerCase(), instanceNormalizedName);
547         assertEquals("check Resource Instance normalizedName ", (serviceDetails_01.getName() + " 1"), instanceName);
548         // get product and verify that service instanceName is correct
549         RestResponse getActualProductResponse = ProductRestUtils.getProduct(productDetails_01.getUniqueId(), sdncPmDetails1.getUserId());
550         Product actualProduct = ResponseParser.parseToObjectUsingMapper(getActualProductResponse.getResponse(), Product.class);
551         ComponentInstance actualComponentInstance = actualProduct.getComponentInstances().get(0);
552         assertEquals(instanceName, actualComponentInstance.getName());
553         assertEquals(instanceNormalizedName, actualComponentInstance.getNormalizedName());
554     }
555
556     @Test
557     public void updateServiceInstanceCheckedByOtherUser() throws Exception {
558         // see US534663 In case a PS/PM removes the current service instance
559         // name then BE has to generate again the "default" service instance
560         // name
561         ComponentInstanceReqDetails serviceInstanceReqDetails = ElementFactory.getComponentResourceInstance(serviceDetails_01);
562         RestResponse createServiceInstanceResp = ComponentInstanceRestUtils.createComponentInstance(serviceInstanceReqDetails, sdncPmDetails1, productDetails_01.getUniqueId(), ComponentTypeEnum.PRODUCT);
563         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
564         String newName = "blabla";
565         serviceInstanceReqDetails.setName(newName);
566         RestResponse updateServiceInstanceResponse = ComponentInstanceRestUtils.updateComponentInstance(serviceInstanceReqDetails, sdncPmDetails2, productDetails_01.getUniqueId(), ComponentTypeEnum.PRODUCT);
567         assertEquals("Check response code ", STATUS_CODE_RESTRICTED_OPERATION, updateServiceInstanceResponse.getErrorCode().intValue());
568         ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESTRICTED_OPERATION.name(), new ArrayList<String>(), updateServiceInstanceResponse.getResponse());
569     }
570
571     @Test
572     public void updateServiceInstance_UserIdIsNonAsdcUser() throws Exception {
573         ComponentInstanceReqDetails serviceInstanceReqDetails = ElementFactory.getComponentResourceInstance(serviceDetails_01);
574         RestResponse createServiceInstanceResp = ComponentInstanceRestUtils.createComponentInstance(serviceInstanceReqDetails, sdncPmDetails1, productDetails_01.getUniqueId(), ComponentTypeEnum.PRODUCT);
575         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
576         String newName = "blabla";
577         serviceInstanceReqDetails.setName(newName);
578         User nonSdncUserDetails = new User();
579         nonSdncUserDetails.setUserId("bt4567");
580         RestResponse updateServiceInstanceResponse = ComponentInstanceRestUtils.updateComponentInstance(serviceInstanceReqDetails, nonSdncUserDetails, productDetails_01.getUniqueId(), ComponentTypeEnum.PRODUCT);
581         assertEquals("Check response code ", STATUS_CODE_RESTRICTED_OPERATION, updateServiceInstanceResponse.getErrorCode().intValue());
582         ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESTRICTED_OPERATION.name(), new ArrayList<String>(), updateServiceInstanceResponse.getResponse());
583     }
584
585     @Test
586     public void updateServiceInstanceNameToAlreadyExisting() throws Exception {
587         ComponentInstanceReqDetails serviceInstanceReqDetails = ElementFactory.getComponentResourceInstance(serviceDetails_01);
588         RestResponse createServiceInstanceResp = ComponentInstanceRestUtils.createComponentInstance(serviceInstanceReqDetails, sdncPmDetails1, productDetails_01.getUniqueId(), ComponentTypeEnum.PRODUCT);
589         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
590         String ServiceName1 = ResponseParser.getNameFromResponse(createServiceInstanceResp);
591         createServiceInstanceResp = ComponentInstanceRestUtils.createComponentInstance(serviceInstanceReqDetails, sdncPmDetails1, productDetails_01.getUniqueId(), ComponentTypeEnum.PRODUCT);
592         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
593         // Update service instance2 name to service instance1
594         serviceInstanceReqDetails.setName(ServiceName1);
595         RestResponse updateServiceInstanceResponse = ComponentInstanceRestUtils.updateComponentInstance(serviceInstanceReqDetails, sdncPmDetails1, productDetails_01.getUniqueId(), ComponentTypeEnum.PRODUCT);
596         assertEquals("Check response code ", STATUS_CODE_ALREADY_EXISTS, updateServiceInstanceResponse.getErrorCode().intValue());
597         ArrayList<String> varibales = new ArrayList<String>();
598         varibales.add("Service Instance");
599         varibales.add(ServiceName1);
600         ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_NAME_ALREADY_EXIST.name(), varibales, updateServiceInstanceResponse.getResponse());
601     }
602
603     @Test
604     public void updateServiceInstanceForNonExistingProduct() throws Exception {
605         ComponentInstanceReqDetails serviceInstanceReqDetails = ElementFactory.getComponentResourceInstance(serviceDetails_01);
606         RestResponse createServiceInstanceResp = ComponentInstanceRestUtils.createComponentInstance(serviceInstanceReqDetails, sdncPmDetails1, productDetails_01.getUniqueId(), ComponentTypeEnum.PRODUCT);
607         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
608         String newName = "blabla";
609         serviceInstanceReqDetails.setName(newName);
610         RestResponse updateServiceInstanceResponse = ComponentInstanceRestUtils.updateComponentInstance(serviceInstanceReqDetails, sdncPmDetails1, "blablabla", ComponentTypeEnum.PRODUCT);
611         AssertJUnit.assertEquals("Check response code ", STATUS_CODE_NOT_FOUND, updateServiceInstanceResponse.getErrorCode().intValue());
612         ArrayList<String> varibales = new ArrayList<String>();
613         varibales.add("");
614         ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.PRODUCT_NOT_FOUND.name(), varibales, updateServiceInstanceResponse.getResponse());
615
616     }
617
618     @Test
619     public void updateNonExistingServiceInstance() throws Exception {
620         ComponentInstanceReqDetails serviceInstanceReqDetails = ElementFactory.getComponentResourceInstance(serviceDetails_01);
621         RestResponse createServiceInstanceResp = ComponentInstanceRestUtils.createComponentInstance(serviceInstanceReqDetails, sdncPmDetails1, productDetails_01.getUniqueId(), ComponentTypeEnum.PRODUCT);
622         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
623         String newName = "blabla";
624         serviceInstanceReqDetails.setName(newName);
625         serviceInstanceReqDetails.setUniqueId("11111111");
626         RestResponse updateServiceInstanceResponse = ComponentInstanceRestUtils.updateComponentInstance(serviceInstanceReqDetails, sdncPmDetails1, productDetails_01.getUniqueId(), ComponentTypeEnum.PRODUCT);
627         ArrayList<String> varibales = new ArrayList<String>();
628         varibales.add(newName);
629         varibales.add("service instance");
630         AssertJUnit.assertEquals("Check response code ", STATUS_CODE_NOT_FOUND, updateServiceInstanceResponse.getErrorCode().intValue());
631         // need to change ActionStatus.RESOURCE_INSTANCE_NOT_FOUND.name() to
632         // ActionStatus.SERVICE_INSTANCE_NOT_FOUND.name()
633         ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INSTANCE_NOT_FOUND.name(), varibales, updateServiceInstanceResponse.getResponse());
634     }
635
636     @Test
637     public void updateServiceInstanceLocation() throws Exception {
638         ComponentInstanceReqDetails serviceInstanceReqDetails = ElementFactory.getComponentResourceInstance(serviceDetails_01);
639         RestResponse createServiceInstanceResp = ComponentInstanceRestUtils.createComponentInstance(serviceInstanceReqDetails, sdncPmDetails1, productDetails_01.getUniqueId(), ComponentTypeEnum.PRODUCT);
640         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
641         serviceInstanceReqDetails.setPosX("50");
642         serviceInstanceReqDetails.setPosY("100");
643         RestResponse updateServiceInstanceResponse = ComponentInstanceRestUtils.updateComponentInstance(serviceInstanceReqDetails, sdncPmDetails1, productDetails_01.getUniqueId(), ComponentTypeEnum.PRODUCT);
644         ResourceRestUtils.checkSuccess(updateServiceInstanceResponse);
645         // get product and verify that service instanceName is correct
646         RestResponse getActualProductResponse = ProductRestUtils.getProduct(productDetails_01.getUniqueId(), sdncPmDetails1.getUserId());
647         Product actualProduct = ResponseParser.parseToObjectUsingMapper(getActualProductResponse.getResponse(), Product.class);
648         ComponentInstance actualComponentInstance = actualProduct.getComponentInstances().get(0);
649         assertEquals(serviceInstanceReqDetails.getPosX(), actualComponentInstance.getPosX());
650         assertEquals(serviceInstanceReqDetails.getPosY(), actualComponentInstance.getPosY());
651     }
652
653     @Test
654     public void updateServiceInstanceToNonExistingLocation() throws Exception {
655         ComponentInstanceReqDetails serviceInstanceReqDetails = ElementFactory.getComponentResourceInstance(serviceDetails_01);
656         RestResponse createServiceInstanceResp = ComponentInstanceRestUtils.createComponentInstance(serviceInstanceReqDetails, sdncPmDetails1, productDetails_01.getUniqueId(), ComponentTypeEnum.PRODUCT);
657         String nameFromResponse = ResponseParser.getNameFromResponse(createServiceInstanceResp);
658         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
659         serviceInstanceReqDetails.setPosX("-50");
660         serviceInstanceReqDetails.setPosY("-100");
661         serviceInstanceReqDetails.setName(nameFromResponse);
662         RestResponse updateServiceInstanceResponse = ComponentInstanceRestUtils.updateComponentInstance(serviceInstanceReqDetails, sdncPmDetails1, productDetails_01.getUniqueId(), ComponentTypeEnum.PRODUCT);
663         ResourceRestUtils.checkSuccess(updateServiceInstanceResponse);
664         // get product and verify that service instanceName is correct
665         RestResponse getActualProductResponse = ProductRestUtils.getProduct(productDetails_01.getUniqueId(), sdncPmDetails1.getUserId());
666         Product actualProduct = ResponseParser.parseToObjectUsingMapper(getActualProductResponse.getResponse(), Product.class);
667         ComponentInstance actualComponentInstance = actualProduct.getComponentInstances().get(0);
668         assertEquals(serviceInstanceReqDetails.getPosX(), actualComponentInstance.getPosX());
669         assertEquals(serviceInstanceReqDetails.getPosY(), actualComponentInstance.getPosY());
670         assertEquals(nameFromResponse, actualComponentInstance.getName());
671     }
672
673     @Test(enabled = false)
674     public void updateServiceInstanceLocationNameIsEmpty() throws Exception {
675         String expectedServiceInstanceName = serviceDetails_01.getName() + " 2";
676         String expectedServiceInstancenormalizedName = serviceDetails_01.getName() + "2";
677         ComponentInstanceReqDetails serviceInstanceReqDetails = ElementFactory.getComponentResourceInstance(serviceDetails_01);
678         RestResponse createServiceInstanceResp = ComponentInstanceRestUtils.createComponentInstance(serviceInstanceReqDetails, sdncPmDetails1, productDetails_01.getUniqueId(), ComponentTypeEnum.PRODUCT);
679         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
680         serviceInstanceReqDetails.setPosX("100");
681         serviceInstanceReqDetails.setPosY("200");
682         serviceInstanceReqDetails.setName("");
683         RestResponse updateServiceInstanceResponse = ComponentInstanceRestUtils.updateComponentInstance(serviceInstanceReqDetails, sdncPmDetails1, productDetails_01.getUniqueId(), ComponentTypeEnum.PRODUCT);
684         ResourceRestUtils.checkSuccess(updateServiceInstanceResponse);
685         String nameFromResponse = ResponseParser.getNameFromResponse(updateServiceInstanceResponse);
686         String postX = ResponseParser.getValueFromJsonResponse(updateServiceInstanceResponse.getResponse(), "posX");
687         String postY = ResponseParser.getValueFromJsonResponse(updateServiceInstanceResponse.getResponse(), "posY");
688         assertEquals(nameFromResponse, expectedServiceInstanceName);
689         assertEquals(postX, "100");
690         assertEquals(postY, "200");
691         // get product and verify that service instanceName is correct
692         RestResponse getActualProductResponse = ProductRestUtils.getProduct(productDetails_01.getUniqueId(), sdncPmDetails1.getUserId());
693         Product actualProduct = ResponseParser.parseToObjectUsingMapper(getActualProductResponse.getResponse(), Product.class);
694         ComponentInstance actualComponentInstance = actualProduct.getComponentInstances().get(0);
695         assertEquals(serviceInstanceReqDetails.getPosX(), actualComponentInstance.getPosX());
696         assertEquals(serviceInstanceReqDetails.getPosY(), actualComponentInstance.getPosY());
697         assertEquals(nameFromResponse, actualComponentInstance.getName());
698         assertEquals(expectedServiceInstancenormalizedName.toLowerCase(), actualComponentInstance.getNormalizedName());
699     }
700
701     // pass
702     @Test
703     public void updateServiceInstanceNameToProductName() throws Exception {
704         ComponentInstanceReqDetails serviceInstanceReqDetails = ElementFactory.getComponentResourceInstance(serviceDetails_01);
705         RestResponse createServiceInstanceResp = ComponentInstanceRestUtils.createComponentInstance(serviceInstanceReqDetails, sdncPmDetails1, productDetails_01.getUniqueId(), ComponentTypeEnum.PRODUCT);
706         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
707         // ComponentInstance componentInstance =
708         // ResponseParser.parseToObjectUsingMapper(createServiceInstanceResp.getResponse(),
709         // ComponentInstance.class);
710         // addCompInstReqCapToExpected(componentInstance,
711         // ComponentTypeEnum.PRODUCT);
712         serviceInstanceReqDetails.setName(productDetails_01.getName());
713         RestResponse updateServiceInstanceResponse = ComponentInstanceRestUtils.updateComponentInstance(serviceInstanceReqDetails, sdncPmDetails1, productDetails_01.getUniqueId(), ComponentTypeEnum.PRODUCT);
714         ResourceRestUtils.checkSuccess(updateServiceInstanceResponse);
715         String instanceNormalizedName = ResponseParser.getValueFromJsonResponse(updateServiceInstanceResponse.getResponse(), "normalizedName");
716         String instanceName = ResponseParser.getValueFromJsonResponse(updateServiceInstanceResponse.getResponse(), "name");
717         assertEquals("check Resource Instance normalizedName ", (serviceInstanceReqDetails.getName()).toLowerCase(), instanceNormalizedName);
718         assertEquals("check Resource Instance Name ", serviceInstanceReqDetails.getName(), instanceName);
719         // get product and verify that service instanceName is correct
720         RestResponse getActualProductResponse = ProductRestUtils.getProduct(productDetails_01.getUniqueId(), sdncPmDetails1.getUserId());
721         Product actualProduct = ResponseParser.parseToObjectUsingMapper(getActualProductResponse.getResponse(), Product.class);
722         ComponentInstance actualComponentInstance = actualProduct.getComponentInstances().get(0);
723         assertEquals(serviceInstanceReqDetails.getName(), actualComponentInstance.getName());
724         assertEquals((serviceInstanceReqDetails.getName()).toLowerCase(), actualComponentInstance.getNormalizedName());
725     }
726
727     //// Delete Service Instance
728
729     @Test
730     public void deleteAllServiceInstanceFromProduct() throws Exception {
731         RestResponse createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
732         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
733         String serviceInstanceUniqueId = ResponseParser.getUniqueIdFromResponse(createServiceInstanceResp);
734         getComponentAndValidateRIs(productDetails_01, 1, 0);
735         RestResponse deleteServiceInstanceResp = deleteServiceInstance(serviceInstanceUniqueId, productDetails_01, sdncPmDetails1);
736         assertTrue(deleteServiceInstanceResp.getErrorCode() == STATUS_CODE_SUCCESS_DELETE);
737         getComponentAndValidateRIs(productDetails_01, 0, 0);
738     }
739
740     @Test
741     public void deleteServiceWhileServiceInstanceExistInProduct() throws Exception {
742         RestResponse createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
743         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
744         createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_02, sdncPmDetails1);
745         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
746         String serviceInstanceUniqueIdFromResponse = ResponseParser.getUniqueIdFromResponse(createServiceInstanceResp);
747         getComponentAndValidateRIs(productDetails_01, 2, 0);
748         // Delete service while service instance of it exist in product
749         RestResponse deleteServiceResponse = ServiceRestUtils.deleteServiceById(serviceDetails_01.getUniqueId(), sdncDesignerDetails.getUserId());
750         assertTrue(deleteServiceResponse.getErrorCode() == STATUS_CODE_SUCCESS_DELETE);
751         // Get product and verify that service instance still exists
752         RestResponse getActualProductResponse = ProductRestUtils.getProduct(productDetails_01.getUniqueId(), sdncPmDetails1.getUserId());
753         Product actualProduct = ResponseParser.parseToObjectUsingMapper(getActualProductResponse.getResponse(), Product.class);
754         // ComponentInstance actualComponentInstance =
755         // actualProduct.getComponentInstances().get(0);
756         // assertTrue(serviceInstanceUniqueIdFromResponse ==
757         // actualComponentInstance.getUniqueId());
758         getComponentAndValidateRIs(productDetails_01, 2, 0);
759     }
760
761     // pass
762     @Test
763     public void deleteServiceInstanceByPm() throws Exception {
764         RestResponse createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
765         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
766         String serviceInstanceUniqueId = ResponseParser.getUniqueIdFromResponse(createServiceInstanceResp);
767         createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
768         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
769         getComponentAndValidateRIs(productDetails_01, 2, 0);
770         RestResponse deleteServiceInstanceResp = deleteServiceInstance(serviceInstanceUniqueId, productDetails_01, sdncPmDetails1);
771         assertTrue(deleteServiceInstanceResp.getErrorCode() == STATUS_CODE_SUCCESS_DELETE);
772         getComponentAndValidateRIs(productDetails_01, 1, 0);
773     }
774
775     @Test
776     public void deleteServiceInstanceByPmCreatedByPm() throws Exception {
777         RestResponse restResponse = LifecycleRestUtils.changeProductState(productDetails_01, sdncPmDetails1, LifeCycleStatesEnum.CHECKIN);
778         ResourceRestUtils.checkSuccess(restResponse);
779         restResponse = LifecycleRestUtils.changeProductState(productDetails_01, sdncPmDetails1, LifeCycleStatesEnum.CHECKOUT);
780         ResourceRestUtils.checkSuccess(restResponse);
781         productDetails_01.setUniqueId(ResponseParser.getUniqueIdFromResponse(restResponse));
782         RestResponse createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
783         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
784         String serviceInstanceUniqueId = ResponseParser.getUniqueIdFromResponse(createServiceInstanceResp);
785         createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
786         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
787         getComponentAndValidateRIs(productDetails_01, 2, 0);
788         RestResponse deleteServiceInstanceResp = deleteServiceInstance(serviceInstanceUniqueId, productDetails_01, sdncPmDetails1);
789         assertTrue(deleteServiceInstanceResp.getErrorCode() == STATUS_CODE_SUCCESS_DELETE);
790         getComponentAndValidateRIs(productDetails_01, 1, 0);
791     }
792
793     @Test
794     public void deleteServiceInstanceByPmWhichIsCheckedOutByAnotherPm() throws Exception {
795         RestResponse restResponse = LifecycleRestUtils.changeProductState(productDetails_01, sdncPmDetails1, LifeCycleStatesEnum.CHECKIN);
796         ResourceRestUtils.checkSuccess(restResponse);
797         restResponse = LifecycleRestUtils.changeProductState(productDetails_01, sdncPmDetails1, LifeCycleStatesEnum.CHECKOUT);
798         ResourceRestUtils.checkSuccess(restResponse);
799         RestResponse createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
800         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
801         String serviceInstanceUniqueId = ResponseParser.getUniqueIdFromResponse(createServiceInstanceResp);
802         createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
803         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
804         getComponentAndValidateRIs(productDetails_01, 2, 0);
805         RestResponse deleteServiceInstanceResp = deleteServiceInstance(serviceInstanceUniqueId, productDetails_01, sdncPmDetails2);
806         assertTrue(deleteServiceInstanceResp.getErrorCode() == STATUS_CODE_RESTRICTED_OPERATION);
807         ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESTRICTED_OPERATION.name(), new ArrayList<String>(), deleteServiceInstanceResp.getResponse());
808         getComponentAndValidateRIs(productDetails_01, 2, 0);
809     }
810
811     // DE190189
812     @Test
813     public void deleteServiceInstanceByPmCreatedByPs() throws Exception {
814         RestResponse createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
815         String productOldUniqueId = productDetails_01.getUniqueId();
816         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
817         getComponentAndValidateRIs(productDetails_01, 1, 0);
818         RestResponse restResponse = LifecycleRestUtils.changeProductState(productDetails_01, sdncPmDetails1, LifeCycleStatesEnum.CHECKIN);
819         ResourceRestUtils.checkSuccess(restResponse);
820         restResponse = LifecycleRestUtils.changeProductState(productDetails_01, sdncPmDetails1, LifeCycleStatesEnum.CHECKOUT);
821         ResourceRestUtils.checkSuccess(restResponse);
822         String productNewUniqueId = ResponseParser.getUniqueIdFromResponse(restResponse);
823         updateExpectedReqCapAfterChangeLifecycleState(productOldUniqueId, productNewUniqueId);
824         // get product and get service instance new uniquId
825         RestResponse getActualProductResponse = ProductRestUtils.getProduct(productDetails_01.getUniqueId(), sdncPmDetails1.getUserId());
826         Product actualProduct = ResponseParser.parseToObjectUsingMapper(getActualProductResponse.getResponse(), Product.class);
827         ComponentInstance actualComponentInstance = actualProduct.getComponentInstances().get(0);
828         String serviceInstanceUniqueId = actualComponentInstance.getUniqueId();
829         RestResponse deleteServiceInstanceResp = deleteServiceInstance(serviceInstanceUniqueId, productDetails_01, sdncPmDetails1);
830         assertTrue(deleteServiceInstanceResp.getErrorCode() == STATUS_CODE_SUCCESS_DELETE);
831         getComponentAndValidateRIs(productDetails_01, 0, 0);
832     }
833
834     // DE190189
835     @Test
836     public void deleteServiceInstanceByAdminCreatedByPs() throws Exception {
837         RestResponse createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
838         String productOldUniqueId = productDetails_01.getUniqueId();
839         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
840         getComponentAndValidateRIs(productDetails_01, 1, 0);
841         RestResponse restResponse = LifecycleRestUtils.changeProductState(productDetails_01, sdncPmDetails1, LifeCycleStatesEnum.CHECKIN);
842         ResourceRestUtils.checkSuccess(restResponse);
843         restResponse = LifecycleRestUtils.changeProductState(productDetails_01, sdncAdminDetails, LifeCycleStatesEnum.CHECKOUT);
844         ResourceRestUtils.checkSuccess(restResponse);
845         String productNewUniqueId = ResponseParser.getUniqueIdFromResponse(restResponse);
846         updateExpectedReqCapAfterChangeLifecycleState(productOldUniqueId, productNewUniqueId);
847         // get product and get service instance new uniquId
848         RestResponse getActualProductResponse = ProductRestUtils.getProduct(productDetails_01.getUniqueId(), sdncAdminDetails.getUserId());
849         Product actualProduct = ResponseParser.parseToObjectUsingMapper(getActualProductResponse.getResponse(), Product.class);
850         ComponentInstance actualComponentInstance = actualProduct.getComponentInstances().get(0);
851         String serviceInstanceUniqueId = actualComponentInstance.getUniqueId();
852         RestResponse deleteServiceInstanceResp = deleteServiceInstance(serviceInstanceUniqueId, productDetails_01, sdncAdminDetails);
853         assertTrue(deleteServiceInstanceResp.getErrorCode() == STATUS_CODE_SUCCESS_DELETE);
854         getComponentAndValidateRIs(productDetails_01, 0, 0);
855     }
856
857     @Test
858     public void createAndDeleteServiceInstanceByAdmin() throws Exception {
859         RestResponse restResponse = LifecycleRestUtils.changeProductState(productDetails_01, sdncPmDetails1, LifeCycleStatesEnum.CHECKIN);
860         ResourceRestUtils.checkSuccess(restResponse);
861         restResponse = LifecycleRestUtils.changeProductState(productDetails_01, sdncAdminDetails, LifeCycleStatesEnum.CHECKOUT);
862         ResourceRestUtils.checkSuccess(restResponse);
863         // productDetails_01.setUniqueId(ResponseParser.getUniqueIdFromResponse(restResponse));
864         RestResponse createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncAdminDetails);
865         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
866         String serviceInstanceUniqueId = ResponseParser.getUniqueIdFromResponse(createServiceInstanceResp);
867         createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncAdminDetails);
868         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
869         getComponentAndValidateRIs(productDetails_01, 2, 0);
870         RestResponse deleteServiceInstanceResp = deleteServiceInstance(serviceInstanceUniqueId, productDetails_01, sdncAdminDetails);
871         assertTrue(deleteServiceInstanceResp.getErrorCode() == STATUS_CODE_SUCCESS_DELETE);
872         getComponentAndValidateRIs(productDetails_01, 1, 0);
873     }
874
875     @Test
876     public void deleteServiceInstanceFromNonCheckOutProduct() throws Exception {
877         RestResponse createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
878         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
879         String serviceInstanceUniqueId = ResponseParser.getUniqueIdFromResponse(createServiceInstanceResp);
880         getComponentAndValidateRIs(productDetails_01, 1, 0);
881         RestResponse restResponse = LifecycleRestUtils.changeProductState(productDetails_01, sdncPmDetails1, LifeCycleStatesEnum.CHECKIN);
882         ResourceRestUtils.checkSuccess(restResponse);
883         RestResponse deleteServiceInstanceResp = deleteServiceInstance(serviceInstanceUniqueId, productDetails_01, sdncPmDetails1);
884         assertTrue(deleteServiceInstanceResp.getErrorCode() == STATUS_CODE_RESTRICTED_OPERATION);
885         ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESTRICTED_OPERATION.name(), new ArrayList<String>(), deleteServiceInstanceResp.getResponse());
886         getComponentAndValidateRIs(productDetails_01, 1, 0);
887     }
888
889     @Test
890     public void deleteServiceInstanceByDesigner() throws Exception {
891         RestResponse createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
892         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
893         String serviceInstanceUniqueId = ResponseParser.getUniqueIdFromResponse(createServiceInstanceResp);
894         createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
895         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
896         getComponentAndValidateRIs(productDetails_01, 2, 0);
897         RestResponse deleteServiceInstanceResp = deleteServiceInstance(serviceInstanceUniqueId, productDetails_01, sdncDesignerDetails);
898         assertTrue(deleteServiceInstanceResp.getErrorCode() == STATUS_CODE_RESTRICTED_OPERATION);
899         ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESTRICTED_OPERATION.name(), new ArrayList<String>(), deleteServiceInstanceResp.getResponse());
900         getComponentAndValidateRIs(productDetails_01, 2, 0);
901     }
902
903     @Test
904     public void deleteServiceInstanceByTester() throws Exception {
905         RestResponse createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
906         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
907         String serviceInstanceUniqueId = ResponseParser.getUniqueIdFromResponse(createServiceInstanceResp);
908         createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
909         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
910         getComponentAndValidateRIs(productDetails_01, 2, 0);
911         RestResponse deleteServiceInstanceResp = deleteServiceInstance(serviceInstanceUniqueId, productDetails_01, sdncTesterDetails);
912         assertTrue(deleteServiceInstanceResp.getErrorCode() == STATUS_CODE_RESTRICTED_OPERATION);
913         ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESTRICTED_OPERATION.name(), new ArrayList<String>(), deleteServiceInstanceResp.getResponse());
914         getComponentAndValidateRIs(productDetails_01, 2, 0);
915     }
916
917     @Test
918     public void deleteServiceInstanceByPsWhichIsCheckedOutByAnotherPs() throws Exception {
919         RestResponse createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
920         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
921         String serviceInstanceUniqueId = ResponseParser.getUniqueIdFromResponse(createServiceInstanceResp);
922         createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
923         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
924         getComponentAndValidateRIs(productDetails_01, 2, 0);
925         RestResponse deleteServiceInstanceResp = deleteServiceInstance(serviceInstanceUniqueId, productDetails_01, sdncPsDetails2);
926         assertTrue(deleteServiceInstanceResp.getErrorCode() == STATUS_CODE_RESTRICTED_OPERATION);
927         ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESTRICTED_OPERATION.name(), new ArrayList<String>(), deleteServiceInstanceResp.getResponse());
928         getComponentAndValidateRIs(productDetails_01, 2, 0);
929     }
930
931     // pass
932     @Test
933     public void deleteServiceInstanceByNonAsdcUser() throws Exception {
934         User nonExistingSdncUser = ElementFactory.getDefaultUser(UserRoleEnum.PRODUCT_MANAGER1);
935         ;
936         nonExistingSdncUser.setUserId("bt1234");
937         RestResponse createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
938         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
939         String serviceInstanceUniqueId = ResponseParser.getUniqueIdFromResponse(createServiceInstanceResp);
940         createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
941         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
942         getComponentAndValidateRIs(productDetails_01, 2, 0);
943         RestResponse deleteServiceInstanceResp = deleteServiceInstance(serviceInstanceUniqueId, productDetails_01, nonExistingSdncUser);
944         assertTrue(deleteServiceInstanceResp.getErrorCode() == STATUS_CODE_RESTRICTED_OPERATION);
945         ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESTRICTED_OPERATION.name(), new ArrayList<String>(), deleteServiceInstanceResp.getResponse());
946         getComponentAndValidateRIs(productDetails_01, 2, 0);
947     }
948
949     @Test
950     public void deleteServiceInstanceFromNonExistingProduct() throws Exception {
951         RestResponse createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
952         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
953         String serviceInstanceUniqueId = ResponseParser.getUniqueIdFromResponse(createServiceInstanceResp);
954         createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
955         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
956         getComponentAndValidateRIs(productDetails_01, 2, 0);
957         RestResponse deleteResourceInstanceResponse = ComponentInstanceRestUtils.deleteComponentInstance(sdncPmDetails1, "1234567890", serviceInstanceUniqueId, ComponentTypeEnum.PRODUCT);
958         assertTrue(deleteResourceInstanceResponse.getErrorCode() == STATUS_CODE_NOT_FOUND);
959         ArrayList<String> varibales = new ArrayList<String>();
960         varibales.add("");
961         ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.PRODUCT_NOT_FOUND.name(), varibales, deleteResourceInstanceResponse.getResponse());
962         getComponentAndValidateRIs(productDetails_01, 2, 0);
963     }
964
965     @Test
966     public void deleteNonExistingServiceInstanceFromProduct() throws Exception {
967         RestResponse createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
968         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
969         // String serviceInstanceUniqueId =
970         // ResponseParser.getUniqueIdFromResponse(createServiceInstanceResp);
971         createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
972         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
973         getComponentAndValidateRIs(productDetails_01, 2, 0);
974         RestResponse deleteResourceInstanceResponse = ComponentInstanceRestUtils.deleteComponentInstance(sdncPmDetails1, productDetails_01.getUniqueId(), "1234567890123456unExistingServiceInstance", ComponentTypeEnum.PRODUCT);
975         assertTrue(deleteResourceInstanceResponse.getErrorCode() == STATUS_CODE_NOT_FOUND);
976         ArrayList<String> varibales = new ArrayList<String>();
977         varibales.add("1234567890123456unExistingServiceInstance");
978         ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.PRODUCT_NOT_FOUND.name(), varibales, deleteResourceInstanceResponse.getResponse());
979         getComponentAndValidateRIs(productDetails_01, 2, 0);
980     }
981
982     @Test
983     public void deleteServiceInstanceFromNonSupportedComponentType() throws Exception {
984         RestResponse createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
985         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
986         String serviceInstanceUniqueId = ResponseParser.getUniqueIdFromResponse(createServiceInstanceResp);
987         createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
988         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
989         getComponentAndValidateRIs(productDetails_01, 2, 0);
990         RestResponse deleteResourceInstanceResponse = ComponentInstanceRestUtils.deleteComponentInstance(sdncPmDetails1, productDetails_01.getUniqueId(), serviceInstanceUniqueId, ComponentTypeEnum.RESOURCE_INSTANCE);
991         assertTrue(deleteResourceInstanceResponse.getErrorCode() == STATUS_CODE_UNSUPPORTED_ERROR);
992         ArrayList<String> varibales = new ArrayList<String>();
993         varibales.add("null");
994         ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.UNSUPPORTED_ERROR.name(), varibales, deleteResourceInstanceResponse.getResponse());
995         getComponentAndValidateRIs(productDetails_01, 2, 0);
996     }
997
998     @Test
999     public void deleteServiceInstanceComponentTypeIsNotProduct() throws Exception {
1000         RestResponse createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
1001         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
1002         String serviceInstanceUniqueId = ResponseParser.getUniqueIdFromResponse(createServiceInstanceResp);
1003         createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
1004         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
1005         getComponentAndValidateRIs(productDetails_01, 2, 0);
1006         RestResponse deleteResourceInstanceResponse = ComponentInstanceRestUtils.deleteComponentInstance(sdncPmDetails1, productDetails_01.getUniqueId(), serviceInstanceUniqueId, ComponentTypeEnum.SERVICE);
1007         assertTrue(deleteResourceInstanceResponse.getErrorCode() == STATUS_CODE_NOT_FOUND);
1008         ArrayList<String> varibales = new ArrayList<String>();
1009         varibales.add("");
1010         ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.SERVICE_NOT_FOUND.name(), varibales, deleteResourceInstanceResponse.getResponse());
1011         getComponentAndValidateRIs(productDetails_01, 2, 0);
1012     }
1013
1014     @Test
1015     public void deleteServiceInstanceUserIdIsEmpty() throws Exception {
1016         User nonSdncDetails = ElementFactory.getDefaultUser(UserRoleEnum.TESTER);
1017         nonSdncDetails.setUserId("");
1018         RestResponse createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
1019         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
1020         String serviceInstanceUniqueId = ResponseParser.getUniqueIdFromResponse(createServiceInstanceResp);
1021         getComponentAndValidateRIs(productDetails_01, 1, 0);
1022         RestResponse deleteServiceInstanceResp = deleteServiceInstance(serviceInstanceUniqueId, productDetails_01, nonSdncDetails);
1023         assertTrue(deleteServiceInstanceResp.getErrorCode() == STATUS_CODE_MISSING_INFORMATION);
1024         ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.MISSING_INFORMATION.name(), new ArrayList<String>(), deleteServiceInstanceResp.getResponse());
1025         getComponentAndValidateRIs(productDetails_01, 1, 0);
1026     }
1027
1028     @Test
1029     public void deleteCertifiedServiceInstance() throws Exception {
1030         changeServiceStateToCertified(serviceDetails_01);
1031         RestResponse createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
1032         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
1033         String serviceInstanceUniqueId = ResponseParser.getUniqueIdFromResponse(createServiceInstanceResp);
1034         createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_02, sdncPmDetails1);
1035         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
1036         getComponentAndValidateRIs(productDetails_01, 2, 0);
1037         RestResponse deleteServiceInstanceResp = deleteServiceInstance(serviceInstanceUniqueId, productDetails_01, sdncPmDetails1);
1038         assertTrue(deleteServiceInstanceResp.getErrorCode() == STATUS_CODE_SUCCESS_DELETE);
1039         getComponentAndValidateRIs(productDetails_01, 1, 0);
1040     }
1041
1042     ////////////////////////////////////
1043
1044     private void certifyVf(ResourceReqDetails resource) throws Exception {
1045         RestResponse createAtomicResourceInstance = createAtomicInstanceForVFDuringSetup(resource, resourceDetailsCP_01, sdncDesignerDetails);
1046         ResourceRestUtils.checkCreateResponse(createAtomicResourceInstance);
1047         String cpCompInstId = ResponseParser.getUniqueIdFromResponse(createAtomicResourceInstance);
1048
1049         createAtomicResourceInstance = createAtomicInstanceForVFDuringSetup(resource, resourceDetailsVFC_02, sdncDesignerDetails);
1050         ResourceRestUtils.checkCreateResponse(createAtomicResourceInstance);
1051         String computeCompInstId = ResponseParser.getUniqueIdFromResponse(createAtomicResourceInstance);
1052
1053         createAtomicResourceInstance = createAtomicInstanceForVFDuringSetup(resource, resourceDetailsVL_01, sdncDesignerDetails);
1054         ResourceRestUtils.checkCreateResponse(createAtomicResourceInstance);
1055         String vlCompInstId = ResponseParser.getUniqueIdFromResponse(createAtomicResourceInstance);
1056
1057         // Fixing Vl/Cp req/cap
1058         ComponentTypeEnum containerCompType = ComponentTypeEnum.RESOURCE;
1059         User user = sdncDesignerDetails;
1060         fulfillCpRequirement(resource, cpCompInstId, computeCompInstId, computeCompInstId, user, containerCompType);
1061         consumeVlCapability(resource, cpCompInstId, vlCompInstId, cpCompInstId, user, containerCompType);
1062
1063         RestResponse response = ArtifactRestUtils.addInformationalArtifactToResource(heatArtifactDetails, sdncDesignerDetails, resource.getUniqueId());
1064         ResourceRestUtils.checkSuccess(response);
1065         RestResponse changeResourceStateToCertified = changeResourceStateToCertified(resource);
1066         ResourceRestUtils.checkSuccess(changeResourceStateToCertified);
1067     }
1068
1069     private RestResponse changeResourceStateToCertified(ResourceReqDetails resourceDetails) throws Exception {
1070 /*              RestResponse restResponse = LifecycleRestUtils.changeResourceState(resourceDetails, sdncDesignerDetails, LifeCycleStatesEnum.CHECKIN);
1071         ResourceRestUtils.checkSuccess(restResponse);
1072                 restResponse = LifecycleRestUtils.changeResourceState(resourceDetails, sdncDesignerDetails, LifeCycleStatesEnum.CERTIFICATIONREQUEST);
1073                 if (restResponse.getErrorCode() == 200) {
1074                         restResponse = LifecycleRestUtils.changeResourceState(resourceDetails, sdncTesterDetails, LifeCycleStatesEnum.STARTCERTIFICATION);
1075                 } else
1076                         return restResponse;
1077                 if (restResponse.getErrorCode() == 200) {*/
1078         RestResponse restResponse = LifecycleRestUtils.changeResourceState(resourceDetails, sdncDesignerDetails, LifeCycleStatesEnum.CERTIFY);
1079         if (restResponse.getErrorCode() == 200) {
1080             String newVersion = ResponseParser.getVersionFromResponse(restResponse);
1081             resourceDetails.setVersion(newVersion);
1082             resourceDetails.setLifecycleState(LifecycleStateEnum.CERTIFIED);
1083             resourceDetails.setLastUpdaterUserId(sdncDesignerDetails.getUserId());
1084             resourceDetails.setLastUpdaterFullName(sdncDesignerDetails.getFullName());
1085             String uniqueIdFromRresponse = ResponseParser.getValueFromJsonResponse(restResponse.getResponse(), "uniqueId");
1086             resourceDetails.setUniqueId(uniqueIdFromRresponse);
1087         }
1088                 return restResponse;
1089 }
1090
1091     private RestResponse changeServiceStateToCertified(ServiceReqDetails serviceDetails) throws Exception {
1092                 /*
1093                  * RestResponse restResponse = LifecycleRestUtils.changeServiceState(serviceDetails, sdncDesignerDetails, LifeCycleStatesEnum.CHECKIN); ResourceRestUtils.checkSuccess(restResponse);
1094                  */
1095         RestResponse restResponse = LifecycleRestUtils.changeServiceState(serviceDetails, sdncDesignerDetails, LifeCycleStatesEnum.CERTIFICATIONREQUEST);
1096         if (restResponse.getErrorCode() == 200) {
1097             restResponse = LifecycleRestUtils.changeServiceState(serviceDetails, sdncTesterDetails, LifeCycleStatesEnum.STARTCERTIFICATION);
1098         } else
1099             return restResponse;
1100         if (restResponse.getErrorCode() == 200) {
1101             restResponse = LifecycleRestUtils.changeServiceState(serviceDetails, sdncTesterDetails, LifeCycleStatesEnum.CERTIFY);
1102             if (restResponse.getErrorCode() == 200) {
1103                 serviceDetails.setVersion("1.0");
1104                 serviceDetails.setLifecycleState(LifecycleStateEnum.CERTIFIED);
1105                 serviceDetails.setLastUpdaterUserId(sdncTesterDetails.getUserId());
1106                 serviceDetails.setLastUpdaterFullName(sdncTesterDetails.getFullName());
1107                 String uniqueIdFromRresponse = ResponseParser.getValueFromJsonResponse(restResponse.getResponse(), "uniqueId");
1108                 serviceDetails.setUniqueId(uniqueIdFromRresponse);
1109             }
1110         }
1111         return restResponse;
1112     }
1113
1114     @Test
1115     public void deleteServiceInstanceTest() throws Exception {
1116         RestResponse createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
1117         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
1118         getComponentAndValidateRIs(productDetails_01, 1, 0);
1119         String compInstId = ResponseParser.getUniqueIdFromResponse(createServiceInstanceResp);
1120
1121         createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_02, sdncPmDetails1);
1122         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
1123         getComponentAndValidateRIs(productDetails_01, 2, 0);
1124         String compInstId2 = ResponseParser.getUniqueIdFromResponse(createServiceInstanceResp);
1125
1126         RestResponse deleteServiceInstanceResp = deleteServiceInstance(compInstId, productDetails_01, sdncPmDetails1);
1127         ResourceRestUtils.checkDeleteResponse(deleteServiceInstanceResp);
1128         getComponentAndValidateRIs(productDetails_01, 1, 0);
1129
1130         deleteServiceInstanceResp = deleteServiceInstance(compInstId2, productDetails_01, sdncPmDetails1);
1131         ResourceRestUtils.checkDeleteResponse(deleteServiceInstanceResp);
1132         getComponentAndValidateRIs(productDetails_01, 0, 0);
1133     }
1134
1135     @Test
1136     public void returnedServiceInstanceTypeAttributeTest() throws Exception {
1137         String expectedServiceType = ComponentTypeEnum.SERVICE.getValue().toUpperCase();
1138
1139         RestResponse createServiceInstanceResp = createServiceInstance(productDetails_01, serviceDetails_01, sdncPmDetails1);
1140         ResourceRestUtils.checkCreateResponse(createServiceInstanceResp);
1141         String serviceUniqueIdFromResponse = ResponseParser.getUniqueIdFromResponse(createServiceInstanceResp);
1142         ComponentInstanceRestUtils.checkComponentInstanceType(createServiceInstanceResp, expectedServiceType);
1143
1144         RestResponse getProductResp = ProductRestUtils.getProduct(productDetails_01.getUniqueId(), sdncPsDetails1.getUserId());
1145         ProductRestUtils.checkSuccess(getProductResp);
1146         Product productObject = ResponseParser.parseToObjectUsingMapper(getProductResp.getResponse(), Product.class);
1147         List<ComponentInstance> productComponentInstances = productObject.getComponentInstances();
1148         for (ComponentInstance comp : productComponentInstances) {
1149             String actualOriginType = comp.getOriginType().getValue().toUpperCase();
1150             assertTrue(expectedServiceType.equals(actualOriginType));
1151         }
1152
1153         ComponentInstanceReqDetails serviceInstanceReqDetails = ElementFactory.getComponentResourceInstance(serviceDetails_02);
1154         serviceInstanceReqDetails.setUniqueId(serviceUniqueIdFromResponse);
1155         serviceInstanceReqDetails.setComponentUid(serviceDetails_01.getUniqueId());
1156         RestResponse updateResourceInstance = ComponentInstanceRestUtils.updateComponentInstance(serviceInstanceReqDetails, sdncPmDetails1, productDetails_01.getUniqueId(), ComponentTypeEnum.PRODUCT);
1157         ComponentInstanceRestUtils.checkSuccess(updateResourceInstance);
1158         ComponentInstanceRestUtils.checkComponentInstanceType(updateResourceInstance, expectedServiceType);
1159
1160     }
1161 }