push addional code
[sdc.git] / openecomp-be / lib / openecomp-sdc-validation-lib / openecomp-sdc-validation-impl / src / test / java / org / openecomp / sdc / validation / impl / validators / ValidatorBaseTest.java
1 package org.openecomp.sdc.validation.impl.validators;
2
3 import org.openecomp.core.utilities.file.FileUtils;
4 import org.openecomp.core.validation.errors.ErrorMessagesFormatBuilder;
5 import org.openecomp.core.validation.interfaces.Validator;
6 import org.openecomp.core.validation.types.GlobalValidationContext;
7 import org.openecomp.core.validation.types.MessageContainer;
8 import org.testng.Assert;
9
10 import java.io.File;
11 import java.io.FileInputStream;
12 import java.io.IOException;
13 import java.net.URL;
14 import java.util.HashMap;
15 import java.util.Map;
16
17 public abstract class ValidatorBaseTest {
18
19   private static GlobalValidationContext createGlobalContextFromPath(String path) {
20     GlobalValidationContext globalValidationContext = new GlobalValidationContext();
21     Map<String, byte[]> contentMap = getContentMapByPath(path);
22     if (contentMap == null) {
23       return null;
24     }
25     contentMap.entrySet().stream()
26         .forEach(entry -> globalValidationContext.addFileContext(entry.getKey(), entry.getValue()));
27
28     return globalValidationContext;
29   }
30
31
32   // New test base implementation
33
34   private static Map<String, byte[]> getContentMapByPath(String path) {
35     Map<String, byte[]> contentMap = new HashMap<>();
36     byte[] fileContent;
37     FileInputStream fis;
38     URL url = ValidatorBaseTest.class.getResource(path);
39     File pathFile = new File(url.getFile());
40     File[] files;
41     if (pathFile.isDirectory()) {
42       files = pathFile.listFiles();
43     } else {
44       files = new File[]{pathFile};
45     }
46
47     if (files == null || files.length == 0) {
48       return null;
49     }
50
51     for (File file : files) {
52       try {
53         fis = new FileInputStream(file);
54         fileContent = FileUtils.toByteArray(fis);
55         contentMap.put(file.getName(), fileContent);
56       } catch (IOException e) {
57         e.printStackTrace();
58       }
59     }
60     return contentMap;
61   }
62
63   public abstract Map<String, MessageContainer> runValidation(String path);
64
65   protected Map<String, MessageContainer> testValidator(Validator validator, String path) {
66
67     GlobalValidationContext globalValidationContext = createGlobalContextFromPath(path);
68     validator.validate(globalValidationContext);
69
70     assert globalValidationContext != null;
71     return globalValidationContext.getContextMessageContainers();
72
73
74   }
75
76   protected void validateErrorMessage(String actualMessage, String expected, String... params) {
77     Assert.assertEquals(actualMessage.replace("\n", "").replace("\r", ""),
78         ErrorMessagesFormatBuilder.getErrorWithParameters(expected, params).replace("\n", "")
79             .replace("\r", ""));
80
81   }
82
83
84 }