Added oparent to sdc main
[sdc.git] / common / onap-tosca-datatype / src / test / java / org / onap / sdc / tosca / services / DataModelConvertUtilTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
4  * ================================================================================
5  * Copyright (C) 2019 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.onap.sdc.tosca.services;
22
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertNotNull;
25 import static org.junit.Assert.assertNull;
26
27 import java.io.File;
28 import java.io.FileInputStream;
29 import java.net.URL;
30 import java.util.Map;
31
32 import org.junit.Assert;
33 import org.junit.Test;
34 import org.onap.sdc.tosca.datatypes.model.Import;
35 import org.onap.sdc.tosca.datatypes.model.ServiceTemplate;
36
37
38 public class DataModelConvertUtilTest {
39
40     @Test
41     public void testConvertToscaImport() throws Exception {
42         ServiceTemplate serviceTemplate;
43         String inputResourceName = "/mock/serviceTemplate/importConvertTest.yml";
44         URL resource = this.getClass().getResource(inputResourceName);
45         File inputPayload = new File(resource.getFile());
46         ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil();
47         try (FileInputStream fis = new FileInputStream(inputPayload)) {
48             serviceTemplate = toscaExtensionYamlUtil.yamlToObject(fis, ServiceTemplate.class);
49         }
50         assertNotNull(((Map)serviceTemplate.getImports().get(0)).get("data"));
51         assertNotNull(((Map)serviceTemplate.getImports().get(1)).get("artifacts"));
52         assertNotNull(((Map)serviceTemplate.getImports().get(2)).get("capabilities"));
53         assertNotNull(((Map)serviceTemplate.getImports().get(3)).get("api_interfaces"));
54         assertNotNull(((Map)serviceTemplate.getImports().get(4)).get("api_util_relationships"));
55         assertNotNull(((Map)serviceTemplate.getImports().get(5)).get("common"));
56         assertNotNull(((Map)serviceTemplate.getImports().get(6)).get("api_util"));
57         assertNotNull(((Map)serviceTemplate.getImports().get(7)).get("relationshipsExt"));
58         assertNotNull(((Map)serviceTemplate.getImports().get(8)).get("some_definition_file"));
59         assertNotNull(((Map)serviceTemplate.getImports().get(9)).get("site_index"));
60     }
61
62     @Test
63     public void testConvertToscaImportForEmptyImport() throws Exception {
64         ServiceTemplate serviceTemplate;
65         String inputResourceName = "/mock/serviceTemplate/importConvertTestNoImport.yml";
66         URL resource = this.getClass().getResource(inputResourceName);
67         File inputPayload = new File(resource.getFile());
68         ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil();
69         try (FileInputStream fis = new FileInputStream(inputPayload)) {
70             serviceTemplate = toscaExtensionYamlUtil.yamlToObject(fis, ServiceTemplate.class);
71         }
72
73         Assert.assertNull(serviceTemplate.getImports());
74     }
75
76     @Test
77     public void testInvalidToscaImportSection() {
78         String inputResourceName = "/mock/serviceTemplate/invalidToscaImport.yml";
79         URL resource = this.getClass().getResource(inputResourceName);
80         File inputPayload = new File(resource.getFile());
81         ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil();
82         try (FileInputStream fis = new FileInputStream(inputPayload)) {
83             toscaExtensionYamlUtil.yamlToObject(fis, ServiceTemplate.class);
84             Assert.fail();
85         } catch (Exception ex) {
86             Assert.assertTrue(ex.getMessage().contains("Cannot create property=imports"));
87         }
88     }
89
90     @Test
91     public void testEmptyImportList() throws Exception {
92         String inputResourceName = "/mock/serviceTemplate/emptyImportList.yml";
93         URL resource = this.getClass().getResource(inputResourceName);
94         File inputPayload = new File(resource.getFile());
95         ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil();
96         try (FileInputStream fis = new FileInputStream(inputPayload)) {
97             ServiceTemplate serviceTemplate = toscaExtensionYamlUtil.yamlToObject(fis, ServiceTemplate.class);
98             assertNull(serviceTemplate.getImports());
99         }
100     }
101
102     @Test
103     public void testConvertToscaImportMultiLineGrammar() throws Exception {
104         ServiceTemplate serviceTemplate;
105         String inputResourceName = "/mock/serviceTemplate/importMultiLineGrammar.yml";
106         URL resource = this.getClass().getResource(inputResourceName);
107         File inputPayload = new File(resource.getFile());
108         ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil();
109         try (FileInputStream fis = new FileInputStream(inputPayload)) {
110             serviceTemplate = toscaExtensionYamlUtil.yamlToObject(fis, ServiceTemplate.class);
111         }
112         Map<String, Import> parsedMultiLineImport = (Map<String, Import>) serviceTemplate.getImports().get(0);
113         assertNotNull(parsedMultiLineImport);
114         Import multiLineGrammarImport = parsedMultiLineImport.get("multi_line_grammar_import");
115         assertNotNull(multiLineGrammarImport);
116         assertEquals(multiLineGrammarImport.getFile(), "path1/path2/importFile.yaml");
117         assertEquals(multiLineGrammarImport.getRepository(), "service_repo");
118         assertEquals(multiLineGrammarImport.getNamespace_uri(), "http://test.xyz/tosca/1.0/platform");
119         assertEquals(multiLineGrammarImport.getNamespace_prefix(), "ns_prefix");
120     }
121
122
123     @Test
124     public void testConvertToscaImportInvalidMultiLineGrammar() {
125         String inputResourceName = "/mock/serviceTemplate/invalidImportMultiLineGrammar.yml";
126         URL resource = this.getClass().getResource(inputResourceName);
127         File inputPayload = new File(resource.getFile());
128         ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil();
129         try (FileInputStream fis = new FileInputStream(inputPayload)) {
130             toscaExtensionYamlUtil.yamlToObject(fis, ServiceTemplate.class);
131             Assert.fail();
132         } catch (Exception ex) {
133             Assert.assertTrue(ex.getMessage().contains("Cannot create property=imports"));
134         }
135     }
136 }