0cfac523185fcb373fdedcdd553fec10fcc658d9
[sdc.git] /
1 package org.openecomp.sdc.heat.services.tree;
2
3 import org.junit.Assert;
4 import org.junit.Test;
5 import org.openecomp.core.utilities.file.FileUtils;
6 import org.openecomp.core.utilities.json.JsonUtil;
7 import org.openecomp.sdc.heat.datatypes.structure.HeatStructureTree;
8
9 import java.io.File;
10 import java.io.FileInputStream;
11 import java.io.IOException;
12 import java.util.regex.Pattern;
13
14 public class ToscaTreeManagerTest {
15   private static final String BASE_DIR = "/mock/toscaTree/";
16   private static final String IN = "in";
17   private static final String OUT = "out";
18   private static final String EXPECTED_TREE_FILE = "/expectedTree.json";
19   private ToscaTreeManager toscaTreeManager = new ToscaTreeManager();
20
21   @Test
22   public void testTreeWithDiffFileNames() throws IOException {
23     String inputDirectory = BASE_DIR + "diffFileNames/" + IN;
24     String outputFileName = BASE_DIR + "diffFileNames/" + OUT + EXPECTED_TREE_FILE;
25
26     testTreeManager(inputDirectory, outputFileName);
27   }
28
29   @Test
30   public void testDirectoriesWithSimilarNameUnderDifferentRoots() throws IOException {
31     String inputDirectory = BASE_DIR + "similarDirectoryName/" + IN;
32     String outputFileName = BASE_DIR + "similarDirectoryName/" + OUT + EXPECTED_TREE_FILE;
33
34     testTreeManager(inputDirectory, outputFileName);
35   }
36
37   @Test
38   public void testTwoFilesUnderSameDirectory() throws IOException {
39     String inputDirectory = BASE_DIR + "twoFilesUnderSameDirectory/" + IN;
40     String outputFileName = BASE_DIR + "twoFilesUnderSameDirectory/" + OUT + EXPECTED_TREE_FILE;
41
42     testTreeManager(inputDirectory, outputFileName);
43   }
44
45   private void testTreeManager(String inputDirectory, String outputFileName) throws IOException {
46     initTreeManager(inputDirectory);
47     toscaTreeManager.createTree();
48     HeatStructureTree tree = toscaTreeManager.getTree();
49
50     validateToscaTree(outputFileName, tree);
51   }
52
53   private void validateToscaTree(String outputFileName, HeatStructureTree tree) throws IOException {
54     String actualTree = JsonUtil.object2Json(tree);
55     File expectedTreeFile = new File(this.getClass().getResource(outputFileName).getFile());
56
57     String expectedTree;
58     try(FileInputStream fis = new FileInputStream(expectedTreeFile)) {
59       expectedTree = new String(FileUtils.toByteArray(fis));
60     }
61     Assert.assertNotNull(expectedTree);
62     expectedTree = expectedTree.trim().replace("\r", "");
63     Assert.assertEquals(expectedTree, actualTree);
64   }
65
66   private void initTreeManager(String inputDir) throws IOException {
67     String fileName = inputDir.replace("/", File.separator);
68     File directory = new File(this.getClass().getResource(inputDir).getFile());
69
70     addFilesToTreeManager(fileName, directory.listFiles());
71   }
72
73   private void addFilesToTreeManager(String baseDir, File[] listFiles) throws IOException {
74     for (File file : listFiles) {
75       if (file.isDirectory()) {
76         addFilesToTreeManager(baseDir, file.listFiles());
77       } else {
78         toscaTreeManager.addFile(getFileNameWithoutTestDirectory(baseDir, file.getPath()), new byte[2]);
79       }
80     }
81   }
82
83   private String getFileNameWithoutTestDirectory(String baseDir, String fileName) {
84     return fileName.split(Pattern.quote(baseDir) + Pattern.quote(File.separator))[1];
85   }
86 }