re base code
[sdc.git] / test-apis-ci / src / main / java / org / openecomp / sdc / ci / tests / utils / ToscaTypesDefinitionUtils.java
1 package org.openecomp.sdc.ci.tests.utils;
2
3 import org.openecomp.sdc.be.model.Component;
4 import org.openecomp.sdc.be.model.User;
5 import org.openecomp.sdc.ci.tests.tosca.datatypes.ToscaAnnotationsTypesDefinition;
6 import org.openecomp.sdc.ci.tests.tosca.datatypes.ToscaParameterConstants;
7 import org.slf4j.Logger;
8 import org.slf4j.LoggerFactory;
9 import org.yaml.snakeyaml.Yaml;
10 import org.yaml.snakeyaml.constructor.Constructor;
11
12 import static org.junit.Assert.assertNotNull;
13 import static org.openecomp.sdc.ci.tests.utils.CsarParserUtils.downloadComponentCsar;
14 import static org.openecomp.sdc.ci.tests.utils.ToscaParserUtils.getDataFromZipFileByBytes;
15 import static org.testng.AssertJUnit.fail;
16
17 public class ToscaTypesDefinitionUtils {
18
19     private ToscaTypesDefinitionUtils() {
20     }
21
22     private static final String ANNOTATIONS_TYPE_PATH = ToscaParameterConstants.TOSCA_DEFINITION_PATH + "/annotations.yml";
23     private static Logger log = LoggerFactory.getLogger(ToscaTypesDefinitionUtils.class);
24
25     public static ToscaAnnotationsTypesDefinition getToscaAnnotationsFromCsar(Component csarOwner, User user) throws Exception {
26         byte[] decodeBase64 = downloadComponentCsar(csarOwner, user);
27         String dataFromZipFileByBytes = getDataFromZipFileByBytes(ANNOTATIONS_TYPE_PATH, decodeBase64);
28         assertNotNull(dataFromZipFileByBytes);
29         return parseToscaAnnotationsYml(dataFromZipFileByBytes);
30     }
31
32     private static ToscaAnnotationsTypesDefinition parseToscaAnnotationsYml(String payload){
33         Constructor constructor = initToscaAnnotationDefObject();
34         return (ToscaAnnotationsTypesDefinition) parseToscaYamlPayload(payload, constructor);
35     }
36
37     private static Object parseToscaYamlPayload(String payload, Constructor constructor) {
38         Yaml yaml = new Yaml(constructor);
39         try {
40             return yaml.load(payload);
41         } catch (Exception e) {
42             log.debug("Failed to parse tosca yaml file", e);
43             e.printStackTrace();
44             fail("Failed to parse tosca yaml file");
45         }
46         return null;
47     }
48
49     private static Constructor initToscaAnnotationDefObject() {
50         Constructor toscaStructure = new Constructor(ToscaAnnotationsTypesDefinition.class);
51         toscaStructure.addTypeDescription(ToscaAnnotationsTypesDefinition.getTypeDescription());
52         return toscaStructure;
53     }
54 }