1 package org.onap.sdnc.apps.ms.gra.controllers;
3 import static org.junit.Assert.assertEquals;
5 import java.io.IOException;
6 import java.nio.file.Files;
7 import java.nio.file.Paths;
9 import org.junit.BeforeClass;
10 import org.junit.Test;
11 import org.junit.runner.RunWith;
12 import org.onap.sdnc.apps.ms.gra.GenericResourceMsApp;
13 import org.onap.sdnc.apps.ms.gra.data.ConfigPreloadData;
14 import org.onap.sdnc.apps.ms.gra.data.ConfigPreloadDataRepository;
15 import org.springframework.beans.factory.annotation.Autowired;
16 import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
17 import org.springframework.boot.test.context.SpringBootTest;
18 import org.springframework.http.MediaType;
19 import org.springframework.test.context.junit4.SpringRunner;
20 import org.springframework.test.web.servlet.MockMvc;
21 import org.springframework.test.web.servlet.MvcResult;
22 import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
23 import org.springframework.transaction.annotation.Transactional;
25 @RunWith(SpringRunner.class)
26 @SpringBootTest(classes={GenericResourceMsApp.class})
29 public class ConfigApiPreloadControllerTest {
31 private final static String CONFIG_PRELOAD_URL = "/config/GENERIC-RESOURCE-API:preload-information/";
32 private final static String CONFIG_PRELOAD_LIST_URL = "/config/GENERIC-RESOURCE-API:preload-information/preload-list/";
39 ConfigPreloadDataRepository configPreloadDataRepository;
42 public static void setUp() throws Exception {
43 System.out.println("ConfigApiPreloadControllerTest: Setting serviceLogicProperties, serviceLogicDirectory and sdnc.config.dir");
44 System.setProperty("serviceLogicProperties", "src/test/resources/svclogic.properties");
45 System.setProperty("serviceLogicDirectory", "src/test/resources/svclogic");
46 System.setProperty("sdnc.config.dir", "src/test/resources");
51 public void configGENERICRESOURCEAPIpreloadInformationDelete() throws Exception {
54 configPreloadDataRepository.deleteAll();
57 loadData(CONFIG_PRELOAD_URL, "src/test/resources/preload1-net-model-info.json");
59 assertEquals(1, configPreloadDataRepository.count());
60 MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.delete(CONFIG_PRELOAD_URL).contentType(MediaType.APPLICATION_JSON).content(""))
62 assertEquals(204, mvcResult.getResponse().getStatus());
63 assertEquals(0, configPreloadDataRepository.count());
66 mvcResult = mvc.perform(MockMvcRequestBuilders.delete(CONFIG_PRELOAD_URL).contentType(MediaType.APPLICATION_JSON).content(""))
68 assertEquals(204, mvcResult.getResponse().getStatus());
72 public void configGENERICRESOURCEAPIpreloadInformationGet() throws Exception {
74 configPreloadDataRepository.deleteAll();
77 loadData(CONFIG_PRELOAD_URL, "src/test/resources/preload1-net-model-info.json");
78 assert(configPreloadDataRepository.count() > 0);
80 MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_PRELOAD_URL).contentType(MediaType.APPLICATION_JSON).content(""))
82 assertEquals(200, mvcResult.getResponse().getStatus());
85 configPreloadDataRepository.deleteAll();
86 mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_PRELOAD_URL).contentType(MediaType.APPLICATION_JSON).content(""))
88 assertEquals(404, mvcResult.getResponse().getStatus());
93 public void configGENERICRESOURCEAPIpreloadInformationPost() throws Exception {
95 configPreloadDataRepository.deleteAll();
97 String content = readFileContent("src/test/resources/preload1-net-model-info.json");
100 MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.post(CONFIG_PRELOAD_URL).contentType(MediaType.APPLICATION_JSON).content(content))
102 assertEquals(201, mvcResult.getResponse().getStatus());
103 assertEquals(1, configPreloadDataRepository.count());
105 // Test with existing data - should return 409
106 mvcResult = mvc.perform(MockMvcRequestBuilders.post(CONFIG_PRELOAD_URL).contentType(MediaType.APPLICATION_JSON).content(content))
108 assertEquals(409, mvcResult.getResponse().getStatus());
109 assertEquals(1, configPreloadDataRepository.count());
112 configPreloadDataRepository.deleteAll();
117 public void configGENERICRESOURCEAPIpreloadInformationPut() throws Exception {
119 configPreloadDataRepository.deleteAll();
121 String content = readFileContent("src/test/resources/preload1-net-model-info.json");
123 MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.put(CONFIG_PRELOAD_URL).contentType(MediaType.APPLICATION_JSON).content(content))
125 assertEquals(201, mvcResult.getResponse().getStatus());
126 assertEquals(1, configPreloadDataRepository.count());
130 public void configGENERICRESOURCEAPIpreloadInformationGENERICRESOURCEAPIpreloadListPost() throws Exception {
132 configPreloadDataRepository.deleteAll();
134 String content = readFileContent("src/test/resources/preload1-net-model-info.json");
136 MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.post(CONFIG_PRELOAD_LIST_URL).contentType(MediaType.APPLICATION_JSON).content(content))
138 assertEquals(404, mvcResult.getResponse().getStatus());
139 assertEquals(0, configPreloadDataRepository.count());
144 public void configGENERICRESOURCEAPIpreloadInformationGENERICRESOURCEAPIpreloadListPreloadIdPreloadTypeDelete() throws Exception {
146 configPreloadDataRepository.deleteAll();
149 loadData(CONFIG_PRELOAD_URL, "src/test/resources/preload1-net-model-info.json");
150 assert(configPreloadDataRepository.count() > 0);
152 MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.delete(CONFIG_PRELOAD_LIST_URL+"preload1/network/").contentType(MediaType.APPLICATION_JSON).content(""))
154 assertEquals(204, mvcResult.getResponse().getStatus());
155 assertEquals(0, configPreloadDataRepository.count());
158 mvcResult = mvc.perform(MockMvcRequestBuilders.delete(CONFIG_PRELOAD_LIST_URL+"preload1/network/").contentType(MediaType.APPLICATION_JSON).content(""))
160 assertEquals(204, mvcResult.getResponse().getStatus());
161 assertEquals(0, configPreloadDataRepository.count());
165 public void configGENERICRESOURCEAPIpreloadInformationGENERICRESOURCEAPIpreloadListPreloadIdPreloadTypeGet() throws Exception {
167 configPreloadDataRepository.deleteAll();
170 loadData(CONFIG_PRELOAD_URL, "src/test/resources/preload1-net-model-info.json");
171 assert(configPreloadDataRepository.count() > 0);
173 MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_PRELOAD_LIST_URL+"preload1/network/").contentType(MediaType.APPLICATION_JSON).content(""))
175 assertEquals(200, mvcResult.getResponse().getStatus());
178 configPreloadDataRepository.deleteAll();
179 mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_PRELOAD_LIST_URL+"preload1/network/").contentType(MediaType.APPLICATION_JSON).content(""))
181 assertEquals(404, mvcResult.getResponse().getStatus());
185 public void configGENERICRESOURCEAPIpreloadInformationGENERICRESOURCEAPIpreloadListPreloadIdPreloadTypePostNoData() throws Exception {
187 configPreloadDataRepository.deleteAll();
189 String content = readFileContent("src/test/resources/preload1-net-list-item.json");
192 MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.post(CONFIG_PRELOAD_LIST_URL+"preload1/network/").contentType(MediaType.APPLICATION_JSON).content(content))
194 assertEquals(201, mvcResult.getResponse().getStatus());
195 assertEquals(1, configPreloadDataRepository.count());
200 public void configGENERICRESOURCEAPIpreloadInformationGENERICRESOURCEAPIpreloadListPreloadIdPreloadTypePostExistingData() throws Exception {
202 configPreloadDataRepository.deleteAll();
204 loadData(CONFIG_PRELOAD_URL, "src/test/resources/preload1-net-model-info.json");
205 assert(configPreloadDataRepository.count() > 0);
207 String content = readFileContent("src/test/resources/preload1-net-list-item.json");
209 // Test with existing data - should return 409
210 MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.post(CONFIG_PRELOAD_LIST_URL+"preload1/network/").contentType(MediaType.APPLICATION_JSON).content(content))
212 assertEquals(409, mvcResult.getResponse().getStatus());
213 assertEquals(1, configPreloadDataRepository.count());
219 public void configGENERICRESOURCEAPIpreloadInformationGENERICRESOURCEAPIpreloadListPreloadIdPreloadTypePut() throws Exception {
221 configPreloadDataRepository.deleteAll();
223 String badContent = readFileContent("src/test/resources/preload1-net-model-info.json");
224 String goodContent = readFileContent("src/test/resources/preload1-net-list-item.json");
226 // Test with bad file content
227 MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.put(CONFIG_PRELOAD_LIST_URL+"preload1/network/").contentType(MediaType.APPLICATION_JSON).content(badContent))
229 assertEquals(400, mvcResult.getResponse().getStatus());
230 assertEquals(0, configPreloadDataRepository.count());
233 mvcResult = mvc.perform(MockMvcRequestBuilders.put(CONFIG_PRELOAD_LIST_URL+"preload1/network/").contentType(MediaType.APPLICATION_JSON).content(goodContent))
235 assertEquals(201, mvcResult.getResponse().getStatus());
236 assertEquals(1, configPreloadDataRepository.count());
238 // Test with existing data - should return 204
239 mvcResult = mvc.perform(MockMvcRequestBuilders.put(CONFIG_PRELOAD_LIST_URL+"preload1/network/").contentType(MediaType.APPLICATION_JSON).content(goodContent))
241 assertEquals(204, mvcResult.getResponse().getStatus());
242 assertEquals(1, configPreloadDataRepository.count());
248 public void configGENERICRESOURCEAPIpreloadInformationGENERICRESOURCEAPIpreloadListPreloadIdPreloadTypeGENERICRESOURCEAPIpreloadDataDelete() throws Exception {
250 configPreloadDataRepository.deleteAll();
253 loadData(CONFIG_PRELOAD_URL, "src/test/resources/preload1-net-model-info.json");
254 assert(configPreloadDataRepository.count() > 0);
255 MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.delete(CONFIG_PRELOAD_LIST_URL+"preload1/network/preload-data/").contentType(MediaType.APPLICATION_JSON).content(""))
257 assertEquals(204, mvcResult.getResponse().getStatus());
258 assertEquals(1, configPreloadDataRepository.count());
261 configPreloadDataRepository.deleteAll();
262 assertEquals(0, configPreloadDataRepository.count());
263 mvcResult = mvc.perform(MockMvcRequestBuilders.delete(CONFIG_PRELOAD_LIST_URL+"preload1/network/preload-data/").contentType(MediaType.APPLICATION_JSON).content(""))
265 assertEquals(404, mvcResult.getResponse().getStatus());
266 assertEquals(0, configPreloadDataRepository.count());
271 public void configGENERICRESOURCEAPIpreloadInformationGENERICRESOURCEAPIpreloadListPreloadIdPreloadTypeGENERICRESOURCEAPIpreloadDataGet() throws Exception {
273 configPreloadDataRepository.deleteAll();
276 loadData(CONFIG_PRELOAD_URL, "src/test/resources/preload1-net-model-info.json");
277 assert(configPreloadDataRepository.count() > 0);
279 MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_PRELOAD_LIST_URL+"preload1/network/preload-data/").contentType(MediaType.APPLICATION_JSON).content(""))
281 assertEquals(200, mvcResult.getResponse().getStatus());
284 configPreloadDataRepository.deleteAll();
285 mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_PRELOAD_LIST_URL+"preload1/network/preload-data").contentType(MediaType.APPLICATION_JSON).content(""))
287 assertEquals(404, mvcResult.getResponse().getStatus());
291 public void configGENERICRESOURCEAPIpreloadInformationGENERICRESOURCEAPIpreloadListPreloadIdPreloadTypeGENERICRESOURCEAPIpreloadDataPostNoData() throws Exception {
293 configPreloadDataRepository.deleteAll();
295 String goodContent = readFileContent("src/test/resources/preload1-net-preload-data.json");
299 MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.post(CONFIG_PRELOAD_LIST_URL+"preload1/network/preload-data/").contentType(MediaType.APPLICATION_JSON).content(goodContent))
301 assertEquals(404, mvcResult.getResponse().getStatus());
302 assertEquals(0, configPreloadDataRepository.count());
308 public void configGENERICRESOURCEAPIpreloadInformationGENERICRESOURCEAPIpreloadListPreloadIdPreloadTypeGENERICRESOURCEAPIpreloadDataPostBadContent() throws Exception {
310 configPreloadDataRepository.deleteAll();
312 String badContent = readFileContent("src/test/resources/preload1-net-model-info.json");
314 // Load single entry with no preloadData
315 ConfigPreloadData preloadData = new ConfigPreloadData();
316 preloadData.setPreloadId("preload1");
317 preloadData.setPreloadType("network");
318 preloadData.setPreloadData(null);
319 configPreloadDataRepository.save(preloadData);
321 // Test with bad file content
322 MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.post(CONFIG_PRELOAD_LIST_URL+"preload1/network/preload-data/").contentType(MediaType.APPLICATION_JSON).content(badContent))
324 assertEquals(400, mvcResult.getResponse().getStatus());
325 assertEquals(1, configPreloadDataRepository.count());
330 public void configGENERICRESOURCEAPIpreloadInformationGENERICRESOURCEAPIpreloadListPreloadIdPreloadTypeGENERICRESOURCEAPIpreloadDataPostGoodData() throws Exception {
332 configPreloadDataRepository.deleteAll();
334 String goodContent = readFileContent("src/test/resources/preload1-net-preload-data.json");
336 // Load single entry with no preloadData
337 ConfigPreloadData preloadData = new ConfigPreloadData();
338 preloadData.setPreloadId("preload1");
339 preloadData.setPreloadType("network");
340 preloadData.setPreloadData(null);
341 configPreloadDataRepository.save(preloadData);
344 // Test with no existing preload data
345 MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.post(CONFIG_PRELOAD_LIST_URL+"preload1/network/preload-data/").contentType(MediaType.APPLICATION_JSON).content(goodContent))
348 assertEquals(201, mvcResult.getResponse().getStatus());
349 assertEquals(1, configPreloadDataRepository.count());
353 public void configGENERICRESOURCEAPIpreloadInformationGENERICRESOURCEAPIpreloadListPreloadIdPreloadTypeGENERICRESOURCEAPIpreloadDataPostExistingRecord() throws Exception {
355 configPreloadDataRepository.deleteAll();
357 String goodContent = readFileContent("src/test/resources/preload1-net-preload-data.json");
361 loadData(CONFIG_PRELOAD_URL, "src/test/resources/preload1-net-model-info.json");
362 assert(configPreloadDataRepository.count() > 0);
365 // Test with existing preload dat
366 MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.post(CONFIG_PRELOAD_LIST_URL+"preload1/network/preload-data/").contentType(MediaType.APPLICATION_JSON).content(goodContent))
368 assertEquals(409, mvcResult.getResponse().getStatus());
369 assertEquals(1, configPreloadDataRepository.count());
374 public void configGENERICRESOURCEAPIpreloadInformationGENERICRESOURCEAPIpreloadListPreloadIdPreloadTypeGENERICRESOURCEAPIpreloadDataPutNoData() throws Exception {
376 configPreloadDataRepository.deleteAll();
378 String goodContent = readFileContent("src/test/resources/preload1-net-preload-data.json");
382 MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.put(CONFIG_PRELOAD_LIST_URL+"preload1/network/preload-data/").contentType(MediaType.APPLICATION_JSON).content(goodContent))
384 assertEquals(404, mvcResult.getResponse().getStatus());
385 assertEquals(0, configPreloadDataRepository.count());
389 public void configGENERICRESOURCEAPIpreloadInformationGENERICRESOURCEAPIpreloadListPreloadIdPreloadTypeGENERICRESOURCEAPIpreloadDataPutBadContent() throws Exception {
391 configPreloadDataRepository.deleteAll();
393 String badContent = readFileContent("src/test/resources/preload1-net-model-info.json");
395 // Load single entry with no preloadData
396 ConfigPreloadData preloadData = new ConfigPreloadData();
397 preloadData.setPreloadId("preload1");
398 preloadData.setPreloadType("network");
399 preloadData.setPreloadData(null);
400 configPreloadDataRepository.save(preloadData);
402 // Test with bad file content
403 MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.put(CONFIG_PRELOAD_LIST_URL+"preload1/network/preload-data/").contentType(MediaType.APPLICATION_JSON).content(badContent))
405 assertEquals(400, mvcResult.getResponse().getStatus());
406 assertEquals(1, configPreloadDataRepository.count());
411 public void configGENERICRESOURCEAPIpreloadInformationGENERICRESOURCEAPIpreloadListPreloadIdPreloadTypeGENERICRESOURCEAPIpreloadDataPutGoodData() throws Exception {
413 configPreloadDataRepository.deleteAll();
415 String goodContent = readFileContent("src/test/resources/preload1-net-preload-data.json");
417 // Load single entry with no preloadData
418 ConfigPreloadData preloadData = new ConfigPreloadData();
419 preloadData.setPreloadId("preload1");
420 preloadData.setPreloadType("network");
421 preloadData.setPreloadData(null);
422 configPreloadDataRepository.save(preloadData);
425 // Test with no existing preload data
426 MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.put(CONFIG_PRELOAD_LIST_URL+"preload1/network/preload-data/").contentType(MediaType.APPLICATION_JSON).content(goodContent))
429 assertEquals(201, mvcResult.getResponse().getStatus());
430 assertEquals(1, configPreloadDataRepository.count());
434 public void configGENERICRESOURCEAPIpreloadInformationGENERICRESOURCEAPIpreloadListPreloadIdPreloadTypeGENERICRESOURCEAPIpreloadDataPutExistingRecord() throws Exception {
436 configPreloadDataRepository.deleteAll();
438 String goodContent = readFileContent("src/test/resources/preload1-net-preload-data.json");
442 loadData(CONFIG_PRELOAD_URL, "src/test/resources/preload1-net-model-info.json");
443 assert(configPreloadDataRepository.count() > 0);
446 // Test with existing preload dat
447 MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.put(CONFIG_PRELOAD_LIST_URL+"preload1/network/preload-data/").contentType(MediaType.APPLICATION_JSON).content(goodContent))
449 assertEquals(204, mvcResult.getResponse().getStatus());
450 assertEquals(1, configPreloadDataRepository.count());
453 private String readFileContent(String path) throws IOException {
454 String content = new String(Files.readAllBytes(Paths.get(path)));
458 private void deleteData(String url) throws Exception {
459 mvc.perform(MockMvcRequestBuilders.delete(url).contentType(MediaType.APPLICATION_JSON).content(""))
463 private void loadData(String url, String path) throws Exception {
464 String content = readFileContent(path);
465 mvc.perform(MockMvcRequestBuilders.post(url).contentType(MediaType.APPLICATION_JSON).content(content))