2 * Copyright 2016-2017, Nokia Corporation
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * 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.
17 package com.nokia.vfcadaptor.vnfmdriver.controller;
20 import static org.mockito.Mockito.when;
21 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
22 import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
23 import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
25 import org.apache.http.HttpStatus;
26 import org.json.JSONObject;
27 import org.junit.Assert;
28 import org.junit.Before;
29 import org.junit.Test;
30 import org.mockito.InjectMocks;
31 import org.mockito.Mock;
32 import org.mockito.Mockito;
33 import org.mockito.MockitoAnnotations;
34 import org.springframework.http.MediaType;
35 import org.springframework.test.web.servlet.MockMvc;
36 import org.springframework.test.web.servlet.setup.MockMvcBuilders;
38 import com.nokia.vfcadaptor.exception.VnfmDriverException;
39 import com.nokia.vfcadaptor.vnfmdriver.bo.InstantiateVnfRequest;
40 import com.nokia.vfcadaptor.vnfmdriver.bo.InstantiateVnfResponse;
41 import com.nokia.vfcadaptor.vnfmdriver.bo.TerminateVnfRequest;
42 import com.nokia.vfcadaptor.vnfmdriver.bo.TerminateVnfResponse;
43 import com.nokia.vfcadaptor.vnfmdriver.inf.VnfmDriverMgmrInf;
45 //@RunWith(SpringJUnit4ClassRunner.class)
46 //@ContextConfiguration(locations={"file:src/main/webapp/WEB-INF/mvc-servlet.xml"})
47 //@WebAppConfiguration(value = "src/main/webapp")
48 public class VnfmDriverControllerTest {
51 private VnfmDriverMgmrInf vnfmDriverMgmr;
54 private VnfmDriverController controller;
56 private MockMvc mockMvc;
60 MockitoAnnotations.initMocks(this);
61 mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
65 public void testInstantiateVnf() throws Exception
67 InstantiateVnfResponse mockResponse = new InstantiateVnfResponse();
68 mockResponse.setJobId("job_001");
69 mockResponse.setVnfInstanceId("vnfInstanceId_001");
70 String jsonString = "{\"vnfInstanceName\":\"vnfInstanceName_001\",\"vnfPackageId\":\"1\"}";
71 when(vnfmDriverMgmr.instantiateVnf(Mockito.any(InstantiateVnfRequest.class), Mockito.anyString())).thenReturn(mockResponse);
73 String responseString = mockMvc.perform(
74 post("/nokiavnfm/v1/vnfmId_001/vnfs").
75 characterEncoding("UTF-8").
76 accept(MediaType.APPLICATION_JSON).
77 contentType(MediaType.APPLICATION_JSON).
80 .andExpect(status().isCreated())
81 .andReturn().getResponse().getContentAsString();
83 JSONObject jsonObj = new JSONObject(responseString);
84 Assert.assertEquals("jobId is ", mockResponse.getJobId(), jsonObj.get("jobId"));
85 Assert.assertEquals("vnfInstanceId is ", mockResponse.getVnfInstanceId(), jsonObj.get("vnfInstanceId"));
89 public void testTerminateVnfSuccess() throws Exception
91 TerminateVnfResponse mockResponse = new TerminateVnfResponse();
92 mockResponse.setJobId("job_002");
93 String jsonString = "{\"vnfInstanceId\":\"vnfInstanceId_001\"}";
94 when(vnfmDriverMgmr.terminateVnf(Mockito.any(TerminateVnfRequest.class), Mockito.anyString(), Mockito.anyString())).thenReturn(mockResponse);
96 String responseString = mockMvc.perform(
97 post("/nokiavnfm/v1/vnfmId_001/vnfs/vnfInstanceId_001/terminate").
98 characterEncoding("UTF-8").
99 accept(MediaType.APPLICATION_JSON).
100 contentType(MediaType.APPLICATION_JSON).
103 .andExpect(status().isCreated())
104 .andReturn().getResponse().getContentAsString();
106 JSONObject jsonObj = new JSONObject(responseString);
107 Assert.assertEquals("jobId is ", mockResponse.getJobId(), jsonObj.get("jobId"));
110 public void testTerminateVnfException() throws Exception
112 TerminateVnfResponse mockResponse = new TerminateVnfResponse();
113 mockResponse.setJobId("job_002");
114 String jsonString = "{\"vnfInstanceId\":\"vnfInstanceId_001\"}";
115 VnfmDriverException exception = new VnfmDriverException(HttpStatus.SC_BAD_REQUEST, "vnfInstanceId is wrong");
116 when(vnfmDriverMgmr.terminateVnf(Mockito.any(TerminateVnfRequest.class), Mockito.anyString(), Mockito.anyString())).thenThrow(exception);
118 String erroMsg = mockMvc.perform(
119 post("/nokiavnfm/v1/vnfmId_001/vnfs/vnfInstanceId_001/terminate").
120 characterEncoding("UTF-8").
121 accept(MediaType.APPLICATION_JSON).
122 contentType(MediaType.APPLICATION_JSON).
125 .andExpect(status().isBadRequest())
126 .andReturn().getResponse().getErrorMessage()
128 Assert.assertEquals("Error Message is ", exception.getMessage(), erroMsg);