push addional code
[sdc.git] / openecomp-be / lib / openecomp-tosca-lib / src / test / java / org / openecomp / sdc / tosca / services / impl / ToscaFileOutputServiceCsarImplTest.java
1 package org.openecomp.sdc.tosca.services.impl;
2
3 import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
4 import org.openecomp.sdc.tosca.datatypes.model.Metadata;
5 import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
6 import org.openecomp.sdc.tosca.services.ToscaUtil;
7 import org.openecomp.core.utilities.file.FileContentHandler;
8 import org.junit.Assert;
9 import org.junit.Test;
10
11 import java.io.File;
12 import java.io.FileOutputStream;
13 import java.io.IOException;
14 import java.nio.file.Files;
15 import java.nio.file.Paths;
16 import java.util.Enumeration;
17 import java.util.HashMap;
18 import java.util.Map;
19 import java.util.zip.ZipEntry;
20 import java.util.zip.ZipFile;
21
22 public class ToscaFileOutputServiceCsarImplTest {
23
24   private ToscaFileOutputServiceCsarImpl toscaFileOutputServiceCsarImpl =
25       new ToscaFileOutputServiceCsarImpl();
26
27   @Test
28   public void testCreationMetaFile() {
29     String createdMeta = toscaFileOutputServiceCsarImpl.createMetaFile("entryFile.yaml");
30     String expectedMeta =
31         "TOSCA-Meta-File-Version: 1.0\n" +
32             "CSAR-Version: 1.1\n" +
33             "Created-By: ASDC Onboarding portal\n" +
34             "Entry-Definitions: Definitions" + File.separator + "entryFile.yaml";
35     Assert.assertEquals(createdMeta.replaceAll("\\s+", ""), expectedMeta.replaceAll("\\s+", ""));
36   }
37
38   @Test
39   public void testCSARFileCreationWithExternalArtifacts() throws IOException {
40     ServiceTemplate mainServiceTemplate = new ServiceTemplate();
41     Metadata metadata1 = new Metadata();
42     metadata1.setTemplate_author("OPENECOMP");
43     metadata1.setTemplate_name("ST1");
44     metadata1.setTemplate_version("1.0.0");
45     mainServiceTemplate.setTosca_definitions_version("tosca_simple_yaml_1_0_0");
46     mainServiceTemplate.setDescription("testing desc tosca service template");
47     mainServiceTemplate.setMetadata(metadata1);
48
49     ServiceTemplate additionalServiceTemplate = new ServiceTemplate();
50     Metadata metadata2 = new Metadata();
51     metadata2.setTemplate_author("OPENECOMP");
52     metadata2.setTemplate_name("ST2");
53     metadata2.setTemplate_version("1.0.0");
54     additionalServiceTemplate.setTosca_definitions_version("tosca_simple_yaml_1_0_0");
55     additionalServiceTemplate.setDescription("testing desc tosca service template");
56     additionalServiceTemplate.setMetadata(metadata2);
57
58     Map<String, ServiceTemplate> definitionsInput = new HashMap<>();
59     definitionsInput
60         .put(ToscaUtil.getServiceTemplateFileName(mainServiceTemplate), mainServiceTemplate);
61     definitionsInput.put(ToscaUtil.getServiceTemplateFileName(additionalServiceTemplate),
62         additionalServiceTemplate);
63
64
65     Map<String, byte[]> dummyHeatArtifacts = new HashMap<>();
66     String file1Content = "this is file number 1";
67     String file2Content = "this is file number 2";
68     String file1 = "file1.xml";
69     dummyHeatArtifacts.put(file1, file1Content.getBytes());
70     String file2 = "file2.yml";
71     dummyHeatArtifacts.put(file2, file2Content.getBytes());
72
73
74     FileContentHandler heatFiles = new FileContentHandler();
75     heatFiles.putAll(dummyHeatArtifacts);
76     Map<String, byte[]> licenseArtifacts = new HashMap<>();
77
78     FileContentHandler licenseArtifactsFiles = new FileContentHandler();
79
80     licenseArtifacts.put(
81         ToscaFileOutputServiceCsarImpl.EXTERNAL_ARTIFACTS_FOLDER_NAME + File.separator +
82             "license-file-1.xml", file1Content.getBytes());
83     licenseArtifacts.put(
84         ToscaFileOutputServiceCsarImpl.EXTERNAL_ARTIFACTS_FOLDER_NAME + File.separator +
85             "license-file-2.xml", file1Content.getBytes());
86
87     licenseArtifactsFiles.putAll(licenseArtifacts);
88
89     byte[] csarFile = toscaFileOutputServiceCsarImpl.createOutputFile(
90         new ToscaServiceModel(heatFiles, definitionsInput,
91             ToscaUtil.getServiceTemplateFileName(mainServiceTemplate)), licenseArtifactsFiles);
92
93     String resultFileName = "resultFile.zip";
94     File file = new File(resultFileName);
95     FileOutputStream fos = new FileOutputStream(file);
96     fos.write(csarFile);
97     fos.close();
98
99     ZipFile zipFile = new ZipFile(resultFileName);
100
101     Enumeration<? extends ZipEntry> entries = zipFile.entries();
102
103     int count = 0;
104     while (entries.hasMoreElements()) {
105       count++;
106       entries.nextElement();
107     }
108     Assert.assertEquals(7, count);
109     zipFile.close();
110     Files.delete(Paths.get(file.getPath()));
111   }
112
113   @Test
114   public void testCSARFileCreation_noArtifacts() throws IOException {
115     ServiceTemplate serviceTemplate = new ServiceTemplate();
116     Metadata metadata = new Metadata();
117     metadata.setTemplate_author("OPENECOMP");
118     metadata.setTemplate_name("Test");
119     metadata.setTemplate_version("1.0.0");
120     serviceTemplate.setTosca_definitions_version("tosca_simple_yaml_1_0_0");
121     serviceTemplate.setDescription("testing desc tosca service template");
122     serviceTemplate.setMetadata(metadata);
123     Map<String, ServiceTemplate> definitionsInput = new HashMap<>();
124     String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
125     definitionsInput.put(serviceTemplateFileName, serviceTemplate);
126     byte[] csarFile = toscaFileOutputServiceCsarImpl
127         .createOutputFile(new ToscaServiceModel(null, definitionsInput, serviceTemplateFileName),
128             null);
129
130
131     String resultFileName = "resultFile.zip";
132     File file = new File(resultFileName);
133     FileOutputStream fos = new FileOutputStream(file);
134     fos.write(csarFile);
135     fos.close();
136
137     ZipFile zipFile = new ZipFile(resultFileName);
138
139     Enumeration<? extends ZipEntry> entries = zipFile.entries();
140
141     int count = 0;
142     while (entries.hasMoreElements()) {
143       count++;
144       entries.nextElement();
145     }
146     Assert.assertEquals(2, count);
147     zipFile.close();
148     Files.delete(Paths.get(file.getPath()));
149   }
150 }