2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.openecomp.sdc.ci.tests.execute.imports;
23 import static org.testng.AssertJUnit.assertEquals;
24 import static org.testng.AssertJUnit.assertFalse;
25 import static org.testng.AssertJUnit.assertTrue;
28 import java.io.IOException;
29 import java.nio.file.FileSystems;
30 import java.nio.file.Files;
31 import java.util.ArrayList;
32 import java.util.Arrays;
33 import java.util.HashMap;
34 import java.util.Iterator;
35 import java.util.List;
37 import java.util.Map.Entry;
39 import org.apache.http.HttpStatus;
40 import org.apache.http.client.ClientProtocolException;
41 import org.apache.http.client.methods.CloseableHttpResponse;
42 import org.apache.http.client.methods.HttpPost;
43 import org.apache.http.entity.ContentType;
44 import org.apache.http.entity.mime.MultipartEntityBuilder;
45 import org.apache.http.entity.mime.content.FileBody;
46 import org.apache.http.entity.mime.content.StringBody;
47 import org.apache.http.impl.client.CloseableHttpClient;
48 import org.apache.http.impl.client.HttpClients;
50 import org.junit.Rule;
51 import org.junit.rules.TestName;
52 import org.openecomp.sdc.be.model.LifecycleStateEnum;
53 import org.openecomp.sdc.be.model.PropertyDefinition;
54 import org.openecomp.sdc.be.model.Resource;
55 import org.openecomp.sdc.be.model.category.CategoryDefinition;
56 import org.openecomp.sdc.ci.tests.api.ComponentBaseTest;
57 import org.openecomp.sdc.ci.tests.api.Urls;
58 import org.openecomp.sdc.ci.tests.config.Config;
59 import org.openecomp.sdc.ci.tests.datatypes.enums.ErrorInfo;
60 import org.openecomp.sdc.ci.tests.datatypes.enums.ImportTestTypesEnum;
61 import org.openecomp.sdc.ci.tests.datatypes.enums.NormativeTypesEnum;
62 import org.openecomp.sdc.ci.tests.datatypes.enums.RespJsonKeysEnum;
63 import org.openecomp.sdc.ci.tests.datatypes.enums.UserRoleEnum;
64 import org.openecomp.sdc.ci.tests.datatypes.expected.ExpectedResourceAuditJavaObject;
65 import org.openecomp.sdc.ci.tests.datatypes.http.RestResponse;
66 import org.openecomp.sdc.ci.tests.execute.TODO.ImportCapabilityTypeCITest;
67 import org.openecomp.sdc.ci.tests.utils.DbUtils;
68 import org.openecomp.sdc.ci.tests.utils.Utils;
69 import org.openecomp.sdc.ci.tests.utils.rest.BaseRestUtils;
70 import org.openecomp.sdc.ci.tests.utils.rest.ImportRestUtils;
71 import org.openecomp.sdc.ci.tests.utils.rest.ResourceRestUtils;
72 import org.openecomp.sdc.ci.tests.utils.rest.ResponseParser;
73 import org.openecomp.sdc.ci.tests.utils.validation.AuditValidationUtils;
74 import org.openecomp.sdc.ci.tests.utils.validation.ErrorValidationUtils;
75 import org.slf4j.Logger;
76 import org.slf4j.LoggerFactory;
77 import org.testng.annotations.BeforeClass;
78 import org.testng.annotations.Test;
80 import com.google.gson.Gson;
82 import fj.data.Either;
84 public class ImportGenericResourceCITest extends ComponentBaseTest {
85 private static Logger log = LoggerFactory.getLogger(ImportGenericResourceCITest.class.getName());
86 private static final String FILE_NAME_MY_COMPUTE = "tosca.nodes.MyCompute";
87 private static final String RESOURCE_NAME_UPDATE_COMPUTE = "userUpdateCompute";
88 private static final String RESOURCE_NAME_MY_COMPUTE = "MyCompute";
89 private static final String RESOURCE_NAME_USER_COMPUTE = "userCompute";
90 private static final String FILE_NAME_USER_COMPUTE = "tosca.nodes.userCompute";
91 private static final String FILE_NAME_USER_VFC = "Derived_VFC";
93 public static TestName name = new TestName();
95 public ImportGenericResourceCITest() {
96 super(name, ImportGenericResourceCITest.class.getName());
100 public static void beforeImportClass() throws IOException {
101 ImportCapabilityTypeCITest.importAllCapabilityTypes();
102 // removeAllNormativeTypeResources();
103 // importAllNormativeTypesResources(UserRoleEnum.ADMIN);
106 static Config config = Config.instance();
108 public static Map<NormativeTypesEnum, Boolean> removeAllNormativeTypeResources() throws ClientProtocolException, IOException {
109 Map<NormativeTypesEnum, Boolean> normativeExistInDB = new HashMap<>();
111 for (NormativeTypesEnum current : NormativeTypesEnum.values()) {
112 Boolean existedBeforeDelete = ImportRestUtils.removeNormativeTypeResource(current);
113 normativeExistInDB.put(current, existedBeforeDelete);
115 return normativeExistInDB;
118 public static Either<String, Boolean> getNormativeTypeResource(NormativeTypesEnum current) throws ClientProtocolException, IOException {
119 return getResource(current.getNormativeName(), "1.0");
123 public void importAllTestResources() throws Exception {
124 for (ImportTestTypesEnum currResource : ImportTestTypesEnum.values()) {
125 DbUtils.cleanAllAudits();
127 RestResponse importResponse = ImportRestUtils.importTestResource(currResource, UserRoleEnum.ADMIN);
128 // System.err.println("import Resource
129 // "+"<"+currResource+">"+"response:
130 // "+importResponse.getErrorCode());
131 ImportRestUtils.validateImportTestTypesResp(currResource, importResponse);
132 if (currResource.getvalidateAudit() == true) {
134 String baseVersion = "1.0";
135 ErrorInfo errorInfo = ErrorValidationUtils.parseErrorConfigYaml(currResource.getActionStatus().name());
136 ExpectedResourceAuditJavaObject expectedResourceAuditJavaObject = new ExpectedResourceAuditJavaObject();
137 String auditAction = "ResourceImport";
138 expectedResourceAuditJavaObject.setAction(auditAction);
139 expectedResourceAuditJavaObject.setModifierUid(UserRoleEnum.ADMIN.getUserId());
140 expectedResourceAuditJavaObject.setModifierName(UserRoleEnum.ADMIN.getUserName());
141 expectedResourceAuditJavaObject.setResourceName(currResource.getNormativeName());
142 expectedResourceAuditJavaObject.setResourceType("Resource");
143 expectedResourceAuditJavaObject.setPrevVersion("");
144 expectedResourceAuditJavaObject.setCurrVersion(baseVersion);
145 expectedResourceAuditJavaObject.setPrevState("");
146 expectedResourceAuditJavaObject.setCurrState(LifecycleStateEnum.CERTIFIED.toString());
147 expectedResourceAuditJavaObject.setComment(null);
148 expectedResourceAuditJavaObject.setStatus(errorInfo.getCode().toString());
149 List<String> variables = (currResource.getErrorParams() != null ? currResource.getErrorParams() : new ArrayList<String>());
150 String auditDesc = AuditValidationUtils.buildAuditDescription(errorInfo, variables);
151 expectedResourceAuditJavaObject.setDesc(auditDesc);
152 AuditValidationUtils.validateAuditImport(expectedResourceAuditJavaObject, auditAction);
157 // -----------------------------------------------------------------------------------
158 protected void validateMyComputeCapabilities(Map<String, Object> map) {
159 assertTrue(map.containsKey("capabilities"));
160 Map<String, Object> capabilities = (Map<String, Object>) map.get("capabilities");
161 assertTrue(capabilities.containsKey("tosca.capabilities.Container"));
162 List<Object> hostCapList = (List<Object>) capabilities.get("tosca.capabilities.Container");
163 assertFalse(hostCapList.isEmpty());
164 Map<String, Object> hostCap = (Map<String, Object>) hostCapList.get(0);
165 validateField(hostCap, "type", "tosca.capabilities.Container");
166 validateField(hostCap, "name", "host");
167 validateField(hostCap, "validSourceTypes", Arrays.asList(new String[] { "tosca.nodes.SoftwareComponent" }));
169 assertTrue(capabilities.containsKey("tosca.capabilities.Endpoint.Admin"));
170 List<Object> endPointCapList = (List<Object>) capabilities.get("tosca.capabilities.Endpoint.Admin");
171 assertFalse(endPointCapList.isEmpty());
172 Map<String, Object> endPointCap = (Map<String, Object>) endPointCapList.get(0);
173 validateField(endPointCap, "name", "endpoint");
174 validateField(endPointCap, "type", "tosca.capabilities.Endpoint.Admin");
176 assertTrue(capabilities.containsKey("tosca.capabilities.OperatingSystem"));
177 List<Object> osCapList = (List<Object>) capabilities.get("tosca.capabilities.OperatingSystem");
178 assertFalse(osCapList.isEmpty());
179 Map<String, Object> osCap = (Map<String, Object>) osCapList.get(0);
180 validateField(osCap, "name", "os");
181 validateField(osCap, "type", "tosca.capabilities.OperatingSystem");
183 assertTrue(capabilities.containsKey("tosca.capabilities.Scalable"));
184 List<Object> scalableCapList = (List<Object>) capabilities.get("tosca.capabilities.Scalable");
185 assertFalse(scalableCapList.isEmpty());
186 Map<String, Object> scalableCap = (Map<String, Object>) scalableCapList.get(0);
187 validateField(scalableCap, "name", "scalable");
188 validateField(scalableCap, "type", "tosca.capabilities.Scalable");
190 assertTrue(capabilities.containsKey("tosca.capabilities.network.Bindable"));
191 List<Object> bindingCapList = (List<Object>) capabilities.get("tosca.capabilities.network.Bindable");
192 assertFalse(bindingCapList.isEmpty());
193 Map<String, Object> bindingCap = (Map<String, Object>) bindingCapList.get(0);
194 validateField(bindingCap, "name", "binding");
195 validateField(bindingCap, "type", "tosca.capabilities.network.Bindable");
199 protected void validateMyComputeResource(String resourceName, String resourceVersion, String expectedState) throws ClientProtocolException, IOException {
200 Either<String, Boolean> eitherMyCompute = getResource(resourceName, resourceVersion);
201 assertTrue(eitherMyCompute.isLeft());
202 String testComputeYml = eitherMyCompute.left().value();
204 Map<String, Object> map = new HashMap<String, Object>();
205 map = (Map<String, Object>) new Gson().fromJson(testComputeYml, map.getClass());
207 validateMyComputeBasicFields(map, resourceName, resourceVersion, expectedState);
209 validateMyComputeCapabilities(map);
211 validateMyComputeRequirements(map);
212 validateField(map, RespJsonKeysEnum.RESOURCE_VERSION.getRespJsonKeyName(), resourceVersion);
216 protected void validateMyComputeResource(String uid, String resourceName, String resourceVersion, String expectedState) throws ClientProtocolException, IOException {
217 RestResponse resourceResponse = ResourceRestUtils.getResource(uid);
218 ResourceRestUtils.checkSuccess(resourceResponse);
219 String testComputeYml = resourceResponse.getResponse();
221 // Either<String, Boolean> eitherMyCompute = getResource(resourceName,
223 // assertTrue( eitherMyCompute.isLeft() );
224 // String testComputeYml = eitherMyCompute.left().value();
226 Map<String, Object> map = new HashMap<String, Object>();
227 map = (Map<String, Object>) new Gson().fromJson(testComputeYml, map.getClass());
229 validateMyComputeBasicFields(map, resourceName, resourceVersion, expectedState);
231 validateMyComputeCapabilities(map);
233 validateMyComputeRequirements(map);
234 validateField(map, RespJsonKeysEnum.RESOURCE_VERSION.getRespJsonKeyName(), resourceVersion);
238 protected void validateMyComputeResourceAfterUpdate(String uid, String resourceName, String resourceVersion, String expectedState) throws ClientProtocolException, IOException {
239 RestResponse resourceResponse = ResourceRestUtils.getResource(uid);
240 ResourceRestUtils.checkSuccess(resourceResponse);
241 String testComputeYml = resourceResponse.getResponse();
243 // Either<String, Boolean> eitherMyCompute = getResource(resourceName,
245 // assertTrue( eitherMyCompute.isLeft() );
247 // String testComputeYml = eitherMyCompute.left().value();
249 Map<String, Object> map = new HashMap<String, Object>();
250 map = (Map<String, Object>) new Gson().fromJson(testComputeYml, map.getClass());
252 validateMyComputeBasicFields(map, resourceName, resourceVersion, expectedState);
253 validateField(map, RespJsonKeysEnum.DESCRIPTION.getRespJsonKeyName(), "Short description");
254 validateField(map, RespJsonKeysEnum.VENDOR_NAME.getRespJsonKeyName(), "UserVendor");
255 validateField(map, RespJsonKeysEnum.VENDOR_RELEASE.getRespJsonKeyName(), "1.1.2");
257 // validateMyComputeCapabilities(map);
258 // AssertJUnit.assertTrue(map.containsKey("capabilities"));
259 // Map<String, Object> capabilities = (Map<String, Object>)
260 // map.get("capabilities");
261 // AssertJUnit.assertTrue(capabilities.containsKey("host"));
262 // Map<String, Object> hostCap = (Map<String, Object>)
263 // capabilities.get("host");
264 // validateField(hostCap, "type", "tosca.capabilities.Container");
265 // validateField(hostCap, "validSourceTypes", Arrays.asList(new
266 // String[]{"tosca.nodes.SoftwareComponent"}));
268 // AssertJUnit.assertTrue(capabilities.containsKey("endpoint"));
269 // Map<String, Object> endPointCap = (Map<String, Object>)
270 // capabilities.get("endpoint");
271 // validateField(endPointCap, "type",
272 // "tosca.capabilities.Endpoint.Admin");
274 assertTrue(map.containsKey("capabilities"));
275 Map<String, Object> capabilities = (Map<String, Object>) map.get("capabilities");
276 assertTrue(capabilities.containsKey("tosca.capabilities.Container"));
277 List<Object> hostCapList = (List<Object>) capabilities.get("tosca.capabilities.Container");
278 assertFalse(hostCapList.isEmpty());
279 Map<String, Object> hostCap = (Map<String, Object>) hostCapList.get(0);
280 validateField(hostCap, "type", "tosca.capabilities.Container");
281 validateField(hostCap, "name", "host");
282 validateField(hostCap, "validSourceTypes", Arrays.asList(new String[] { "tosca.nodes.SoftwareComponent" }));
284 assertTrue(capabilities.containsKey("tosca.capabilities.Endpoint.Admin"));
285 List<Object> endPointCapList = (List<Object>) capabilities.get("tosca.capabilities.Endpoint.Admin");
286 assertFalse(endPointCapList.isEmpty());
287 Map<String, Object> endPointCap = (Map<String, Object>) endPointCapList.get(0);
288 validateField(endPointCap, "name", "endpoint");
289 validateField(endPointCap, "type", "tosca.capabilities.Endpoint.Admin");
291 validateMyComputeRequirements(map);
292 validateField(map, RespJsonKeysEnum.RESOURCE_VERSION.getRespJsonKeyName(), resourceVersion);
296 protected void validateMyComputeRequirements(Map<String, Object> map) {
297 assertTrue(map.containsKey("requirements"));
298 Map<String, Object> requirements = (Map<String, Object>) map.get("requirements");
300 assertTrue(requirements.containsKey("tosca.capabilities.Attachment"));
301 List<Object> localStorageReqList = (List<Object>) requirements.get("tosca.capabilities.Attachment");
302 assertFalse(localStorageReqList.isEmpty());
303 Map<String, Object> localStorageReq = (Map<String, Object>) localStorageReqList.get(0);
304 validateField(localStorageReq, "capability", "tosca.capabilities.Attachment");
305 validateField(localStorageReq, "node", "tosca.nodes.BlockStorage");
306 validateField(localStorageReq, "relationship", "tosca.relationships.AttachesTo");
307 validateField(localStorageReq, "name", "local_storage");
310 protected void validateMyComputeBasicFields(Map<String, Object> map, String resourceName, String resourceVersion, String expectedState) {
311 validateField(map, RespJsonKeysEnum.IS_ABSTRACT.getRespJsonKeyName(), false);
312 // validateField(map, RespJsonKeysEnum.CATEGORIES.getRespJsonKeyName(),
313 // categoryDefinition);
314 // validateField(map, RespJsonKeysEnum.UNIQUE_ID.getRespJsonKeyName(),
315 // UniqueIdBuilder.buildResourceUniqueId(resourceName,
316 // resourceVersion));
317 validateField(map, RespJsonKeysEnum.RESOURCE_NAME.getRespJsonKeyName(), resourceName);
318 validateField(map, RespJsonKeysEnum.TAGS.getRespJsonKeyName(), Arrays.asList(new String[] { resourceName }));
319 validateField(map, RespJsonKeysEnum.LIFE_CYCLE_STATE.getRespJsonKeyName(), expectedState);
321 validateField(map, RespJsonKeysEnum.DERIVED_FROM.getRespJsonKeyName(), Arrays.asList(new String[] { "tosca.nodes.Root" }));
324 protected static void validateField(Map<String, Object> map, String jsonField, Object expectedValue) {
325 if (expectedValue == null) {
326 assertTrue(!map.containsKey(jsonField));
328 assertTrue("map does not contain field " + jsonField, map.containsKey(jsonField));
329 Object foundValue = map.get(jsonField);
330 compareElements(expectedValue, foundValue);
334 protected static void compareElements(Object expectedValue, Object foundValue) {
335 if (expectedValue instanceof String) {
336 assertTrue(foundValue instanceof String);
337 assertTrue(foundValue.equals(expectedValue));
340 else if (expectedValue instanceof Boolean) {
341 assertTrue(foundValue instanceof Boolean);
342 assertTrue(foundValue == expectedValue);
343 } else if (expectedValue instanceof Map) {
344 assertTrue(foundValue instanceof Map);
345 Map<String, Object> foundMap = (Map<String, Object>) foundValue;
346 Map<String, Object> excpectedMap = (Map<String, Object>) expectedValue;
347 assertTrue(foundMap.size() == excpectedMap.size());
348 Iterator<String> foundkeyItr = foundMap.keySet().iterator();
349 while (foundkeyItr.hasNext()) {
350 String foundKey = foundkeyItr.next();
351 assertTrue(excpectedMap.containsKey(foundKey));
352 compareElements(excpectedMap.get(foundKey), foundMap.get(foundKey));
355 } else if (expectedValue instanceof List) {
356 assertTrue(foundValue instanceof List);
357 List<Object> foundList = (List<Object>) foundValue;
358 List<Object> excpectedList = (List<Object>) expectedValue;
359 assertTrue(foundList.size() == excpectedList.size());
360 for (int i = 0; i < foundList.size(); i++) {
361 compareElements(excpectedList.get(i), foundList.get(i));
364 } else if (expectedValue instanceof CategoryDefinition) {
365 assertTrue(foundValue instanceof Map);
366 CategoryDefinition expCat = (CategoryDefinition) expectedValue;
367 Map<String, Object> actCat = (Map<String, Object>) foundValue;
368 assertEquals(expCat.getName(), actCat.get("name"));
370 // assertEquals(expCat.getSubcategories().get(0).getName(),
371 // actCat.get("subcategories").getName());
373 assertTrue(foundValue.equals(expectedValue));
377 public static void restoreToOriginalState(Map<NormativeTypesEnum, Boolean> originalState, UserRoleEnum userRole) throws IOException {
378 removeAllNormativeTypeResources();
380 Iterator<Entry<NormativeTypesEnum, Boolean>> iterator = originalState.entrySet().iterator();
381 while (iterator.hasNext()) {
382 Entry<NormativeTypesEnum, Boolean> entry = iterator.next();
383 Boolean isExistBeforeDelete = entry.getValue();
384 if (isExistBeforeDelete) {
385 importNormativeResource(entry.getKey(), userRole);
391 public static void importAllNormativeTypesResources(UserRoleEnum userRole) throws IOException {
392 for (NormativeTypesEnum currResource : NormativeTypesEnum.values()) {
393 Either<String, Boolean> resource = getResource(currResource.getNormativeName(), "1.0");
394 if (resource.isRight()) {
395 importNormativeResource(currResource, userRole);
401 protected static Integer importNormativeResource(NormativeTypesEnum resource, UserRoleEnum userRole) throws IOException {
402 return importResource(resource.getFolderName(), userRole, true);
405 protected static Integer importResource(String folderName, UserRoleEnum userRole, boolean isNormative) throws IOException {
406 Config config = Utils.getConfig();
407 CloseableHttpResponse response = null;
408 MultipartEntityBuilder mpBuilder = MultipartEntityBuilder.create();
410 mpBuilder.addPart("resourceZip", new FileBody(getZipFile(folderName)));
411 mpBuilder.addPart("resourceMetadata", new StringBody(getJsonStringOfFile(folderName, folderName + ".json"), ContentType.APPLICATION_JSON));
413 String url = String.format(Urls.IMPORT_RESOURCE_NORMATIVE, config.getCatalogBeHost(), config.getCatalogBePort());
415 url = String.format(Urls.IMPORT_USER_RESOURCE, config.getCatalogBeHost(), config.getCatalogBePort());
418 CloseableHttpClient client = HttpClients.createDefault();
420 HttpPost httpPost = new HttpPost(url);
421 httpPost.addHeader("USER_ID", userRole.getUserId());
422 httpPost.setEntity(mpBuilder.build());
423 response = client.execute(httpPost);
424 return response.getStatusLine().getStatusCode();
426 closeResponse(response);
427 closeHttpClient(client);
432 public static void closeHttpClient(CloseableHttpClient client) {
434 if (client != null) {
437 } catch (IOException e) {
438 log.debug("failed to close client or response: ", e);
442 public static void closeResponse(CloseableHttpResponse response) {
444 if (response != null) {
447 } catch (IOException e) {
448 log.debug("failed to close client or response: ", e);
452 protected static String getJsonStringOfFile(String folderName, String fileName) throws IOException {
453 String sourceDir = config.getImportResourceConfigDir();
454 sourceDir += File.separator + "normative-types";
456 java.nio.file.Path filePath = FileSystems.getDefault().getPath(sourceDir + File.separator + folderName, fileName);
457 byte[] fileContent = Files.readAllBytes(filePath);
458 String content = new String(fileContent);
462 protected static File getZipFile(String elementName) throws IOException {
463 String sourceDir = config.getImportResourceConfigDir();
464 sourceDir += File.separator + "normative-types";
466 java.nio.file.Path filePath = FileSystems.getDefault().getPath(sourceDir + File.separator + elementName, "normative-types-new-" + elementName + ".zip");
467 return filePath.toFile();
470 protected static String getTestJsonStringOfFile(String folderName, String fileName) throws IOException {
471 String sourceDir = config.getImportResourceTestsConfigDir();
472 java.nio.file.Path filePath = FileSystems.getDefault().getPath(sourceDir + File.separator + folderName, fileName);
473 byte[] fileContent = Files.readAllBytes(filePath);
474 String content = new String(fileContent);
478 protected static File getTestZipFile(String elementName) throws IOException {
479 String sourceDir = config.getImportResourceTestsConfigDir();
481 java.nio.file.Path filePath = FileSystems.getDefault().getPath(sourceDir + File.separator + elementName, "normative-types-new-" + elementName + ".zip");
482 return filePath.toFile();
485 protected static Either<String, Boolean> getResource(String name, String version) throws IOException {
486 RestResponse resource = ResourceRestUtils.getResourceByNameAndVersion(UserRoleEnum.DESIGNER.getUserId(), name, version);
487 if (resource.getErrorCode() == ImportRestUtils.STATUS_CODE_GET_SUCCESS) {
488 return Either.left(resource.getResponse());
489 // return Either.right(true);
492 return Either.right(false);
496 public void testImportWithRequirmentsAndCapabilities() throws IOException {
497 String fileName = FILE_NAME_MY_COMPUTE;
498 RestResponse response = ImportRestUtils.importNormativeResourceByName(RESOURCE_NAME_MY_COMPUTE, UserRoleEnum.ADMIN);
499 Integer statusCode = response.getErrorCode();
500 assertTrue(statusCode == ImportRestUtils.STATUS_CODE_IMPORT_SUCCESS);
501 String uid = ResponseParser.getUniqueIdFromResponse(response);
502 validateMyComputeResource(uid, fileName, "1.0", "CERTIFIED");
506 public void testImportWithUpdateNormativeType() throws IOException {
507 String fileName = FILE_NAME_MY_COMPUTE;
508 RestResponse response = ImportRestUtils.importNormativeResourceByName(RESOURCE_NAME_MY_COMPUTE, UserRoleEnum.ADMIN);
509 Integer statusCode = response.getErrorCode();
510 assertTrue(String.format("Expected code %s and got code %s",ImportRestUtils.STATUS_CODE_IMPORT_SUCCESS,statusCode),statusCode == ImportRestUtils.STATUS_CODE_IMPORT_SUCCESS);
511 String uid = ResponseParser.getUniqueIdFromResponse(response);
512 validateMyComputeResource(uid, fileName, "1.0", "CERTIFIED");
515 response = ImportRestUtils.importNormativeResourceByName(RESOURCE_NAME_MY_COMPUTE, UserRoleEnum.ADMIN);
516 statusCode = response.getErrorCode();
517 assertTrue(statusCode == ImportRestUtils.STATUS_CODE_UPDATE_SUCCESS);
518 uid = ResponseParser.getUniqueIdFromResponse(response);
519 validateMyComputeResource(uid, fileName, "2.0", "CERTIFIED");
524 public void testImportWithInvalidDefaultValue() throws IOException {
525 RestResponse response = ImportRestUtils.importNewResourceByName("portInvalidDefaultValue", UserRoleEnum.DESIGNER);
526 assertTrue(response.getErrorCode() == HttpStatus.SC_BAD_REQUEST);
530 public void testImportUserResource() throws IOException {
531 String fileName = FILE_NAME_USER_COMPUTE;
532 RestResponse response = ImportRestUtils.importNewResourceByName(RESOURCE_NAME_USER_COMPUTE, UserRoleEnum.DESIGNER);
533 Integer statusCode = response.getErrorCode();
534 assertTrue(statusCode == ImportRestUtils.STATUS_CODE_IMPORT_SUCCESS);
535 String uid = ResponseParser.getUniqueIdFromResponse(response);
536 validateMyComputeResource(uid, fileName, "0.1", "NOT_CERTIFIED_CHECKOUT");
541 public void testImportAndUpdateUserResource() throws IOException {
542 String fileName = FILE_NAME_USER_COMPUTE;
543 RestResponse response = ImportRestUtils.importNewResourceByName(RESOURCE_NAME_USER_COMPUTE, UserRoleEnum.DESIGNER);
544 Integer statusCode = response.getErrorCode();
545 assertTrue(statusCode == ImportRestUtils.STATUS_CODE_IMPORT_SUCCESS);
546 String uid = ResponseParser.getUniqueIdFromResponse(response);
547 validateMyComputeResource(uid, fileName, "0.1", "NOT_CERTIFIED_CHECKOUT");
548 response = ImportRestUtils.importNewResourceByName(RESOURCE_NAME_UPDATE_COMPUTE, UserRoleEnum.DESIGNER);
549 statusCode = response.getErrorCode();
550 assertTrue(statusCode == ImportRestUtils.STATUS_CODE_UPDATE_SUCCESS);
551 uid = ResponseParser.getUniqueIdFromResponse(response);
552 validateMyComputeResourceAfterUpdate(uid, fileName, "0.1", "NOT_CERTIFIED_CHECKOUT");
557 public void testImportAndUpdateChangesUserResource() throws IOException {
558 String fileName = FILE_NAME_USER_COMPUTE;
559 RestResponse response = ImportRestUtils.importNewResourceByName(RESOURCE_NAME_USER_COMPUTE, UserRoleEnum.DESIGNER);
560 Integer statusCode = response.getErrorCode();
561 assertTrue(statusCode == ImportRestUtils.STATUS_CODE_IMPORT_SUCCESS);
562 String uid = ResponseParser.getUniqueIdFromResponse(response);
563 validateMyComputeResource(uid, fileName, "0.1", "NOT_CERTIFIED_CHECKOUT");
564 // Either<String, Boolean> resource = getResource(fileName, "0.1");
565 // assertTrue(resource.isLeft());
567 response = ImportRestUtils.importNewResourceByName(RESOURCE_NAME_UPDATE_COMPUTE, UserRoleEnum.DESIGNER);
568 statusCode = response.getErrorCode();
569 assertTrue(statusCode == ImportRestUtils.STATUS_CODE_UPDATE_SUCCESS);
570 validateMyComputeResourceAfterUpdate(uid, fileName, "0.1", "NOT_CERTIFIED_CHECKOUT");
575 public void testImportCheckoutAndUpdateUserResource() throws IOException {
576 String fileName = FILE_NAME_USER_COMPUTE;
577 RestResponse response = ImportRestUtils.importNormativeResourceByName(RESOURCE_NAME_USER_COMPUTE, UserRoleEnum.ADMIN);
578 Integer statusCode = response.getErrorCode();
579 assertTrue(String.format("Expected code %s and got code %s",ImportRestUtils.STATUS_CODE_IMPORT_SUCCESS,statusCode),statusCode == ImportRestUtils.STATUS_CODE_IMPORT_SUCCESS);
580 String uid = ResponseParser.getUniqueIdFromResponse(response);
581 validateMyComputeResource(uid, fileName, "1.0", "CERTIFIED");
583 response = ImportRestUtils.importNewResourceByName(RESOURCE_NAME_USER_COMPUTE, UserRoleEnum.DESIGNER);
584 statusCode = response.getErrorCode();
585 assertEquals("check response code after update resource", ImportRestUtils.STATUS_CODE_UPDATE_SUCCESS, statusCode.intValue());
586 uid = ResponseParser.getUniqueIdFromResponse(response);
587 validateMyComputeResource(uid, fileName, "1.1", "NOT_CERTIFIED_CHECKOUT");
592 public void importNormativeTypesTesterUserRole() throws Exception {
593 Integer statusCode = ImportRestUtils.importNormativeResourceByName(RESOURCE_NAME_MY_COMPUTE, UserRoleEnum.TESTER).getErrorCode();
594 assertTrue(statusCode == ImportRestUtils.RESTRICTED_OPERATION);
598 public void importNormativeTypesDesignerUserRole() throws Exception {
599 Integer statusCode = ImportRestUtils.importNormativeResourceByName(RESOURCE_NAME_MY_COMPUTE, UserRoleEnum.DESIGNER).getErrorCode();
600 assertTrue(statusCode == 409);
604 public void testImportVFCDerivedFromGeneric() throws IOException {
606 RestResponse response = ImportRestUtils.importNewResourceByName(FILE_NAME_USER_VFC, UserRoleEnum.ADMIN);
607 Integer statusCode = response.getErrorCode();
608 assertTrue(String.format("Expected code %s and got code %s",ImportRestUtils.STATUS_CODE_IMPORT_SUCCESS,statusCode),statusCode == ImportRestUtils.STATUS_CODE_IMPORT_SUCCESS);
609 String uid = ResponseParser.getUniqueIdFromResponse(response);
610 response = ResourceRestUtils.getResource(uid);
611 Resource VFC = ResponseParser.convertResourceResponseToJavaObject(response.getResponse());
612 List<PropertyDefinition> props = VFC.getProperties();
613 for (PropertyDefinition prop : props) {
614 assertTrue(null != prop.getOwnerId() && !uid.equals(prop.getOwnerId()));