@Before public void setUp() throws Exception { servlet = new RpcServlet(); handler = createMock(JsonRpcHandler.class); servlet.setJsonRpcHandler(handler); servlet.setJSONPAllowed(true); }
@Inject public void setJsonRpcHandler(JsonRpcHandler jsonHandler) { checkInitialized(); this.jsonHandler = jsonHandler; }
@Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { try{ InputStreamReader is = new InputStreamReader(request.getInputStream(), getRequestCharacterEncoding(request)); String body = IOUtils.toString(is); Result result = process(request, response, body); response.getWriter().write(result.getOutput()); } catch (UnsupportedEncodingException e) { response.setStatus(HttpServletResponse.SC_BAD_REQUEST); LOG.log(Level.INFO, e.getMessage(), e); response.getWriter().write("Unsupported input character set"); } }
@Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { String reqValue; String callbackValue; try { HttpUtil.isJSONP(request); reqValue = validateParameterValue(request, GET_REQUEST_REQ_PARAM); callbackValue = validateParameterValue(request, GET_REQUEST_CALLBACK_PARAM); } catch (IllegalArgumentException e) { response.setStatus(HttpServletResponse.SC_BAD_REQUEST); LOG.log(Level.INFO, e.getMessage(), e); return; } Result result = process(request, response, reqValue); response.getWriter().write(result.isSuccess() ? callbackValue + '(' + result.getOutput() + ')' : result.getOutput()); }
@Test public void testDoGetNormal() throws Exception { HttpServletRequest request = createGetRequest("{\"gadgets\":[]}", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz._"); HttpServletResponse response = createHttpResponse("Content-Disposition", "attachment;filename=rpc.txt", "application/json; charset=utf-8", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz._({\"GADGETS\":[]})", HttpServletResponse.SC_OK); JSONObject handlerResponse = new JSONObject("{\"GADGETS\":[]}"); expect(handler.process(isA(JSONObject.class))).andReturn(handlerResponse); replay(handler); servlet.doGet(request, response); verify(response); }
@Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { String reqValue; String callbackValue; try { if (this.isJSONPAllowed) { HttpUtil.isJSONP(request); callbackValue = validateParameterValue(request, GET_REQUEST_CALLBACK_PARAM); } else { callbackValue = validateParameterValueNull(request, GET_REQUEST_CALLBACK_PARAM); } reqValue = validateParameterValue(request, GET_REQUEST_REQ_PARAM); } catch (IllegalArgumentException e) { response.setStatus(HttpServletResponse.SC_BAD_REQUEST); LOG.log(Level.INFO, e.getMessage(), e); return; } Result result = process(request, response, reqValue); if (result.isSuccess()) { if (callbackValue != null) { response.getWriter().write(callbackValue + '(' + result.getOutput() + ')'); } else { response.getWriter().write(result.getOutput()); } } else { response.getWriter().write(result.getOutput()); } }
@Before public void setUp() throws Exception { servlet = new RpcServlet(); handler = createMock(JsonRpcHandler.class); servlet.setJsonRpcHandler(handler); }
@Test public void testDisallowJSONP() throws Exception { servlet.setJSONPAllowed(false); HttpServletRequest request = createGetRequest("{\"gadgets\":[]}",null); HttpServletResponse response = createHttpResponse("Content-Disposition", "attachment;filename=rpc.txt", "application/json; charset=utf-8", "{\"GADGETS\":[]}", HttpServletResponse.SC_OK); JSONObject handlerResponse = new JSONObject("{\"GADGETS\":[]}"); expect(handler.process(isA(JSONObject.class))).andReturn(handlerResponse); replay(handler); servlet.doGet(request, response); verify(response); servlet.setJSONPAllowed(true); }
@Test public void testDoGetWithMissingReqParam() throws Exception { HttpServletRequest request = createGetRequest(null, "function"); HttpServletResponse response = createHttpResponse(null, HttpServletResponse.SC_BAD_REQUEST); servlet.doGet(request, response); verify(response); }
@Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { String reqValue; String callbackValue; try { HttpUtil.isJSONP(request); reqValue = validateParameterValue(request, GET_REQUEST_REQ_PARAM); callbackValue = validateParameterValue(request, GET_REQUEST_CALLBACK_PARAM); } catch (IllegalArgumentException e) { response.setStatus(HttpServletResponse.SC_BAD_REQUEST); LOG.log(Level.INFO, e.getMessage(), e); return; } Result result = process(request, response, reqValue); response.getWriter().write(result.isSuccess() ? callbackValue + '(' + result.getOutput() + ')' : result.getOutput()); }
@Test public void testDisallowJSONP() throws Exception { servlet.setJSONPAllowed(false); HttpServletRequest request = createGetRequest("{\"gadgets\":[]}",null); HttpServletResponse response = createHttpResponse("Content-Disposition", "attachment;filename=rpc.txt", "application/json; charset=utf-8", "{\"GADGETS\":[]}", HttpServletResponse.SC_OK); JSONObject handlerResponse = new JSONObject("{\"GADGETS\":[]}"); expect(handler.process(isA(JSONObject.class))).andReturn(handlerResponse); replay(handler); servlet.doGet(request, response); verify(response); servlet.setJSONPAllowed(true); }
@Test public void testDoGetWithBadCallbackParamValue() throws Exception { HttpServletRequest request = createGetRequest("{\"gadgets\":[]}", "/'!="); HttpServletResponse response = createHttpResponse(null, HttpServletResponse.SC_BAD_REQUEST); servlet.doGet(request, response); verify(response); }
@Before public void setUp() throws Exception { servlet = new RpcServlet(); handler = createMock(JsonRpcHandler.class); servlet.setJsonRpcHandler(handler); servlet.setJSONPAllowed(true); }
@Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { try{ InputStreamReader is = new InputStreamReader(request.getInputStream(), getRequestCharacterEncoding(request)); String body = IOUtils.toString(is); Result result = process(request, response, body); response.getWriter().write(result.getOutput()); } catch (UnsupportedEncodingException e) { response.setStatus(HttpServletResponse.SC_BAD_REQUEST); LOG.log(Level.INFO, e.getMessage(), e); response.getWriter().write("Unsupported input character set"); } }
@Inject public void setJsonRpcHandler(JsonRpcHandler jsonHandler) { checkInitialized(); this.jsonHandler = jsonHandler; }
@Test public void testDoGetWithMissingCallbackParam() throws Exception { HttpServletRequest request = createGetRequest("{\"gadgets\":[]}", null); HttpServletResponse response = createHttpResponse(null, HttpServletResponse.SC_BAD_REQUEST); servlet.doGet(request, response); verify(response); }
@Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { try{ InputStreamReader is = new InputStreamReader(request.getInputStream(), getRequestCharacterEncoding(request)); String body = IOUtils.toString(is); Result result = process(request, response, body); response.getWriter().write(result.getOutput()); } catch (UnsupportedEncodingException e) { response.setStatus(HttpServletResponse.SC_BAD_REQUEST); LOG.log(Level.INFO, e.getMessage(), e); response.getWriter().write("Unsupported input character set"); } }
@Inject public void setJsonRpcHandler(JsonRpcHandler jsonHandler) { checkInitialized(); this.jsonHandler = jsonHandler; }
@Test public void testDoGetWithMissingCallbackParam() throws Exception { HttpServletRequest request = createGetRequest("{\"gadgets\":[]}", null); HttpServletResponse response = createHttpResponse(null, HttpServletResponse.SC_BAD_REQUEST); servlet.doGet(request, response); verify(response); }
@Test public void testDoGetWithBadCallbackParamValue() throws Exception { HttpServletRequest request = createGetRequest("{\"gadgets\":[]}", "/'!="); HttpServletResponse response = createHttpResponse(null, HttpServletResponse.SC_BAD_REQUEST); servlet.doGet(request, response); verify(response); }