7cc06de1d8254f186eb47339dc0f8e598850c8d2
[sdc.git] /
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
207                 headersMap.put(HttpHeaderEnum.CONTENT_TYPE.getValue(), contentTypeHeaderData);
208                 headersMap.put(HttpHeaderEnum.ACCEPT.getValue(), acceptHeaderData);
209                 headersMap.put(HttpHeaderEnum.USER_ID.getValue(), user.getUserId());
210
211                 String url = String.format(Urls.UPDATE_PROPERTY_TO_RESOURCE_INSTANCE, config.getCatalogBeHost(),
212                                 config.getCatalogBePort(), ComponentTypeEnum.findParamByType(component.getComponentType()),
213                                 component.getUniqueId(), instDetails.getUniqueId());
214                 String body = gson.toJson(updatedInstanceProperty);
215
216                 RestResponse sendGetServerRequest = sendPost(url, body, user.getUserId(), acceptHeaderData);
217                 return sendGetServerRequest;
218
219         }
220
221         public static RestResponse changeComponentInstanceVersion(Component container,
222                         ComponentInstance componentInstanceToReplace, Component newInstance, User sdncModifierDetails)
223                         throws Exception {
224
225                 return changeComponentInstanceVersion(container.getUniqueId(), componentInstanceToReplace, newInstance,
226                                 sdncModifierDetails, container.getComponentType());
227         }
228
229         public static RestResponse changeComponentInstanceVersion(String containerUID,
230                         ComponentInstance componentInstanceToReplace, Component component, User sdncModifierDetails,
231                         ComponentTypeEnum componentType) throws IOException {
232
233                 Config config = Utils.getConfig();
234                 String resourceUid = ("{\"componentUid\":\"" + component.getUniqueId() + "\"}");
235                 String url = String.format(Urls.CHANGE__RESOURCE_INSTANCE_VERSION, config.getCatalogBeHost(),
236                                 config.getCatalogBePort(), ComponentTypeEnum.findParamByType(componentType), containerUID,
237                                 componentInstanceToReplace.getUniqueId());
238                 RestResponse changeResourceInstanceVersion = sendPost(url, resourceUid, sdncModifierDetails.getUserId(),
239                                 acceptHeaderData);
240
241                 if (changeResourceInstanceVersion.getErrorCode() == 200
242                                 || changeResourceInstanceVersion.getErrorCode() == 201) {
243                         Gson gson = new Gson();
244                         // ResourceInstanceReqDetails
245                         // convertResourceInstanceResponseToJavaObject =
246                         // ResponseParser.convertResourceInstanceResponseToJavaObject(createResourceInstance.getResponse());
247                         ComponentInstanceReqDetails fromJson = gson.fromJson(changeResourceInstanceVersion.getResponse(),
248                                         ComponentInstanceReqDetails.class);
249
250                         componentInstanceToReplace.setUniqueId(fromJson.getUniqueId());
251
252                 }
253
254                 return changeResourceInstanceVersion;
255
256         }
257
258         public static RestResponse changeComponentInstanceVersion(String componentUniqueId,
259                         String serviceInstanceToReplaceUniqueId, String serviceUniqueId, User sdncModifierDetails,
260                         ComponentTypeEnum componentType) throws IOException {
261                 Config config = Utils.getConfig();
262                 String resourceUid = ("{\"componentUid\":\"" + serviceUniqueId + "\"}");
263                 String url = String.format(Urls.CHANGE__RESOURCE_INSTANCE_VERSION, config.getCatalogBeHost(),
264                                 config.getCatalogBePort(), ComponentTypeEnum.findParamByType(componentType), componentUniqueId,
265                                 serviceInstanceToReplaceUniqueId);
266                 RestResponse changeResourceInstanceVersion = sendPost(url, resourceUid, sdncModifierDetails.getUserId(),
267                                 acceptHeaderData);
268                 return changeResourceInstanceVersion;
269
270         }
271         public static CapReqDef getInstancesCapabilitiesRequirements(Component component, String userId) throws Exception {
272
273                 String url = String.format(Urls.GET_INSTANCE_REQUIRMENTS_CAPABILITIES,
274                                 Utils.getConfig().getCatalogBeHost(), Utils.getConfig().getCatalogBePort(),
275                                 ComponentTypeEnum.findParamByType(component.getComponentType()), component.getUniqueId());
276
277                 RestResponse getComponentReqCap = sendGet(url, userId);
278                 assertTrue(getComponentReqCap.getErrorCode() == STATUS_CODE_GET_SUCCESS);
279                 return ResponseParser.parseToObject(getComponentReqCap.getResponse(), CapReqDef.class);
280         }
281
282 }