Add validation of manifest for helm packages.
[sdc.git] / openecomp-be / backend / openecomp-sdc-vendor-software-product-manager / src / test / java / org / openecomp / sdc / vendorsoftwareproduct / impl / onboarding / validation / CnfPackageValidatorTest.java
1 /*
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2021 Nokia
4  *  ================================================================================
5  *  Licensed under the Apache License, Version 2.0 (the "License");
6  *  you may not use this file except in compliance with the License.
7  *  You may obtain a copy of the License at
8  *
9  *        http://www.apache.org/licenses/LICENSE-2.0
10  *  Unless required by applicable law or agreed to in writing, software
11  *  distributed under the License is distributed on an "AS IS" BASIS,
12  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  *  See the License for the specific language governing permissions and
14  *  limitations under the License.
15  *
16  *  SPDX-License-Identifier: Apache-2.0
17  *  ============LICENSE_END=========================================================
18  */
19
20 package org.openecomp.sdc.vendorsoftwareproduct.impl.onboarding.validation;
21
22 import static org.hamcrest.Matchers.emptyIterable;
23 import static org.hamcrest.Matchers.is;
24 import static org.junit.Assert.assertThat;
25
26 import java.util.ArrayList;
27 import java.util.Collections;
28 import java.util.List;
29 import org.junit.Test;
30 import org.openecomp.sdc.heat.datatypes.manifest.FileData;
31
32 public class CnfPackageValidatorTest {
33
34     private CnfPackageValidator validator = new CnfPackageValidator();
35
36     @Test
37     public void shouldBeValidForNullInput() {
38         List<String> messages = validator.validateHelmPackage(null);
39
40         assertThat(messages, is(emptyIterable()));
41     }
42
43     @Test
44     public void shouldBeValidForEmptyInput() {
45         List<String> messages = validator.validateHelmPackage(Collections.emptyList());
46
47         assertThat(messages, is(emptyIterable()));
48     }
49
50     @Test
51     public void shouldBeValid() {
52         List<String> messages = validator.validateHelmPackage(createValidInput());
53
54         assertThat(messages, is(emptyIterable()));
55     }
56
57     @Test
58     public void shouldBeInvalidNoneIsMarkedAsBase() {
59         List<String> messages = validator.validateHelmPackage(noneIsMarkedAsBase());
60
61         assertThat(messages.size(), is(1));
62         assertThat(messages.get(0), is("None of charts is marked as 'isBase'."));
63     }
64
65     @Test
66     public void shouldBeInvalidMultipleAreMarkedAsBase() {
67         List<String> messages = validator.validateHelmPackage(multipleAreMarkedAsBase());
68
69         assertThat(messages.size(), is(1));
70         assertThat(messages.get(0), is("More than one chart is marked as 'isBase'."));
71     }
72
73     @Test
74     public void shouldBeInvalidIsBaseMissing() {
75         List<String> messages = validator.validateHelmPackage(isBaseMissing());
76
77         assertThat(messages.size(), is(1));
78         assertThat(messages.get(0), is("Definition of 'isBase' is missing in 2 charts."));
79     }
80
81     @Test
82     public void shouldBeInvalidDueMultipleReasons() {
83         List<String> messages = validator.validateHelmPackage(invalidMultipleReasons());
84
85         assertThat(messages.size(), is(2));
86         assertThat(messages.get(0), is("Definition of 'isBase' is missing in 1 charts."));
87         assertThat(messages.get(1), is("None of charts is marked as 'isBase'."));
88     }
89
90     private List<FileData> createValidInput() {
91         List<FileData> files = new ArrayList<>();
92         files.add(createFileData(true));
93         files.add(createFileData(false));
94         files.add(createFileData(false));
95         return files;
96     }
97
98     private List<FileData> noneIsMarkedAsBase() {
99         List<FileData> files = new ArrayList<>();
100         files.add(createFileData(false));
101         files.add(createFileData(false));
102         files.add(createFileData(false));
103         return files;
104     }
105
106     private List<FileData> multipleAreMarkedAsBase() {
107         List<FileData> files = new ArrayList<>();
108         files.add(createFileData(true));
109         files.add(createFileData(true));
110         files.add(createFileData(false));
111         return files;
112     }
113
114     private List<FileData> isBaseMissing() {
115         List<FileData> files = new ArrayList<>();
116         files.add(createFileData(true));
117         files.add(createFileData(null));
118         files.add(createFileData(null));
119         files.add(createFileData(false));
120         return files;
121     }
122
123     private List<FileData> invalidMultipleReasons() {
124         List<FileData> files = new ArrayList<>();
125         files.add(createFileData(false));
126         files.add(createFileData(null));
127         files.add(createFileData(false));
128         files.add(createFileData(false));
129         return files;
130     }
131
132     private FileData createFileData(Boolean base) {
133         FileData f = new FileData();
134         f.setBase(base);
135         return f;
136     }
137 }