re base code
[sdc.git] / test-apis-ci / src / main / java / org / openecomp / sdc / ci / tests / utils / rest / ComponentInstanceRestUtils.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.utils.rest;
22
23 import com.google.gson.Gson;
24 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
25 import org.openecomp.sdc.be.model.*;
26 import org.openecomp.sdc.ci.tests.api.Urls;
27 import org.openecomp.sdc.ci.tests.config.Config;
28 import org.openecomp.sdc.ci.tests.datatypes.ComponentInstanceReqDetails;
29 import org.openecomp.sdc.ci.tests.datatypes.http.HttpHeaderEnum;
30 import org.openecomp.sdc.ci.tests.datatypes.http.RestResponse;
31 import org.openecomp.sdc.ci.tests.utils.Utils;
32
33 import java.io.IOException;
34 import java.util.HashMap;
35 import java.util.List;
36 import java.util.Map;
37
38 import static org.testng.Assert.assertTrue;
39
40 public class ComponentInstanceRestUtils extends BaseRestUtils {
41 //      public static String acceptHeaderDate = "application/json";
42         static Config config = Config.instance();
43         public static Gson gson = new Gson();
44
45         // 'componentType' can be 'services' or 'resources'
46
47         public static RestResponse createComponentInstance(ComponentInstanceReqDetails componentInstanceReqDetails,
48                         User sdncModifierDetails, Component component) throws Exception {
49                 return createComponentInstance(componentInstanceReqDetails, sdncModifierDetails, component.getUniqueId(),
50                                 component.getComponentType());
51         }
52
53         public static RestResponse createComponentInstance(ComponentInstanceReqDetails componentInstanceReqDetails,
54                         User sdncModifierDetails, String componentId, ComponentTypeEnum componentType) throws Exception {
55
56                 return createComponentInstance(componentInstanceReqDetails, sdncModifierDetails, componentId,
57                                 ComponentTypeEnum.findParamByType(componentType));
58         }
59
60         public static RestResponse createComponentInstance(ComponentInstanceReqDetails componentInstanceReqDetails,
61                         User sdncModifierDetails, String componentId, String componentType) throws Exception {
62                 Config config = Utils.getConfig();
63                 String userId = sdncModifierDetails.getUserId();
64                 String serviceBodyJson = gson.toJson(componentInstanceReqDetails);
65                 String url = String.format(Urls.CREATE_COMPONENT_INSTANCE, config.getCatalogBeHost(), config.getCatalogBePort(),
66                                 componentType, componentId);
67                 RestResponse createResourceInstance = sendPost(url, serviceBodyJson, userId, acceptHeaderData);
68                 if (createResourceInstance.getErrorCode().equals(BaseRestUtils.STATUS_CODE_CREATED)) {
69                         String uniqueId = ResponseParser.getValueFromJsonResponse(createResourceInstance.getResponse(), "uniqueId");
70                         componentInstanceReqDetails.setUniqueId(uniqueId);
71                         // Gson gson = new Gson();
72                         // ResourceInstanceReqDetails fromJson =
73                         // gson.fromJson(createResourceInstance.getResponse(),
74                         // ResourceInstanceReqDetails.class);
75                         // componentInstanceReqDetails.setUniqueId(fromJson.getUniqueId());
76                 }
77                 return createResourceInstance;
78         }
79
80         public static RestResponse getComponentInstances(ComponentTypeEnum type, String componentId, User user)
81                         throws IOException {
82
83                 Config config = Utils.getConfig();
84
85                 Map<String, String> headersMap = new HashMap<>();
86                 headersMap.put(HttpHeaderEnum.CONTENT_TYPE.getValue(), contentTypeHeaderData);
87                 headersMap.put(HttpHeaderEnum.ACCEPT.getValue(), acceptHeaderData);
88                 headersMap.put(HttpHeaderEnum.USER_ID.getValue(), user.getUserId());
89
90                 String url = String.format(Urls.GET_COMPONENT_INSTANCES, config.getCatalogBeHost(), config.getCatalogBePort(),
91                                 ComponentTypeEnum.findParamByType(type), componentId);
92
93                 RestResponse sendGetServerRequest = sendGet(url, user.getUserId(), headersMap);
94
95                 return sendGetServerRequest;
96
97         }
98
99         public static RestResponse deleteComponentInstance(User sdncModifierDetails, String componentId,
100                         String resourceInstanceId, ComponentTypeEnum componentType) throws Exception {
101
102                 return deleteComponentInstance(sdncModifierDetails, componentId, resourceInstanceId,
103                                 ComponentTypeEnum.findParamByType(componentType));
104         }
105
106         public static RestResponse deleteComponentInstance(User sdncModifierDetails, String componentId,
107                         String resourceInstanceId, String componentTypeString) throws Exception {
108                 Config config = Utils.getConfig();
109                 String userId = sdncModifierDetails.getUserId();
110                 String url = String.format(Urls.DELETE_COMPONENT_INSTANCE, config.getCatalogBeHost(), config.getCatalogBePort(),
111                                 componentTypeString, componentId, resourceInstanceId);
112                 RestResponse sendCreateUserRequest = sendDelete(url, userId);
113                 return sendCreateUserRequest;
114         }
115
116         public static RestResponse updateComponentInstance(ComponentInstanceReqDetails componentInstanceReqDetails,
117                         User sdncModifierDetails, String componentId, ComponentTypeEnum componentType) throws IOException {
118
119                 Config config = Utils.getConfig();
120                 String userId = sdncModifierDetails.getUserId();
121                 String serviceBodyJson = gson.toJson(componentInstanceReqDetails);
122                 String url = String.format(Urls.UPDATE_COMPONENT_INSTANCE, config.getCatalogBeHost(), config.getCatalogBePort(),
123                                 ComponentTypeEnum.findParamByType(componentType), componentId,
124                                 componentInstanceReqDetails.getUniqueId());
125                 RestResponse updateResourceInstance = sendPost(url, serviceBodyJson, userId, acceptHeaderData);
126                 return updateResourceInstance;
127         }
128
129         //Tal G - CI for New API Multiple Instance Update
130         public static RestResponse updateMultipleComponentInstance(
131                         List<ComponentInstanceReqDetails> componentInstanceReqDetailsList, User sdncModifierDetails,
132                         String componentId, ComponentTypeEnum componentType) throws IOException {
133                 Config config = Utils.getConfig();
134                 String userId = sdncModifierDetails.getUserId();
135                 String serviceBodyJson = gson.toJson(componentInstanceReqDetailsList.toArray());
136                 String url = String.format(Urls.UPDATE_MULTIPLE_COMPONENT_INSTANCE, config.getCatalogBeHost(),
137                                 config.getCatalogBePort(), ComponentTypeEnum.findParamByType(componentType), componentId);
138                 RestResponse updateResourceInstance = sendPost(url, serviceBodyJson, userId, acceptHeaderData);
139                 return updateResourceInstance;
140         }
141
142         public static RestResponse associateInstances(RequirementCapabilityRelDef relation, User sdncModifierDetails,
143                         String componentId, ComponentTypeEnum componentTypeEnum) throws IOException {
144
145                 Config config = Utils.getConfig();
146
147                 String componentType = "";
148                 switch (componentTypeEnum) {
149                 case RESOURCE:
150                         componentType = ComponentTypeEnum.RESOURCE_PARAM_NAME;
151                         break;
152                 case SERVICE:
153                         componentType = ComponentTypeEnum.SERVICE_PARAM_NAME;
154                         break;
155                 default:
156                         break;
157                 }
158                 String serviceBodyJson = gson.toJson(relation);
159                 String url = String.format(Urls.ASSOCIATE__RESOURCE_INSTANCE, config.getCatalogBeHost(),
160                                 config.getCatalogBePort(), componentType, componentId);
161
162                 RestResponse associateInstance = sendPost(url, serviceBodyJson, sdncModifierDetails.getUserId(),
163                                 acceptHeaderData);
164                 return associateInstance;
165
166         }
167
168         public static RestResponse dissociateInstances(RequirementCapabilityRelDef relation, User sdncModifierDetails,
169                         String componentId, ComponentTypeEnum componentTypeEnum) throws IOException {
170
171                 Config config = Utils.getConfig();
172
173                 String componentType = "";
174                 switch (componentTypeEnum) {
175                 case RESOURCE:
176                         componentType = ComponentTypeEnum.RESOURCE_PARAM_NAME;
177                         break;
178                 case SERVICE:
179                         componentType = ComponentTypeEnum.SERVICE_PARAM_NAME;
180                         break;
181                 default:
182                         break;
183                 }
184                 String serviceBodyJson = gson.toJson(relation);
185                 String url = String.format(Urls.DISSOCIATE__RESOURCE_INSTANCE, config.getCatalogBeHost(),
186                                 config.getCatalogBePort(), componentType, componentId);
187
188                 RestResponse associateInstance = sendPut(url, serviceBodyJson, sdncModifierDetails.getUserId(),
189                                 acceptHeaderData);
190                 return associateInstance;
191
192         }
193
194         public static void checkComponentInstanceType(RestResponse response, String expectedComponentType) {
195                 String actualComponentType = ResponseParser.getComponentTypeFromResponse(response);
196                 assertTrue(expectedComponentType.equals(actualComponentType),
197                                 "Failed. expected: " + expectedComponentType + ", actual: " + actualComponentType + "/");
198         }
199
200         public static RestResponse updatePropertyValueOnResourceInstance(Component component, ComponentInstance instDetails,
201                         User user, ComponentInstanceProperty updatedInstanceProperty) throws IOException {
202
203                 Config config = Utils.getConfig();
204
205                 Map<String, String> headersMap = new HashMap<>();
206                 headersMap.put(HttpHeaderEnum.CONTENT_TYPE.getValue(), contentTypeHeaderData);
207                 headersMap.put(HttpHeaderEnum.ACCEPT.getValue(), acceptHeaderData);
208                 headersMap.put(HttpHeaderEnum.USER_ID.getValue(), user.getUserId());
209
210                 String url = String.format(Urls.UPDATE_PROPERTY_TO_RESOURCE_INSTANCE, config.getCatalogBeHost(),
211                                 config.getCatalogBePort(), ComponentTypeEnum.findParamByType(component.getComponentType()),
212                                 component.getUniqueId(), instDetails.getUniqueId());
213                 String body = gson.toJson(updatedInstanceProperty);
214
215                 RestResponse sendGetServerRequest = sendPost(url, body, user.getUserId(), acceptHeaderData);
216                 return sendGetServerRequest;
217
218         }
219
220         public static RestResponse changeComponentInstanceVersion(Component container,
221                         ComponentInstance componentInstanceToReplace, Component newInstance, User sdncModifierDetails)
222                         throws Exception {
223
224                 return changeComponentInstanceVersion(container.getUniqueId(), componentInstanceToReplace, newInstance,
225                                 sdncModifierDetails, container.getComponentType());
226         }
227
228         public static RestResponse changeComponentInstanceVersion(String containerUID,
229                         ComponentInstance componentInstanceToReplace, Component component, User sdncModifierDetails,
230                         ComponentTypeEnum componentType) throws IOException {
231
232                 Config config = Utils.getConfig();
233                 String resourceUid = ("{\"componentUid\":\"" + component.getUniqueId() + "\"}");
234                 String url = String.format(Urls.CHANGE__RESOURCE_INSTANCE_VERSION, config.getCatalogBeHost(),
235                                 config.getCatalogBePort(), ComponentTypeEnum.findParamByType(componentType), containerUID,
236                                 componentInstanceToReplace.getUniqueId());
237                 RestResponse changeResourceInstanceVersion = sendPost(url, resourceUid, sdncModifierDetails.getUserId(),
238                                 acceptHeaderData);
239
240                 if (changeResourceInstanceVersion.getErrorCode() == 200
241                                 || changeResourceInstanceVersion.getErrorCode() == 201) {
242                         Gson gson = new Gson();
243                         // ResourceInstanceReqDetails
244                         // convertResourceInstanceResponseToJavaObject =
245                         // ResponseParser.convertResourceInstanceResponseToJavaObject(createResourceInstance.getResponse());
246                         ComponentInstanceReqDetails fromJson = gson.fromJson(changeResourceInstanceVersion.getResponse(),
247                                         ComponentInstanceReqDetails.class);
248
249                         componentInstanceToReplace.setUniqueId(fromJson.getUniqueId());
250
251                 }
252
253                 return changeResourceInstanceVersion;
254
255         }
256
257         public static RestResponse changeComponentInstanceVersion(String componentUniqueId,
258                         String serviceInstanceToReplaceUniqueId, String serviceUniqueId, User sdncModifierDetails,
259                         ComponentTypeEnum componentType) throws IOException {
260                 Config config = Utils.getConfig();
261                 String resourceUid = ("{\"componentUid\":\"" + serviceUniqueId + "\"}");
262                 String url = String.format(Urls.CHANGE__RESOURCE_INSTANCE_VERSION, config.getCatalogBeHost(),
263                                 config.getCatalogBePort(), ComponentTypeEnum.findParamByType(componentType), componentUniqueId,
264                                 serviceInstanceToReplaceUniqueId);
265                 RestResponse changeResourceInstanceVersion = sendPost(url, resourceUid, sdncModifierDetails.getUserId(),
266                                 acceptHeaderData);
267                 return changeResourceInstanceVersion;
268
269         }
270         public static CapReqDef getInstancesCapabilitiesRequirements(Component component, String userId) throws Exception {
271
272                 String url = String.format(Urls.GET_INSTANCE_REQUIRMENTS_CAPABILITIES,
273                                 Utils.getConfig().getCatalogBeHost(), Utils.getConfig().getCatalogBePort(),
274                                 ComponentTypeEnum.findParamByType(component.getComponentType()), component.getUniqueId());
275
276                 RestResponse getComponentReqCap = sendGet(url, userId);
277                 assertTrue(getComponentReqCap.getErrorCode() == STATUS_CODE_GET_SUCCESS);
278                 return ResponseParser.parseToObject(getComponentReqCap.getResponse(), CapReqDef.class);
279         }
280
281 }