1 package org.openecomp.sdc.vendorsoftwareproduct.services;
3 import org.openecomp.core.utilities.json.JsonUtil;
4 import org.everit.json.schema.EmptySchema;
5 import org.everit.json.schema.loader.SchemaLoader;
6 import org.json.JSONObject;
7 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.ComponentData;
8 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.CompositionEntityType;
9 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.Network;
10 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.NetworkType;
11 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.Nic;
12 import org.openecomp.sdc.vendorsoftwareproduct.types.schemagenerator.ComponentCompositionSchemaInput;
13 import org.openecomp.sdc.vendorsoftwareproduct.types.schemagenerator.ComponentQuestionnaireSchemaInput;
14 import org.openecomp.sdc.vendorsoftwareproduct.types.schemagenerator.NetworkCompositionSchemaInput;
15 import org.openecomp.sdc.vendorsoftwareproduct.types.schemagenerator.NicCompositionSchemaInput;
16 import org.openecomp.sdc.vendorsoftwareproduct.types.schemagenerator.SchemaTemplateContext;
17 import org.testng.Assert;
18 import org.testng.annotations.Test;
20 import java.util.Arrays;
23 public class SchemaGeneratorTest {
25 private static int getMinOfVmMax(JSONObject schemaJson) {
26 return schemaJson.getJSONObject("properties").getJSONObject("compute")
27 .getJSONObject("properties").getJSONObject("numOfVMs").getJSONObject("properties")
28 .getJSONObject("maximum").getInt("minimum");
31 private static JSONObject validateSchema(String schema) {
32 System.out.println(schema);
33 Assert.assertNotNull(schema);
34 Assert.assertTrue(JsonUtil.isValidJson(schema));
35 JSONObject schemaJson = new JSONObject(schema);
36 Assert.assertFalse(SchemaLoader.load(schemaJson) instanceof EmptySchema);
41 public void testGenerateVspQuestionnaire() {
42 String schema = SchemaGenerator
43 .generate(SchemaTemplateContext.questionnaire, CompositionEntityType.vsp, null);
44 validateSchema(schema);
48 public void testGenerateNetworkCompositionUpload() {
49 Network network = new Network();
50 network.setName("upload network1 name");
51 network.setDhcp(true);
53 NetworkCompositionSchemaInput input = new NetworkCompositionSchemaInput();
54 input.setManual(false);
55 input.setNetwork(network);
57 String schema = SchemaGenerator
58 .generate(SchemaTemplateContext.composition, CompositionEntityType.network, input);
59 validateSchema(schema);
63 public void testGenerateNetworkCompositionManual() {
64 NetworkCompositionSchemaInput input = new NetworkCompositionSchemaInput();
65 input.setManual(true);
67 String schema = SchemaGenerator
68 .generate(SchemaTemplateContext.composition, CompositionEntityType.network, input);
70 validateSchema(schema);
74 public void testGenerateComponentQuestionnaireWithoutInput() {
75 String schema = SchemaGenerator
76 .generate(SchemaTemplateContext.questionnaire, CompositionEntityType.component, null);
77 validateSchema(schema);
81 public void testGenerateComponentQuestionnaireWithMissingInput() {
82 ComponentQuestionnaireSchemaInput input =
83 new ComponentQuestionnaireSchemaInput(Arrays.asList("nic1", "nic2"),
84 JsonUtil.json2Object("{\n" +
86 " \"numOfVMs\": {\n" +
87 " \"blabla\": 70\n" + // no minimum
91 String schema = SchemaGenerator
92 .generate(SchemaTemplateContext.questionnaire, CompositionEntityType.component, input);
93 JSONObject schemaJson = validateSchema(schema);
94 //Assert.assertEquals(getMinOfVmMax(schemaJson), 0);
98 public void testGenerateComponentQuestionnaireWithInvalidTypeInput() {
99 ComponentQuestionnaireSchemaInput input =
100 new ComponentQuestionnaireSchemaInput(Arrays.asList("nic1", "nic2"),
101 JsonUtil.json2Object("{\n" +
102 " \"compute\": {\n" +
103 " \"numOfVMs\": {\n" +
104 " \"minimum\": \"some string instead of integer\"\n" +
105 // invalid minimum - string
109 String schema = SchemaGenerator
110 .generate(SchemaTemplateContext.questionnaire, CompositionEntityType.component, input);
111 JSONObject schemaJson = validateSchema(schema);
112 Assert.assertEquals(getMinOfVmMax(schemaJson), 0);
116 public void testGenerateComponentQuestionnaireWithInvalidRangeInput() {
117 ComponentQuestionnaireSchemaInput input =
118 new ComponentQuestionnaireSchemaInput(Arrays.asList("nic1", "nic2"),
119 JsonUtil.json2Object("{\n" +
120 " \"compute\": {\n" +
121 " \"numOfVMs\": {\n" +
122 " \"minimum\": 150\n" + // invalid minimum - integer out of range (0-100)
126 String schema = SchemaGenerator
127 .generate(SchemaTemplateContext.questionnaire, CompositionEntityType.component, input);
128 JSONObject schemaJson = validateSchema(schema);
129 Assert.assertEquals(getMinOfVmMax(schemaJson), 0);
133 public void testGenerateComponentQuestionnaireWithValidInput() {
134 ComponentQuestionnaireSchemaInput input =
135 new ComponentQuestionnaireSchemaInput(Arrays.asList("nic1", "nic2"),
136 JsonUtil.json2Object("{\n" +
137 " \"compute\": {\n" +
138 " \"numOfVMs\": {\n" +
139 " \"minimum\": 30\n" + // valid minimum - integer at the correct range (0-100)
143 String schema = SchemaGenerator
144 .generate(SchemaTemplateContext.questionnaire, CompositionEntityType.component, input);
145 JSONObject schemaJson = validateSchema(schema);
146 Assert.assertEquals(getMinOfVmMax(schemaJson), 30);
150 public void testGenerateNicQuestionnaire() {
151 String schema = SchemaGenerator
152 .generate(SchemaTemplateContext.questionnaire, CompositionEntityType.nic, null);
153 validateSchema(schema);
157 public void testGenerateComponentCompositionUpload() {
158 ComponentData component = new ComponentData();
159 component.setName("upload comp1 name");
160 component.setDescription("upload comp1 desc");
162 ComponentCompositionSchemaInput input = new ComponentCompositionSchemaInput();
163 input.setManual(false);
164 input.setComponent(component);
166 String schema = SchemaGenerator
167 .generate(SchemaTemplateContext.composition, CompositionEntityType.component, input);
168 validateSchema(schema);
172 public void testGenerateComponentCompositionManual() {
173 ComponentCompositionSchemaInput input = new ComponentCompositionSchemaInput();
174 input.setManual(true);
176 String schema = SchemaGenerator
177 .generate(SchemaTemplateContext.composition, CompositionEntityType.component, input);
178 validateSchema(schema);
182 public void testGenerateNicCompositionUpload() {
184 nic.setName("upload nic1 name");
185 nic.setDescription("upload nic1 desc");
186 nic.setNetworkId("upload nic1 networkId");
187 //nic.setNetworkName("upload nic1 networkName");
188 nic.setNetworkType(NetworkType.External);
190 NicCompositionSchemaInput input = new NicCompositionSchemaInput();
191 input.setManual(false);
194 String schema = SchemaGenerator
195 .generate(SchemaTemplateContext.composition, CompositionEntityType.nic, input);
196 validateSchema(schema);
201 // public void testGenerateNicCompositionManualWithoutNetworkId() {
202 // Nic nic = new Nic();
203 // nic.setName("upload nic1 name");
204 // nic.setDescription("upload nic1 desc");
205 // //nic.setNetworkName("upload nic1 networkName");
206 // nic.setNetworkType(NetworkType.External);
208 // NicCompositionSchemaInput input = new NicCompositionSchemaInput();
209 // input.setManual(true);
210 // input.setNic(nic);
212 // String schema = SchemaGenerator.generate(SchemaTemplateContext.composition, CompositionEntityType.nic, input);
213 // validateSchema(schema);
217 public void testGenerateNicCompositionUploadWithoutNetworkId() {
219 nic.setName("upload nic1 name");
220 nic.setDescription("upload nic1 desc");
221 //nic.setNetworkName("upload nic1 networkName");
222 nic.setNetworkType(NetworkType.External);
224 NicCompositionSchemaInput input = new NicCompositionSchemaInput();
225 input.setManual(false);
228 String schema = SchemaGenerator
229 .generate(SchemaTemplateContext.composition, CompositionEntityType.nic, input);
230 validateSchema(schema);
234 public void testGenerateNicCompositionManual() {
235 NicCompositionSchemaInput input = new NicCompositionSchemaInput();
236 input.setManual(true);
238 Arrays.asList("manual networkId1", "manual networkId2", "manual networkId3"));
240 String schema = SchemaGenerator
241 .generate(SchemaTemplateContext.composition, CompositionEntityType.nic, input);
242 validateSchema(schema);