Author: cbrisson
Date: Tue Jan 3 10:12:52 2017
New Revision: 1777104
URL: http://svn.apache.org/viewvc?rev=1777104&view=rev
Log:
[tools] more testcases for JsonTool and XmlTool, plus some bugfixes
Added:
velocity/tools/trunk/velocity-tools-view/src/test/java/org/apache/velocity/tools/test/blackbox/JsonToolTests.java
velocity/tools/trunk/velocity-tools-view/src/test/java/org/apache/velocity/tools/test/blackbox/XmlToolTests.java
velocity/tools/trunk/velocity-tools-view/src/test/resources/inclasspath.json
velocity/tools/trunk/velocity-tools-view/src/test/resources/inclasspath.xml
velocity/tools/trunk/velocity-tools-view/src/test/resources/webapp_mocking/
velocity/tools/trunk/velocity-tools-view/src/test/resources/webapp_mocking/inwebapp.json
velocity/tools/trunk/velocity-tools-view/src/test/resources/webapp_mocking/inwebapp.xml
Modified:
velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/generic/ImportSupport.java
velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/generic/JsonTool.java
velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/generic/XmlTool.java
velocity/tools/trunk/velocity-tools-view/pom.xml
velocity/tools/trunk/velocity-tools-view/src/test/java/org/apache/velocity/tools/test/blackbox/RequestAdaptor.java
velocity/tools/trunk/velocity-tools-view/src/test/java/org/apache/velocity/tools/test/blackbox/ResponseAdaptor.java
velocity/tools/trunk/velocity-tools-view/src/test/java/org/apache/velocity/tools/test/blackbox/ServletContextAdaptor.java
Modified:
velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/generic/ImportSupport.java
URL:
http://svn.apache.org/viewvc/velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/generic/ImportSupport.java?rev=1777104&r1=1777103&r2=1777104&view=diff
==============================================================================
---
velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/generic/ImportSupport.java
(original)
+++
velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/generic/ImportSupport.java
Tue Jan 3 10:12:52 2017
@@ -91,6 +91,12 @@ public class ImportSupport extends SafeC
super.configure(values);
}
+ @Override
+ public void setSafeMode(boolean safe)
+ {
+ super.setSafeMode(safe);
+ }
+
/**
*
* @param url the URL resource to return as string
@@ -380,7 +386,7 @@ public class ImportSupport extends SafeC
*/
public static boolean isRemoteURL(String url)
{
- return getProtocol(url) == null;
+ return getProtocol(url) != null;
}
/**
Modified:
velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/generic/JsonTool.java
URL:
http://svn.apache.org/viewvc/velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/generic/JsonTool.java?rev=1777104&r1=1777103&r2=1777104&view=diff
==============================================================================
---
velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/generic/JsonTool.java
(original)
+++
velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/generic/JsonTool.java
Tue Jan 3 10:12:52 2017
@@ -122,7 +122,11 @@ public class JsonTool extends ImportSupp
String url = values.getString(ImportSupport.URL_KEY);
if (url != null)
{
+ /* temporary disable safe mode */
+ boolean safeMode = importSupport.isSafeMode();
+ importSupport.setSafeMode(false);
fetch(url);
+ importSupport.setSafeMode(safeMode);
}
}
}
@@ -209,7 +213,7 @@ public class JsonTool extends ImportSupp
* Parses the given JSON string and uses the resulting {@link Document}
* as the root {@link Node}.
*/
- public void parse(String xml) throws Exception
+ public void parse(String xml)
{
if (xml != null)
{
Modified:
velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/generic/XmlTool.java
URL:
http://svn.apache.org/viewvc/velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/generic/XmlTool.java?rev=1777104&r1=1777103&r2=1777104&view=diff
==============================================================================
---
velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/generic/XmlTool.java
(original)
+++
velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/generic/XmlTool.java
Tue Jan 3 10:12:52 2017
@@ -120,7 +120,11 @@ public class XmlTool extends SafeConfig
String url = values.getString(ImportSupport.URL_KEY);
if (url != null)
{
+ /* temporary disable safe mode */
+ boolean safeMode = importSupport.isSafeMode();
+ importSupport.setSafeMode(false);
fetch(url);
+ importSupport.setSafeMode(safeMode);
}
}
}
Modified: velocity/tools/trunk/velocity-tools-view/pom.xml
URL:
http://svn.apache.org/viewvc/velocity/tools/trunk/velocity-tools-view/pom.xml?rev=1777104&r1=1777103&r2=1777104&view=diff
==============================================================================
--- velocity/tools/trunk/velocity-tools-view/pom.xml (original)
+++ velocity/tools/trunk/velocity-tools-view/pom.xml Tue Jan 3 10:12:52 2017
@@ -82,5 +82,11 @@
<version>3.4</version>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-simple</artifactId>
+ <version>${slf4j.version}</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</project>
Added:
velocity/tools/trunk/velocity-tools-view/src/test/java/org/apache/velocity/tools/test/blackbox/JsonToolTests.java
URL:
http://svn.apache.org/viewvc/velocity/tools/trunk/velocity-tools-view/src/test/java/org/apache/velocity/tools/test/blackbox/JsonToolTests.java?rev=1777104&view=auto
==============================================================================
---
velocity/tools/trunk/velocity-tools-view/src/test/java/org/apache/velocity/tools/test/blackbox/JsonToolTests.java
(added)
+++
velocity/tools/trunk/velocity-tools-view/src/test/java/org/apache/velocity/tools/test/blackbox/JsonToolTests.java
Tue Jan 3 10:12:52 2017
@@ -0,0 +1,247 @@
+package org.apache.velocity.tools.test.blackbox;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.velocity.tools.view.JsonTool;
+import static org.junit.Assert.*;
+
+import org.apache.velocity.tools.view.ViewContext;
+import org.junit.Test;
+
+import javax.servlet.RequestDispatcher;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.StringReader;
+import java.lang.reflect.Proxy;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * <p>CookieTool tests.</p>
+ *
+ * @author Claude Brisson
+ * @version $Id$
+ */
+
+public class JsonToolTests
+{
+ private JsonTool newJsonTool()
+ {
+ return newJsonTool(new HashMap(), null, null);
+ }
+
+ private JsonTool newJsonTool(Map config)
+ {
+ return newJsonTool(config, null, null);
+ }
+
+ private JsonTool newJsonTool(Map config, Object requestProxy, Object
responseProxy)
+ {
+ if (config == null)
+ {
+ config = new HashMap();
+ }
+
+ if (requestProxy == null)
+ {
+ requestProxy =
+ Proxy.newProxyInstance(this.getClass().getClassLoader(),
+ new Class[]{HttpServletRequest.class},
+ new RequestAdaptor());
+ }
+
+ HttpServletRequest request = (HttpServletRequest)requestProxy;
+
+ if (responseProxy == null)
+ {
+ responseProxy =
+ Proxy.newProxyInstance(this.getClass().getClassLoader(),
+ new Class[]{HttpServletResponse.class},
+ new ResponseAdaptor());
+ }
+
+ HttpServletResponse response = (HttpServletResponse)responseProxy;
+
+ Object contextProxy
+ = Proxy.newProxyInstance(this.getClass().getClassLoader(),
+ new Class[]{ServletContext.class},
+ new ServletContextAdaptor()
+ {
+ @Override
+ protected URL getResource(String resource)
+ {
+ // redirect towards classpath resources
+ if (!resource.startsWith("/"))
+ {
+ resource = "/" + resource;
+ }
+ resource = "webapp_mocking" + resource;
+ return getClass().getClassLoader().getResource(resource);
+ }
+
+ @Override
+ protected InputStream getResourceAsStream(String resource)
+ {
+ // redirect towards classpath resources
+ if (!resource.startsWith("/"))
+ {
+ resource = "/" + resource;
+ }
+ resource = "webapp_mocking" + resource;
+ return
getClass().getClassLoader().getResourceAsStream(resource);
+ }
+
+ @Override
+ protected RequestDispatcher getRequestDispatcher(String url)
+ {
+ return new RequestDispatcher()
+ {
+ @Override
+ public void forward(ServletRequest request,
ServletResponse response) throws ServletException, IOException
+ {
+ throw new ServletException("not implemented");
+ }
+
+ @Override
+ public void include(ServletRequest request,
ServletResponse response) throws ServletException, IOException
+ {
+ response.setContentType("application/json");
+ response.getWriter().write("{ \"hey\" : \"bro\"
}");
+ }
+ };
+ }
+
+ });
+
+ ServletContext servletContext = (ServletContext)contextProxy;
+
+ JsonTool json = new JsonTool();
+ config.put(ViewContext.REQUEST, request);
+ config.put(ViewContext.RESPONSE, response);
+ config.put(ViewContext.SERVLET_CONTEXT_KEY, servletContext);
+ json.configure(config);
+ return json;
+ }
+
+ public @Test void testConfigReadWebappResource()
+ {
+ Map config = new HashMap();
+ config.put("resource", "/inwebapp.json");
+ JsonTool json = newJsonTool(config);
+ assertEquals(json.get("hey"), "there");
+ }
+
+ public @Test void testConfigReadClasspathResource()
+ {
+ Map config = new HashMap();
+ config.put("resource", "/inclasspath.json");
+ JsonTool json = newJsonTool(config);
+ assertEquals(json.get("hey"), "brother");
+ }
+
+ public @Test void testConfigFetchLocalSource()
+ {
+ Map config = new HashMap();
+ config.put("url", "/local-url.json");
+ JsonTool json = newJsonTool(config);
+ assertEquals(json.get("hey"), "bro");
+ }
+
+ public @Test void testConfigFetchRemoteSource()
+ {
+ Map config = new HashMap();
+ config.put("url",
"http://svn.apache.org/viewvc/velocity/tools/trunk/velocity-tools-generic/src/test/resources/foo.json?revision=1776916&view=co&pathrev=1776916");
+ JsonTool json = newJsonTool(config);
+ assertEquals(json.get("foo"), "bar");
+ }
+
+ public @Test void testRequestContent()
+ {
+ final String content = "{ \"hey\" : \"sister\" }";
+ Object requestProxy =
+ Proxy.newProxyInstance(this.getClass().getClassLoader(),
+ new Class[]{HttpServletRequest.class},
+ new RequestAdaptor()
+ {
+ @Override
+ protected int getContentLength()
+ {
+ return content.length();
+ }
+
+ @Override
+ protected String getContentType()
+ {
+ return "application/json";
+ }
+
+ @Override
+ protected BufferedReader getReader()
+ {
+ return new BufferedReader(new StringReader(content));
+ }
+ });
+ JsonTool json = newJsonTool(null, requestProxy, null);
+ assertEquals(json.get("hey"), "sister");
+ }
+
+ public @Test void testParseString()
+ {
+ JsonTool json = newJsonTool();
+ json.parse("{\"hey\": \"you\"}");
+ assertEquals(json.get("hey"), "you");
+ }
+
+ public @Test void testReadWebappResource()
+ {
+ JsonTool json = newJsonTool();
+ json.read("/inwebapp.json");
+ assertEquals(json.get("hey"), "there");
+ }
+
+ public @Test void testReadClasspathResource()
+ {
+ JsonTool json = newJsonTool();
+ json.read("/inclasspath.json");
+ assertEquals(json.get("hey"), "brother");
+ }
+
+ public @Test void testFetchLocalSource()
+ {
+ JsonTool json = newJsonTool();
+ json.fetch("/local-url.json");
+ assertEquals(json.get("hey"), "bro");
+ }
+
+ public @Test void testFetchRemoteSource()
+ {
+ JsonTool json = newJsonTool();
+
json.fetch("http://svn.apache.org/viewvc/velocity/tools/trunk/velocity-tools-generic/src/test/resources/foo.json?revision=1776916&view=co&pathrev=1776916");
+ assertNull(json.get("foo")); // CB TODO - also check there is a
warning about safe mode in the logs
+ }
+}
Modified:
velocity/tools/trunk/velocity-tools-view/src/test/java/org/apache/velocity/tools/test/blackbox/RequestAdaptor.java
URL:
http://svn.apache.org/viewvc/velocity/tools/trunk/velocity-tools-view/src/test/java/org/apache/velocity/tools/test/blackbox/RequestAdaptor.java?rev=1777104&r1=1777103&r2=1777104&view=diff
==============================================================================
---
velocity/tools/trunk/velocity-tools-view/src/test/java/org/apache/velocity/tools/test/blackbox/RequestAdaptor.java
(original)
+++
velocity/tools/trunk/velocity-tools-view/src/test/java/org/apache/velocity/tools/test/blackbox/RequestAdaptor.java
Tue Jan 3 10:12:52 2017
@@ -21,6 +21,7 @@ package org.apache.velocity.tools.test.b
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
+import java.io.BufferedReader;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.util.Collections;
@@ -51,6 +52,11 @@ public class RequestAdaptor implements I
private String _contextPath;
private String _pathInfo;
+ public RequestAdaptor()
+ {
+ this(null, null, null);
+ }
+
public RequestAdaptor(Map cookies)
{
this(null, null, cookies);
@@ -214,10 +220,41 @@ public class RequestAdaptor implements I
}
return jar;
}
+ else if ("getContentLength".equals(methodName))
+ {
+ return getContentLength();
+ }
+ else if ("getContentType".equals(methodName))
+ {
+ return getContentType();
+ }
+ else if ("getReader".equals(methodName))
+ {
+ return getReader();
+ }
+ else if ("toString".equals(methodName))
+ {
+ return toString();
+ }
else
{
throw new IllegalStateException("Unexpected method call: "
+ method);
}
}
+
+ protected int getContentLength()
+ {
+ return -1;
+ }
+
+ protected String getContentType()
+ {
+ return null;
+ }
+
+ protected BufferedReader getReader()
+ {
+ return null;
+ }
}
Modified:
velocity/tools/trunk/velocity-tools-view/src/test/java/org/apache/velocity/tools/test/blackbox/ResponseAdaptor.java
URL:
http://svn.apache.org/viewvc/velocity/tools/trunk/velocity-tools-view/src/test/java/org/apache/velocity/tools/test/blackbox/ResponseAdaptor.java?rev=1777104&r1=1777103&r2=1777104&view=diff
==============================================================================
---
velocity/tools/trunk/velocity-tools-view/src/test/java/org/apache/velocity/tools/test/blackbox/ResponseAdaptor.java
(original)
+++
velocity/tools/trunk/velocity-tools-view/src/test/java/org/apache/velocity/tools/test/blackbox/ResponseAdaptor.java
Tue Jan 3 10:12:52 2017
@@ -37,6 +37,11 @@ public class ResponseAdaptor implements
// the params now also serve as a cookie jar for CookieToolTests
private Map _params;
+ public ResponseAdaptor()
+ {
+ this(null);
+ }
+
public ResponseAdaptor(Map params)
{
_params = params;
@@ -93,6 +98,10 @@ public class ResponseAdaptor implements
{
return "UTF-8";
}
+ else if ("toString".equals(methodName))
+ {
+ return toString();
+ }
else
{
throw new IllegalStateException("Unexpected method call: "
Modified:
velocity/tools/trunk/velocity-tools-view/src/test/java/org/apache/velocity/tools/test/blackbox/ServletContextAdaptor.java
URL:
http://svn.apache.org/viewvc/velocity/tools/trunk/velocity-tools-view/src/test/java/org/apache/velocity/tools/test/blackbox/ServletContextAdaptor.java?rev=1777104&r1=1777103&r2=1777104&view=diff
==============================================================================
---
velocity/tools/trunk/velocity-tools-view/src/test/java/org/apache/velocity/tools/test/blackbox/ServletContextAdaptor.java
(original)
+++
velocity/tools/trunk/velocity-tools-view/src/test/java/org/apache/velocity/tools/test/blackbox/ServletContextAdaptor.java
Tue Jan 3 10:12:52 2017
@@ -19,9 +19,12 @@ package org.apache.velocity.tools.test.b
* under the License.
*/
+import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
+import java.io.InputStream;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
+import java.net.URL;
/**
* <p>Helper class for LinkToolTests class</p>
@@ -33,6 +36,11 @@ public class ServletContextAdaptor imple
{
private String _contextPath;
+ public ServletContextAdaptor()
+ {
+ this(null);
+ }
+
public ServletContextAdaptor(String contextPath)
{
_contextPath = contextPath;
@@ -68,6 +76,22 @@ public class ServletContextAdaptor imple
{
return _contextPath;
}
+ else if ("getResource".equals(methodName))
+ {
+ return getResource((String)args[0]);
+ }
+ else if ("getResourceAsStream".equals(methodName))
+ {
+ return getResourceAsStream((String)args[0]);
+ }
+ else if ("getRequestDispatcher".equals(methodName))
+ {
+ return getRequestDispatcher((String)args[0]);
+ }
+ else if ("toString".equals(methodName))
+ {
+ return toString();
+ }
else
{
throw new IllegalStateException("Unexpected method call: "
@@ -75,4 +99,18 @@ public class ServletContextAdaptor imple
}
}
+ protected URL getResource(String path)
+ {
+ return null;
+ }
+
+ protected InputStream getResourceAsStream(String path)
+ {
+ return null;
+ }
+
+ protected RequestDispatcher getRequestDispatcher(String url)
+ {
+ return null;
+ }
}
Added:
velocity/tools/trunk/velocity-tools-view/src/test/java/org/apache/velocity/tools/test/blackbox/XmlToolTests.java
URL:
http://svn.apache.org/viewvc/velocity/tools/trunk/velocity-tools-view/src/test/java/org/apache/velocity/tools/test/blackbox/XmlToolTests.java?rev=1777104&view=auto
==============================================================================
---
velocity/tools/trunk/velocity-tools-view/src/test/java/org/apache/velocity/tools/test/blackbox/XmlToolTests.java
(added)
+++
velocity/tools/trunk/velocity-tools-view/src/test/java/org/apache/velocity/tools/test/blackbox/XmlToolTests.java
Tue Jan 3 10:12:52 2017
@@ -0,0 +1,248 @@
+package org.apache.velocity.tools.test.blackbox;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.velocity.tools.view.ViewContext;
+import org.apache.velocity.tools.view.XmlTool;
+import org.junit.Test;
+
+import javax.servlet.RequestDispatcher;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.StringReader;
+import java.lang.reflect.Proxy;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
+/**
+ * <p>CookieTool tests.</p>
+ *
+ * @author Claude Brisson
+ * @version $Id$
+ */
+
+public class XmlToolTests
+{
+ private XmlTool newXmlTool()
+ {
+ return newXmlTool(new HashMap(), null, null);
+ }
+
+ private XmlTool newXmlTool(Map config)
+ {
+ return newXmlTool(config, null, null);
+ }
+
+ private XmlTool newXmlTool(Map config, Object requestProxy, Object
responseProxy)
+ {
+ if (config == null)
+ {
+ config = new HashMap();
+ }
+
+ if (requestProxy == null)
+ {
+ requestProxy =
+ Proxy.newProxyInstance(this.getClass().getClassLoader(),
+ new Class[]{HttpServletRequest.class},
+ new RequestAdaptor());
+ }
+
+ HttpServletRequest request = (HttpServletRequest)requestProxy;
+
+ if (responseProxy == null)
+ {
+ responseProxy =
+ Proxy.newProxyInstance(this.getClass().getClassLoader(),
+ new Class[]{HttpServletResponse.class},
+ new ResponseAdaptor());
+ }
+
+ HttpServletResponse response = (HttpServletResponse)responseProxy;
+
+ Object contextProxy
+ = Proxy.newProxyInstance(this.getClass().getClassLoader(),
+ new Class[]{ServletContext.class},
+ new ServletContextAdaptor()
+ {
+ @Override
+ protected URL getResource(String resource)
+ {
+ // redirect towards classpath resources
+ if (!resource.startsWith("/"))
+ {
+ resource = "/" + resource;
+ }
+ resource = "webapp_mocking" + resource;
+ return getClass().getClassLoader().getResource(resource);
+ }
+
+ @Override
+ protected InputStream getResourceAsStream(String resource)
+ {
+ // redirect towards classpath resources
+ if (!resource.startsWith("/"))
+ {
+ resource = "/" + resource;
+ }
+ resource = "webapp_mocking" + resource;
+ return
getClass().getClassLoader().getResourceAsStream(resource);
+ }
+
+ @Override
+ protected RequestDispatcher getRequestDispatcher(String url)
+ {
+ return new RequestDispatcher()
+ {
+ @Override
+ public void forward(ServletRequest request,
ServletResponse response) throws ServletException, IOException
+ {
+ throw new ServletException("not implemented");
+ }
+
+ @Override
+ public void include(ServletRequest request,
ServletResponse response) throws ServletException, IOException
+ {
+ response.setContentType("application/xml");
+ response.getWriter().write("<hey>bro</hey>");
+ }
+ };
+ }
+
+ });
+
+ ServletContext servletContext = (ServletContext)contextProxy;
+
+ XmlTool xml = new XmlTool();
+ config.put(ViewContext.REQUEST, request);
+ config.put(ViewContext.RESPONSE, response);
+ config.put(ViewContext.SERVLET_CONTEXT_KEY, servletContext);
+ xml.configure(config);
+ return xml;
+ }
+
+ public @Test void testConfigReadWebappResource()
+ {
+ Map config = new HashMap();
+ config.put("resource", "/inwebapp.xml");
+ XmlTool xml = newXmlTool(config);
+ assertEquals("there", xml.getText());
+ }
+
+ public @Test void testConfigReadClasspathResource()
+ {
+ Map config = new HashMap();
+ config.put("resource", "/inclasspath.xml");
+ XmlTool xml = newXmlTool(config);
+ assertEquals("brother", xml.getText());
+ }
+
+ public @Test void testConfigFetchLocalSource()
+ {
+ Map config = new HashMap();
+ config.put("url", "/local-url.json");
+ XmlTool xml = newXmlTool(config);
+ assertEquals("bro", xml.getText());
+ }
+
+ public @Test void testConfigFetchRemoteSource()
+ {
+ Map config = new HashMap();
+ config.put("url",
"http://svn.apache.org/viewvc/velocity/tools/trunk/velocity-tools-generic/src/test/resources/file.xml?revision=1776916&view=co&pathrev=1776916");
+ XmlTool xml = newXmlTool(config);
+ assertEquals("woogie\n wiggie", xml.getText());
+ }
+
+ public @Test void testRequestContent()
+ {
+ final String content = "<?xml version=\"1.0\"?><hey>sister</hey>";
+ Object requestProxy =
+ Proxy.newProxyInstance(this.getClass().getClassLoader(),
+ new Class[]{HttpServletRequest.class},
+ new RequestAdaptor()
+ {
+ @Override
+ protected int getContentLength()
+ {
+ return content.length();
+ }
+
+ @Override
+ protected String getContentType()
+ {
+ return "application/xml";
+ }
+
+ @Override
+ protected BufferedReader getReader()
+ {
+ return new BufferedReader(new StringReader(content));
+ }
+ });
+ XmlTool xml = newXmlTool(null, requestProxy, null);
+ assertEquals("sister", xml.getText());
+ }
+
+ public @Test void testParseString()
+ {
+ XmlTool xml = newXmlTool();
+ xml.parse("<?xml version=\"1.0\"?><hey>you</hey>");
+ assertEquals("you", xml.getText());
+ }
+
+ public @Test void testReadWebappResource()
+ {
+ XmlTool xml = newXmlTool();
+ xml.read("/inwebapp.xml");
+ assertEquals("there", xml.getText());
+ }
+
+ public @Test void testReadClasspathResource()
+ {
+ XmlTool xml = newXmlTool();
+ xml.read("/inclasspath.xml");
+ assertEquals("brother", xml.getText());
+ }
+
+ public @Test void testFetchLocalSource()
+ {
+ XmlTool xml = newXmlTool();
+ xml.fetch("/local-url.json");
+ assertEquals("bro", xml.getText());
+ }
+
+ public @Test void testFetchRemoteSource()
+ {
+ XmlTool xml = newXmlTool();
+
xml.fetch("http://svn.apache.org/viewvc/velocity/tools/trunk/velocity-tools-generic/src/test/resources/file.xml?revision=1776916&view=co&pathrev=1776916");
+ assertNull(xml.getText()); // CB TODO - also check there is a warning
about safe mode in the logs
+ }
+}
Added:
velocity/tools/trunk/velocity-tools-view/src/test/resources/inclasspath.json
URL:
http://svn.apache.org/viewvc/velocity/tools/trunk/velocity-tools-view/src/test/resources/inclasspath.json?rev=1777104&view=auto
==============================================================================
---
velocity/tools/trunk/velocity-tools-view/src/test/resources/inclasspath.json
(added)
+++
velocity/tools/trunk/velocity-tools-view/src/test/resources/inclasspath.json
Tue Jan 3 10:12:52 2017
@@ -0,0 +1 @@
+{"hey" : "brother" }
Added:
velocity/tools/trunk/velocity-tools-view/src/test/resources/inclasspath.xml
URL:
http://svn.apache.org/viewvc/velocity/tools/trunk/velocity-tools-view/src/test/resources/inclasspath.xml?rev=1777104&view=auto
==============================================================================
--- velocity/tools/trunk/velocity-tools-view/src/test/resources/inclasspath.xml
(added)
+++ velocity/tools/trunk/velocity-tools-view/src/test/resources/inclasspath.xml
Tue Jan 3 10:12:52 2017
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<hey>brother</hey>
+
Added:
velocity/tools/trunk/velocity-tools-view/src/test/resources/webapp_mocking/inwebapp.json
URL:
http://svn.apache.org/viewvc/velocity/tools/trunk/velocity-tools-view/src/test/resources/webapp_mocking/inwebapp.json?rev=1777104&view=auto
==============================================================================
---
velocity/tools/trunk/velocity-tools-view/src/test/resources/webapp_mocking/inwebapp.json
(added)
+++
velocity/tools/trunk/velocity-tools-view/src/test/resources/webapp_mocking/inwebapp.json
Tue Jan 3 10:12:52 2017
@@ -0,0 +1 @@
+{"hey" : "there" }
Added:
velocity/tools/trunk/velocity-tools-view/src/test/resources/webapp_mocking/inwebapp.xml
URL:
http://svn.apache.org/viewvc/velocity/tools/trunk/velocity-tools-view/src/test/resources/webapp_mocking/inwebapp.xml?rev=1777104&view=auto
==============================================================================
---
velocity/tools/trunk/velocity-tools-view/src/test/resources/webapp_mocking/inwebapp.xml
(added)
+++
velocity/tools/trunk/velocity-tools-view/src/test/resources/webapp_mocking/inwebapp.xml
Tue Jan 3 10:12:52 2017
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<hey>there</hey>
+