This is my method inside my controller which is annotated by @Controller
@RequestMapping(value = "/getServerAlertFilters/{serverName}/", produces = "application/json; charset=utf-8") @ResponseBody public JSONObject getServerAlertFilters(@PathVariable String serverName) { JSONObject json = new JSONObject(); List<FilterVO> filteredAlerts = alertFilterService.getAlertFilters(serverName, ""); JSONArray jsonArray = new JSONArray(); jsonArray.addAll(filteredAlerts); json.put(SelfServiceConstants.DATA, jsonArray); return json; }
I am expecting {"data":[{"useRegEx":"false","hosts":"v2v2v2"}]}
as my json.
And this is my JUnit test:
@Test public final void testAlertFilterView() { try { MvcResult result = this.mockMvc.perform(get("/getServerAlertFilters/v2v2v2/").session(session) .accept("application/json")) .andDo(print()).andReturn(); String content = result.getResponse().getContentAsString(); LOG.info(content); } catch (Exception e) { e.printStackTrace(); } }
Here is the console output:
MockHttpServletResponse: Status = 406 Error message = null Headers = {} Content type = null Body = Forwarded URL = null Redirected URL = null Cookies = []
Even result.getResponse().getContentAsString()
is an empty string.
Can someone please suggest how to get my JSON in my JUnit test method so that I can complete my test case.