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;
49 import org.junit.Rule;
50 import org.junit.rules.TestName;
51 import org.openecomp.sdc.be.model.LifecycleStateEnum;
52 import org.openecomp.sdc.be.model.category.CategoryDefinition;
53 import org.openecomp.sdc.ci.tests.api.ComponentBaseTest;
54 import org.openecomp.sdc.ci.tests.api.Urls;
55 import org.openecomp.sdc.ci.tests.config.Config;
56 import org.openecomp.sdc.ci.tests.datatypes.enums.ErrorInfo;
57 import org.openecomp.sdc.ci.tests.datatypes.enums.ImportTestTypesEnum;
58 import org.openecomp.sdc.ci.tests.datatypes.enums.NormativeTypesEnum;
59 import org.openecomp.sdc.ci.tests.datatypes.enums.RespJsonKeysEnum;
60 import org.openecomp.sdc.ci.tests.datatypes.enums.UserRoleEnum;
61 import org.openecomp.sdc.ci.tests.datatypes.expected.ExpectedResourceAuditJavaObject;
62 import org.openecomp.sdc.ci.tests.datatypes.http.RestResponse;
63 import org.openecomp.sdc.ci.tests.execute.TODO.ImportCapabilityTypeCITest;
64 import org.openecomp.sdc.ci.tests.utils.DbUtils;
65 import org.openecomp.sdc.ci.tests.utils.Utils;
66 import org.openecomp.sdc.ci.tests.utils.rest.BaseRestUtils;
67 import org.openecomp.sdc.ci.tests.utils.rest.ImportRestUtils;
68 import org.openecomp.sdc.ci.tests.utils.rest.ResourceRestUtils;
69 import org.openecomp.sdc.ci.tests.utils.rest.ResponseParser;
70 import org.openecomp.sdc.ci.tests.utils.validation.AuditValidationUtils;
71 import org.openecomp.sdc.ci.tests.utils.validation.ErrorValidationUtils;
72 import org.slf4j.Logger;
73 import org.slf4j.LoggerFactory;
74 import org.testng.annotations.BeforeClass;
75 import org.testng.annotations.Test;
77 import com.google.gson.Gson;
79 import fj.data.Either;
81 public class ImportGenericResourceCITest extends ComponentBaseTest {
82 private static Logger log = LoggerFactory.getLogger(ImportGenericResourceCITest.class.getName());
83 private static final String FILE_NAME_MY_COMPUTE = "tosca.nodes.MyCompute";
84 private static final String RESOURCE_NAME_UPDATE_COMPUTE = "userUpdateCompute";
85 private static final String RESOURCE_NAME_MY_COMPUTE = "myCompute";
86 private static final String RESOURCE_NAME_USER_COMPUTE = "userCompute";
87 private static final String FILE_NAME_USER_COMPUTE = "tosca.nodes.userCompute";
89 public static TestName name = new TestName();
91 public ImportGenericResourceCITest() {
92 super(name, ImportGenericResourceCITest.class.getName());
96 public static void beforeImportClass() throws IOException {
97 ImportCapabilityTypeCITest.importAllCapabilityTypes();
98 // removeAllNormativeTypeResources();
99 // importAllNormativeTypesResources(UserRoleEnum.ADMIN);
102 static Config config = Config.instance();
104 public static Map<NormativeTypesEnum, Boolean> removeAllNormativeTypeResources() throws ClientProtocolException, IOException {
105 Map<NormativeTypesEnum, Boolean> normativeExistInDB = new HashMap<>();
107 for (NormativeTypesEnum current : NormativeTypesEnum.values()) {
108 Boolean existedBeforeDelete = ImportRestUtils.removeNormativeTypeResource(current);
109 normativeExistInDB.put(current, existedBeforeDelete);
111 return normativeExistInDB;
114 public static Either<String, Boolean> getNormativeTypeResource(NormativeTypesEnum current) throws ClientProtocolException, IOException {
115 return getResource(current.getNormativeName(), "1.0");
119 public void importAllTestResources() throws Exception {
120 for (ImportTestTypesEnum currResource : ImportTestTypesEnum.values()) {
121 DbUtils.cleanAllAudits();
123 RestResponse importResponse = ImportRestUtils.importTestResource(currResource, UserRoleEnum.ADMIN);
124 // System.err.println("import Resource
125 // "+"<"+currResource+">"+"response:
126 // "+importResponse.getErrorCode());
127 ImportRestUtils.validateImportTestTypesResp(currResource, importResponse);
128 if (currResource.getvalidateAudit() == true) {
130 String baseVersion = "1.0";
131 ErrorInfo errorInfo = ErrorValidationUtils.parseErrorConfigYaml(currResource.getActionStatus().name());
132 ExpectedResourceAuditJavaObject expectedResourceAuditJavaObject = new ExpectedResourceAuditJavaObject();
133 String auditAction = "ResourceImport";
134 expectedResourceAuditJavaObject.setAction(auditAction);
135 expectedResourceAuditJavaObject.setModifierUid(UserRoleEnum.ADMIN.getUserId());
136 expectedResourceAuditJavaObject.setModifierName(UserRoleEnum.ADMIN.getUserName());
137 expectedResourceAuditJavaObject.setResourceName(currResource.getNormativeName());
138 expectedResourceAuditJavaObject.setResourceType("Resource");
139 expectedResourceAuditJavaObject.setPrevVersion("");
140 expectedResourceAuditJavaObject.setCurrVersion(baseVersion);
141 expectedResourceAuditJavaObject.setPrevState("");
142 expectedResourceAuditJavaObject.setCurrState(LifecycleStateEnum.CERTIFIED.toString());
143 expectedResourceAuditJavaObject.setComment(null);
144 expectedResourceAuditJavaObject.setStatus(errorInfo.getCode().toString());
145 List<String> variables = (currResource.getErrorParams() != null ? currResource.getErrorParams() : new ArrayList<String>());
146 String auditDesc = AuditValidationUtils.buildAuditDescription(errorInfo, variables);
147 expectedResourceAuditJavaObject.setDesc(auditDesc);
148 AuditValidationUtils.validateAuditImport(expectedResourceAuditJavaObject, auditAction);
153 // -----------------------------------------------------------------------------------
154 protected void validateMyComputeCapabilities(Map<String, Object> map) {
155 assertTrue(map.containsKey("capabilities"));
156 Map<String, Object> capabilities = (Map<String, Object>) map.get("capabilities");
157 assertTrue(capabilities.containsKey("tosca.capabilities.Container"));
158 List<Object> hostCapList = (List<Object>) capabilities.get("tosca.capabilities.Container");
159 assertFalse(hostCapList.isEmpty());
160 Map<String, Object> hostCap = (Map<String, Object>) hostCapList.get(0);
161 validateField(hostCap, "type", "tosca.capabilities.Container");
162 validateField(hostCap, "name", "host");
163 validateField(hostCap, "validSourceTypes", Arrays.asList(new String[] { "tosca.nodes.SoftwareComponent" }));
165 assertTrue(capabilities.containsKey("tosca.capabilities.Endpoint.Admin"));
166 List<Object> endPointCapList = (List<Object>) capabilities.get("tosca.capabilities.Endpoint.Admin");
167 assertFalse(endPointCapList.isEmpty());
168 Map<String, Object> endPointCap = (Map<String, Object>) endPointCapList.get(0);
169 validateField(endPointCap, "name", "endpoint");
170 validateField(endPointCap, "type", "tosca.capabilities.Endpoint.Admin");
172 assertTrue(capabilities.containsKey("tosca.capabilities.OperatingSystem"));
173 List<Object> osCapList = (List<Object>) capabilities.get("tosca.capabilities.OperatingSystem");
174 assertFalse(osCapList.isEmpty());
175 Map<String, Object> osCap = (Map<String, Object>) osCapList.get(0);
176 validateField(osCap, "name", "os");
177 validateField(osCap, "type", "tosca.capabilities.OperatingSystem");
179 assertTrue(capabilities.containsKey("tosca.capabilities.Scalable"));
180 List<Object> scalableCapList = (List<Object>) capabilities.get("tosca.capabilities.Scalable");
181 assertFalse(scalableCapList.isEmpty());
182 Map<String, Object> scalableCap = (Map<String, Object>) scalableCapList.get(0);
183 validateField(scalableCap, "name", "scalable");
184 validateField(scalableCap, "type", "tosca.capabilities.Scalable");
186 assertTrue(capabilities.containsKey("tosca.capabilities.network.Bindable"));
187 List<Object> bindingCapList = (List<Object>) capabilities.get("tosca.capabilities.network.Bindable");
188 assertFalse(bindingCapList.isEmpty());
189 Map<String, Object> bindingCap = (Map<String, Object>) bindingCapList.get(0);
190 validateField(bindingCap, "name", "binding");
191 validateField(bindingCap, "type", "tosca.capabilities.network.Bindable");
195 protected void validateMyComputeResource(String resourceName, String resourceVersion, String expectedState) throws ClientProtocolException, IOException {
196 Either<String, Boolean> eitherMyCompute = getResource(resourceName, resourceVersion);
197 assertTrue(eitherMyCompute.isLeft());
198 String testComputeYml = eitherMyCompute.left().value();
200 Map<String, Object> map = new HashMap<String, Object>();
201 map = (Map<String, Object>) new Gson().fromJson(testComputeYml, map.getClass());
203 validateMyComputeBasicFields(map, resourceName, resourceVersion, expectedState);
205 validateMyComputeCapabilities(map);
207 validateMyComputeRequirements(map);
208 validateField(map, RespJsonKeysEnum.RESOURCE_VERSION.getRespJsonKeyName(), resourceVersion);
212 protected void validateMyComputeResource(String uid, String resourceName, String resourceVersion, String expectedState) throws ClientProtocolException, IOException {
213 RestResponse resourceResponse = ResourceRestUtils.getResource(uid);
214 ResourceRestUtils.checkSuccess(resourceResponse);
215 String testComputeYml = resourceResponse.getResponse();
217 // Either<String, Boolean> eitherMyCompute = getResource(resourceName,
219 // assertTrue( eitherMyCompute.isLeft() );
220 // String testComputeYml = eitherMyCompute.left().value();
222 Map<String, Object> map = new HashMap<String, Object>();
223 map = (Map<String, Object>) new Gson().fromJson(testComputeYml, map.getClass());
225 validateMyComputeBasicFields(map, resourceName, resourceVersion, expectedState);
227 validateMyComputeCapabilities(map);
229 validateMyComputeRequirements(map);
230 validateField(map, RespJsonKeysEnum.RESOURCE_VERSION.getRespJsonKeyName(), resourceVersion);
234 protected void validateMyComputeResourceAfterUpdate(String uid, String resourceName, String resourceVersion, String expectedState) throws ClientProtocolException, IOException {
235 RestResponse resourceResponse = ResourceRestUtils.getResource(uid);
236 ResourceRestUtils.checkSuccess(resourceResponse);
237 String testComputeYml = resourceResponse.getResponse();
239 // Either<String, Boolean> eitherMyCompute = getResource(resourceName,
241 // assertTrue( eitherMyCompute.isLeft() );
243 // String testComputeYml = eitherMyCompute.left().value();
245 Map<String, Object> map = new HashMap<String, Object>();
246 map = (Map<String, Object>) new Gson().fromJson(testComputeYml, map.getClass());
248 validateMyComputeBasicFields(map, resourceName, resourceVersion, expectedState);
249 validateField(map, RespJsonKeysEnum.DESCRIPTION.getRespJsonKeyName(), "Short description");
250 validateField(map, RespJsonKeysEnum.VENDOR_NAME.getRespJsonKeyName(), "UserVendor");
251 validateField(map, RespJsonKeysEnum.VENDOR_RELEASE.getRespJsonKeyName(), "1.1.2");
253 // validateMyComputeCapabilities(map);
254 // AssertJUnit.assertTrue(map.containsKey("capabilities"));
255 // Map<String, Object> capabilities = (Map<String, Object>)
256 // map.get("capabilities");
257 // AssertJUnit.assertTrue(capabilities.containsKey("host"));
258 // Map<String, Object> hostCap = (Map<String, Object>)
259 // capabilities.get("host");
260 // validateField(hostCap, "type", "tosca.capabilities.Container");
261 // validateField(hostCap, "validSourceTypes", Arrays.asList(new
262 // String[]{"tosca.nodes.SoftwareComponent"}));
264 // AssertJUnit.assertTrue(capabilities.containsKey("endpoint"));
265 // Map<String, Object> endPointCap = (Map<String, Object>)
266 // capabilities.get("endpoint");
267 // validateField(endPointCap, "type",
268 // "tosca.capabilities.Endpoint.Admin");
270 assertTrue(map.containsKey("capabilities"));
271 Map<String, Object> capabilities = (Map<String, Object>) map.get("capabilities");
272 assertTrue(capabilities.containsKey("tosca.capabilities.Container"));
273 List<Object> hostCapList = (List<Object>) capabilities.get("tosca.capabilities.Container");
274 assertFalse(hostCapList.isEmpty());
275 Map<String, Object> hostCap = (Map<String, Object>) hostCapList.get(0);
276 validateField(hostCap, "type", "tosca.capabilities.Container");
277 validateField(hostCap, "name", "host");
278 validateField(hostCap, "validSourceTypes", Arrays.asList(new String[] { "tosca.nodes.SoftwareComponent" }));
280 assertTrue(capabilities.containsKey("tosca.capabilities.Endpoint.Admin"));
281 List<Object> endPointCapList = (List<Object>) capabilities.get("tosca.capabilities.Endpoint.Admin");
282 assertFalse(endPointCapList.isEmpty());
283 Map<String, Object> endPointCap = (Map<String, Object>) endPointCapList.get(0);
284 validateField(endPointCap, "name", "endpoint");
285 validateField(endPointCap, "type", "tosca.capabilities.Endpoint.Admin");
287 validateMyComputeRequirements(map);
288 validateField(map, RespJsonKeysEnum.RESOURCE_VERSION.getRespJsonKeyName(), resourceVersion);
292 protected void validateMyComputeRequirements(Map<String, Object> map) {
293 assertTrue(map.containsKey("requirements"));
294 Map<String, Object> requirements = (Map<String, Object>) map.get("requirements");
296 assertTrue(requirements.containsKey("tosca.capabilities.Attachment"));
297 List<Object> localStorageReqList = (List<Object>) requirements.get("tosca.capabilities.Attachment");
298 assertFalse(localStorageReqList.isEmpty());
299 Map<String, Object> localStorageReq = (Map<String, Object>) localStorageReqList.get(0);
300 validateField(localStorageReq, "capability", "tosca.capabilities.Attachment");
301 validateField(localStorageReq, "node", "tosca.nodes.BlockStorage");
302 validateField(localStorageReq, "relationship", "tosca.relationships.AttachesTo");
303 validateField(localStorageReq, "name", "local_storage");
306 protected void validateMyComputeBasicFields(Map<String, Object> map, String resourceName, String resourceVersion, String expectedState) {
307 validateField(map, RespJsonKeysEnum.IS_ABSTRACT.getRespJsonKeyName(), false);
308 // validateField(map, RespJsonKeysEnum.CATEGORIES.getRespJsonKeyName(),
309 // categoryDefinition);
310 // validateField(map, RespJsonKeysEnum.UNIQUE_ID.getRespJsonKeyName(),
311 // UniqueIdBuilder.buildResourceUniqueId(resourceName,
312 // resourceVersion));
313 validateField(map, RespJsonKeysEnum.RESOURCE_NAME.getRespJsonKeyName(), resourceName);
314 validateField(map, RespJsonKeysEnum.TAGS.getRespJsonKeyName(), Arrays.asList(new String[] { resourceName }));
315 validateField(map, RespJsonKeysEnum.LIFE_CYCLE_STATE.getRespJsonKeyName(), expectedState);
317 validateField(map, RespJsonKeysEnum.DERIVED_FROM.getRespJsonKeyName(), Arrays.asList(new String[] { "tosca.nodes.Root" }));
320 protected static void validateField(Map<String, Object> map, String jsonField, Object expectedValue) {
321 if (expectedValue == null) {
322 assertTrue(!map.containsKey(jsonField));
324 assertTrue("map does not contain field " + jsonField, map.containsKey(jsonField));
325 Object foundValue = map.get(jsonField);
326 compareElements(expectedValue, foundValue);
330 protected static void compareElements(Object expectedValue, Object foundValue) {
331 if (expectedValue instanceof String) {
332 assertTrue(foundValue instanceof String);
333 assertTrue(foundValue.equals(expectedValue));
336 else if (expectedValue instanceof Boolean) {
337 assertTrue(foundValue instanceof Boolean);
338 assertTrue(foundValue == expectedValue);
339 } else if (expectedValue instanceof Map) {
340 assertTrue(foundValue instanceof Map);
341 Map<String, Object> foundMap = (Map<String, Object>) foundValue;
342 Map<String, Object> excpectedMap = (Map<String, Object>) expectedValue;
343 assertTrue(foundMap.size() == excpectedMap.size());
344 Iterator<String> foundkeyItr = foundMap.keySet().iterator();
345 while (foundkeyItr.hasNext()) {
346 String foundKey = foundkeyItr.next();
347 assertTrue(excpectedMap.containsKey(foundKey));
348 compareElements(excpectedMap.get(foundKey), foundMap.get(foundKey));
351 } else if (expectedValue instanceof List) {
352 assertTrue(foundValue instanceof List);
353 List<Object> foundList = (List<Object>) foundValue;
354 List<Object> excpectedList = (List<Object>) expectedValue;
355 assertTrue(foundList.size() == excpectedList.size());
356 for (int i = 0; i < foundList.size(); i++) {
357 compareElements(excpectedList.get(i), foundList.get(i));
360 } else if (expectedValue instanceof CategoryDefinition) {
361 assertTrue(foundValue instanceof Map);
362 CategoryDefinition expCat = (CategoryDefinition) expectedValue;
363 Map<String, Object> actCat = (Map<String, Object>) foundValue;
364 assertEquals(expCat.getName(), actCat.get("name"));
366 // assertEquals(expCat.getSubcategories().get(0).getName(),
367 // actCat.get("subcategories").getName());
369 assertTrue(foundValue.equals(expectedValue));
373 public static void restoreToOriginalState(Map<NormativeTypesEnum, Boolean> originalState, UserRoleEnum userRole) throws IOException {
374 removeAllNormativeTypeResources();
376 Iterator<Entry<NormativeTypesEnum, Boolean>> iterator = originalState.entrySet().iterator();
377 while (iterator.hasNext()) {
378 Entry<NormativeTypesEnum, Boolean> entry = iterator.next();
379 Boolean isExistBeforeDelete = entry.getValue();
380 if (isExistBeforeDelete) {
381 importNormativeResource(entry.getKey(), userRole);
387 public static void importAllNormativeTypesResources(UserRoleEnum userRole) throws IOException {
388 for (NormativeTypesEnum currResource : NormativeTypesEnum.values()) {
389 Either<String, Boolean> resource = getResource(currResource.getNormativeName(), "1.0");
390 if (resource.isRight()) {
391 importNormativeResource(currResource, userRole);
397 protected static Integer importNormativeResource(NormativeTypesEnum resource, UserRoleEnum userRole) throws IOException {
398 return importResource(resource.getFolderName(), userRole, true);
401 protected static Integer importResource(String folderName, UserRoleEnum userRole, boolean isNormative) throws IOException {
402 Config config = Utils.getConfig();
403 CloseableHttpResponse response = null;
404 MultipartEntityBuilder mpBuilder = MultipartEntityBuilder.create();
406 mpBuilder.addPart("resourceZip", new FileBody(getZipFile(folderName)));
407 mpBuilder.addPart("resourceMetadata", new StringBody(getJsonStringOfFile(folderName, folderName + ".json"), ContentType.APPLICATION_JSON));
409 String url = String.format(Urls.IMPORT_RESOURCE_NORMATIVE, config.getCatalogBeHost(), config.getCatalogBePort());
411 url = String.format(Urls.IMPORT_USER_RESOURCE, config.getCatalogBeHost(), config.getCatalogBePort());
414 CloseableHttpClient client = HttpClients.createDefault();
416 HttpPost httpPost = new HttpPost(url);
417 httpPost.addHeader("USER_ID", userRole.getUserId());
418 httpPost.setEntity(mpBuilder.build());
419 response = client.execute(httpPost);
420 return response.getStatusLine().getStatusCode();
422 closeResponse(response);
423 closeHttpClient(client);
428 public static void closeHttpClient(CloseableHttpClient client) {
430 if (client != null) {
433 } catch (IOException e) {
434 log.debug("failed to close client or response: ", e);
438 public static void closeResponse(CloseableHttpResponse response) {
440 if (response != null) {
443 } catch (IOException e) {
444 log.debug("failed to close client or response: ", e);
448 protected static String getJsonStringOfFile(String folderName, String fileName) throws IOException {
449 String sourceDir = config.getImportResourceConfigDir();
450 sourceDir += File.separator + "normative-types";
452 java.nio.file.Path filePath = FileSystems.getDefault().getPath(sourceDir + File.separator + folderName, fileName);
453 byte[] fileContent = Files.readAllBytes(filePath);
454 String content = new String(fileContent);
458 protected static File getZipFile(String elementName) throws IOException {
459 String sourceDir = config.getImportResourceConfigDir();
460 sourceDir += File.separator + "normative-types";
462 java.nio.file.Path filePath = FileSystems.getDefault().getPath(sourceDir + File.separator + elementName, "normative-types-new-" + elementName + ".zip");
463 return filePath.toFile();
466 protected static String getTestJsonStringOfFile(String folderName, String fileName) throws IOException {
467 String sourceDir = config.getImportResourceTestsConfigDir();
468 java.nio.file.Path filePath = FileSystems.getDefault().getPath(sourceDir + File.separator + folderName, fileName);
469 byte[] fileContent = Files.readAllBytes(filePath);
470 String content = new String(fileContent);
474 protected static File getTestZipFile(String elementName) throws IOException {
475 String sourceDir = config.getImportResourceTestsConfigDir();
477 java.nio.file.Path filePath = FileSystems.getDefault().getPath(sourceDir + File.separator + elementName, "normative-types-new-" + elementName + ".zip");
478 return filePath.toFile();
481 protected static Either<String, Boolean> getResource(String name, String version) throws IOException {
482 RestResponse resource = ResourceRestUtils.getResourceByNameAndVersion(UserRoleEnum.DESIGNER.getUserId(), name, version);
483 if (resource.getErrorCode() == ImportRestUtils.STATUS_CODE_GET_SUCCESS) {
484 return Either.left(resource.getResponse());
485 // return Either.right(true);
488 return Either.right(false);
492 public void testImportWithRequirmentsAndCapabilities() throws IOException {
493 String fileName = FILE_NAME_MY_COMPUTE;
494 RestResponse response = ImportRestUtils.importNormativeResourceByName(RESOURCE_NAME_MY_COMPUTE, UserRoleEnum.ADMIN);
495 Integer statusCode = response.getErrorCode();
496 assertTrue(statusCode == ImportRestUtils.STATUS_CODE_IMPORT_SUCCESS);
497 String uid = ResponseParser.getUniqueIdFromResponse(response);
498 validateMyComputeResource(uid, fileName, "1.0", "CERTIFIED");
502 public void testImportWithUpdateNormativeType() throws IOException {
503 String fileName = FILE_NAME_MY_COMPUTE;
504 RestResponse response = ImportRestUtils.importNormativeResourceByName(RESOURCE_NAME_MY_COMPUTE, UserRoleEnum.ADMIN);
505 Integer statusCode = response.getErrorCode();
506 assertTrue(statusCode == BaseRestUtils.STATUS_CODE_IMPORT_SUCCESS);
507 String uid = ResponseParser.getUniqueIdFromResponse(response);
508 validateMyComputeResource(uid, fileName, "1.0", "CERTIFIED");
511 response = ImportRestUtils.importNormativeResourceByName(RESOURCE_NAME_MY_COMPUTE, UserRoleEnum.ADMIN);
512 statusCode = response.getErrorCode();
513 assertTrue(statusCode == ImportRestUtils.STATUS_CODE_UPDATE_SUCCESS);
514 uid = ResponseParser.getUniqueIdFromResponse(response);
515 validateMyComputeResource(uid, fileName, "2.0", "CERTIFIED");
520 public void testImportWithInvalidDefaultValue() throws IOException {
521 RestResponse response = ImportRestUtils.importNewResourceByName("portInvalidDefaultValue", UserRoleEnum.DESIGNER);
522 assertTrue(response.getErrorCode() == HttpStatus.SC_BAD_REQUEST);
526 public void testImportUserResource() throws IOException {
527 String fileName = FILE_NAME_USER_COMPUTE;
528 RestResponse response = ImportRestUtils.importNewResourceByName(RESOURCE_NAME_USER_COMPUTE, UserRoleEnum.DESIGNER);
529 Integer statusCode = response.getErrorCode();
530 assertTrue(statusCode == ImportRestUtils.STATUS_CODE_IMPORT_SUCCESS);
531 String uid = ResponseParser.getUniqueIdFromResponse(response);
532 validateMyComputeResource(uid, fileName, "0.1", "NOT_CERTIFIED_CHECKOUT");
537 public void testImportAndUpdateUserResource() throws IOException {
538 String fileName = FILE_NAME_USER_COMPUTE;
539 RestResponse response = ImportRestUtils.importNewResourceByName(RESOURCE_NAME_USER_COMPUTE, UserRoleEnum.DESIGNER);
540 Integer statusCode = response.getErrorCode();
541 assertTrue(statusCode == ImportRestUtils.STATUS_CODE_IMPORT_SUCCESS);
542 String uid = ResponseParser.getUniqueIdFromResponse(response);
543 validateMyComputeResource(uid, fileName, "0.1", "NOT_CERTIFIED_CHECKOUT");
544 response = ImportRestUtils.importNewResourceByName(RESOURCE_NAME_UPDATE_COMPUTE, UserRoleEnum.DESIGNER);
545 statusCode = response.getErrorCode();
546 assertTrue(statusCode == ImportRestUtils.STATUS_CODE_UPDATE_SUCCESS);
547 uid = ResponseParser.getUniqueIdFromResponse(response);
548 validateMyComputeResourceAfterUpdate(uid, fileName, "0.1", "NOT_CERTIFIED_CHECKOUT");
553 public void testImportAndUpdateChangesUserResource() throws IOException {
554 String fileName = FILE_NAME_USER_COMPUTE;
555 RestResponse response = ImportRestUtils.importNewResourceByName(RESOURCE_NAME_USER_COMPUTE, UserRoleEnum.DESIGNER);
556 Integer statusCode = response.getErrorCode();
557 assertTrue(statusCode == ImportRestUtils.STATUS_CODE_IMPORT_SUCCESS);
558 String uid = ResponseParser.getUniqueIdFromResponse(response);
559 validateMyComputeResource(uid, fileName, "0.1", "NOT_CERTIFIED_CHECKOUT");
560 // Either<String, Boolean> resource = getResource(fileName, "0.1");
561 // assertTrue(resource.isLeft());
563 response = ImportRestUtils.importNewResourceByName(RESOURCE_NAME_UPDATE_COMPUTE, UserRoleEnum.DESIGNER);
564 statusCode = response.getErrorCode();
565 assertTrue(statusCode == ImportRestUtils.STATUS_CODE_UPDATE_SUCCESS);
566 validateMyComputeResourceAfterUpdate(uid, fileName, "0.1", "NOT_CERTIFIED_CHECKOUT");
571 public void testImportCheckoutAndUpdateUserResource() throws IOException {
572 String fileName = FILE_NAME_USER_COMPUTE;
573 RestResponse response = ImportRestUtils.importNormativeResourceByName(RESOURCE_NAME_USER_COMPUTE, UserRoleEnum.ADMIN);
574 Integer statusCode = response.getErrorCode();
575 assertTrue(statusCode == ImportRestUtils.STATUS_CODE_IMPORT_SUCCESS);
576 String uid = ResponseParser.getUniqueIdFromResponse(response);
577 validateMyComputeResource(uid, fileName, "1.0", "CERTIFIED");
579 response = ImportRestUtils.importNewResourceByName(RESOURCE_NAME_USER_COMPUTE, UserRoleEnum.DESIGNER);
580 statusCode = response.getErrorCode();
581 assertEquals("check response code after update resource", ImportRestUtils.STATUS_CODE_UPDATE_SUCCESS, statusCode.intValue());
582 uid = ResponseParser.getUniqueIdFromResponse(response);
583 validateMyComputeResource(uid, fileName, "1.1", "NOT_CERTIFIED_CHECKOUT");
588 public void importNormativeTypesTesterUserRole() throws Exception {
589 Integer statusCode = ImportRestUtils.importNormativeResourceByName(RESOURCE_NAME_MY_COMPUTE, UserRoleEnum.TESTER).getErrorCode();
590 assertTrue(statusCode == ImportRestUtils.RESTRICTED_OPERATION);
594 public void importNormativeTypesDesignerUserRole() throws Exception {
595 Integer statusCode = ImportRestUtils.importNormativeResourceByName(RESOURCE_NAME_MY_COMPUTE, UserRoleEnum.DESIGNER).getErrorCode();
596 assertTrue(statusCode == 409);