You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by je...@apache.org on 2018/05/14 16:48:27 UTC
[sling-org-apache-sling-servlets-get] 01/02: SLING-7656
improvements to unit tests
This is an automated email from the ASF dual-hosted git repository.
jeb pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-servlets-get.git
commit fa6da778a3cc9075c79d6a4c60480c6d879fbdf3
Author: JE Bailey <je...@apache.org>
AuthorDate: Mon May 7 08:51:01 2018 -0400
SLING-7656 improvements to unit tests
---
pom.xml | 23 ++--
.../sling/servlets/get/impl/DefaultGetServlet.java | 8 +-
.../servlets/get/impl/VersionInfoServlet.java | 22 +++-
.../servlets/get/impl/helpers/JsonRenderer.java | 7 +-
.../servlets/get/impl/util/JsonObjectCreator.java | 42 ++++---
.../servlets/get/impl/util/ResourceTraversor.java | 7 +-
.../servlets/get/impl/JsonRendererServletTest.java | 2 +-
...dererServletTest.java => HtmlRendererTest.java} | 6 +-
.../get/impl/helpers/JsonRendererServletTest.java | 112 -----------------
.../get/impl/helpers/JsonRendererTest.java | 136 +++++++++++++++++++++
...rerServletTest.java => StreamRendererTest.java} | 3 +-
src/test/resources/data.json | 19 +++
12 files changed, 240 insertions(+), 147 deletions(-)
diff --git a/pom.xml b/pom.xml
index bc8133d..b49ff5b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -97,12 +97,6 @@
<scope>provided</scope>
</dependency>
<dependency>
- <groupId>org.apache.geronimo.specs</groupId>
- <artifactId>geronimo-json_1.0_spec</artifactId>
- <version>1.0-alpha-1</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
<groupId>org.apache.jackrabbit</groupId>
<artifactId>jackrabbit-jcr-commons</artifactId>
<version>2.2.9</version>
@@ -149,7 +143,22 @@
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.commons.johnzon</artifactId>
<version>1.0.0</version>
- <scope>test</scope>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.testing.sling-mock</artifactId>
+ <version>2.2.10</version>
+ <scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>
+ org.apache.sling.servlet-helpers
+ </artifactId>
+ <version>1.1.5-SNAPSHOT</version>
+ <type>bundle</type>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</project>
diff --git a/src/main/java/org/apache/sling/servlets/get/impl/DefaultGetServlet.java b/src/main/java/org/apache/sling/servlets/get/impl/DefaultGetServlet.java
index 05d6015..50df111 100644
--- a/src/main/java/org/apache/sling/servlets/get/impl/DefaultGetServlet.java
+++ b/src/main/java/org/apache/sling/servlets/get/impl/DefaultGetServlet.java
@@ -128,6 +128,9 @@ public class DefaultGetServlet extends SlingSafeMethodsServlet {
"this basically means the number of Objects to return. Default value is " +
"200.")
int json_maximumresults() default 200;
+
+ @AttributeDefinition(name = "ECMA date Support", description="Enable deprecated ECMA formatting for JSON response")
+ boolean ecmaSuport() default false;
}
private final Logger logger = LoggerFactory.getLogger(getClass());
@@ -155,6 +158,8 @@ public class DefaultGetServlet extends SlingSafeMethodsServlet {
@Reference(policyOption = ReferencePolicyOption.GREEDY)
private XSSAPI xssApi;
+
+ private boolean enableEcmaSupport;
public static final String EXT_HTML = "html";
@@ -180,6 +185,7 @@ public class DefaultGetServlet extends SlingSafeMethodsServlet {
this.enableJson = cfg.enable_json();
this.enableXml = cfg.enable_xml();
this.jsonMaximumResults = cfg.json_maximumresults();
+ this.enableEcmaSupport = cfg.ecmaSuport();
}
@Deactivate
@@ -198,7 +204,7 @@ public class DefaultGetServlet extends SlingSafeMethodsServlet {
} else if ( EXT_TXT.equals(type) ) {
renderer = new PlainTextRenderer();
} else if (EXT_JSON.equals(type) ) {
- renderer = new JsonRenderer(jsonMaximumResults);
+ renderer = new JsonRenderer(jsonMaximumResults, enableEcmaSupport);
} else if ( EXT_XML.equals(type) ) {
renderer = new XMLRenderer();
}
diff --git a/src/main/java/org/apache/sling/servlets/get/impl/VersionInfoServlet.java b/src/main/java/org/apache/sling/servlets/get/impl/VersionInfoServlet.java
index 31b786c..35b9fae 100644
--- a/src/main/java/org/apache/sling/servlets/get/impl/VersionInfoServlet.java
+++ b/src/main/java/org/apache/sling/servlets/get/impl/VersionInfoServlet.java
@@ -21,6 +21,7 @@ package org.apache.sling.servlets.get.impl;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Calendar;
import java.util.Collection;
import java.util.List;
@@ -39,12 +40,14 @@ import javax.servlet.Servlet;
import javax.servlet.ServletException;
import org.apache.jackrabbit.JcrConstants;
+import org.apache.jackrabbit.util.ISO8601;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.servlets.SlingSafeMethodsServlet;
import org.apache.sling.servlets.get.impl.util.JsonObjectCreator;
import org.apache.sling.servlets.get.impl.util.JsonToText;
+import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.ConfigurationPolicy;
import org.osgi.service.metatype.annotations.AttributeDefinition;
@@ -77,8 +80,14 @@ public class VersionInfoServlet extends SlingSafeMethodsServlet {
@AttributeDefinition(name = "Selector", description="List of selectors this servlet handles to display the versions")
String[] sling_servlet_selectors() default "V";
+
+ @AttributeDefinition(name = "ECMA date Support", description="Enable deprecated ECMA formatting for JSON response")
+ boolean ecmaSuport() default false;
}
+
private static final long serialVersionUID = 1656887064561951302L;
+
+ private boolean ecmaSupport;
/** Selector that means "pretty-print the output */
public static final String TIDY = "tidy";
@@ -93,6 +102,11 @@ public class VersionInfoServlet extends SlingSafeMethodsServlet {
public static final int INDENT_SPACES = 2;
private final JsonToText renderer = new JsonToText();
+
+ @Activate
+ private void activate(Config config) {
+ this.ecmaSupport = config.ecmaSuport();
+ }
@Override
public void doGet(SlingHttpServletRequest req, SlingHttpServletResponse resp) throws ServletException,
@@ -176,8 +190,12 @@ public class VersionInfoServlet extends SlingSafeMethodsServlet {
return false;
}
- private static String createdDate(Node node) throws RepositoryException {
- return JsonObjectCreator.format(node.getProperty(JcrConstants.JCR_CREATED).getDate());
+ private String createdDate(Node node) throws RepositoryException {
+ Calendar cal = node.getProperty(JcrConstants.JCR_CREATED).getDate();
+ if (ecmaSupport) {
+ return JsonObjectCreator.formatEcma(cal);
+ }
+ return ISO8601.format(cal);
}
}
diff --git a/src/main/java/org/apache/sling/servlets/get/impl/helpers/JsonRenderer.java b/src/main/java/org/apache/sling/servlets/get/impl/helpers/JsonRenderer.java
index f8fbbed..dbfbcf2 100644
--- a/src/main/java/org/apache/sling/servlets/get/impl/helpers/JsonRenderer.java
+++ b/src/main/java/org/apache/sling/servlets/get/impl/helpers/JsonRenderer.java
@@ -61,8 +61,11 @@ public class JsonRenderer implements Renderer {
private final JsonToText renderer = new JsonToText();
- public JsonRenderer(long maximumResults) {
+ private boolean ecmaSupport;
+
+ public JsonRenderer(long maximumResults, boolean ecmaSupport) {
this.maximumResults = maximumResults;
+ this.ecmaSupport = ecmaSupport;
}
public void render(SlingHttpServletRequest req,
@@ -91,7 +94,7 @@ public class JsonRenderer implements Renderer {
final boolean harray = hasSelector(req, HARRAY);
ResourceTraversor traversor = null;
try {
- traversor = new ResourceTraversor(maxRecursionLevels, maximumResults, r);
+ traversor = new ResourceTraversor(maxRecursionLevels, maximumResults, r, ecmaSupport);
allowedLevel = traversor.collectResources();
if ( allowedLevel != -1 ) {
allowDump = false;
diff --git a/src/main/java/org/apache/sling/servlets/get/impl/util/JsonObjectCreator.java b/src/main/java/org/apache/sling/servlets/get/impl/util/JsonObjectCreator.java
index 49d8caf..6f587cd 100644
--- a/src/main/java/org/apache/sling/servlets/get/impl/util/JsonObjectCreator.java
+++ b/src/main/java/org/apache/sling/servlets/get/impl/util/JsonObjectCreator.java
@@ -33,13 +33,25 @@ import javax.json.JsonArrayBuilder;
import javax.json.JsonObjectBuilder;
import javax.json.JsonValue;
+import org.apache.jackrabbit.util.ISO8601;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ValueMap;
-public abstract class JsonObjectCreator {
+public class JsonObjectCreator {
+
+ private Resource resource;
+
+ private ValueMap valueMap;
- public static JsonObjectBuilder create(final Resource resource) {
- final ValueMap valueMap = resource.getValueMap();
+ private boolean ecmaSupport;
+
+ public JsonObjectCreator(Resource resource, boolean ecmaSupport) {
+ this.resource = resource;
+ this.valueMap = resource.getValueMap();
+ this.ecmaSupport = ecmaSupport;
+ }
+
+ public JsonObjectBuilder create() {
final JsonObjectBuilder obj = Json.createObjectBuilder();
@@ -71,7 +83,7 @@ public abstract class JsonObjectCreator {
while (props.hasNext()) {
final Map.Entry<String,Object> prop = props.next();
if ( prop.getValue() != null ) {
- createProperty(obj, valueMap, prop.getKey(), prop.getValue());
+ createProperty(obj, prop.getKey(), prop.getValue());
}
}
}
@@ -85,22 +97,26 @@ public abstract class JsonObjectCreator {
/** The Locale used to format date values */
static final Locale DATE_FORMAT_LOCALE = Locale.US;
-
- public static String format(final Calendar date) {
+
+ public static String formatEcma(final Calendar date) {
DateFormat formatter = new SimpleDateFormat(ECMA_DATE_FORMAT, DATE_FORMAT_LOCALE);
formatter.setTimeZone(date.getTimeZone());
return formatter.format(date.getTime());
}
/** Dump only a value in the correct format */
- private static JsonValue getValue(final Object value) {
+ private JsonValue getValue(final Object value ) {
JsonObjectBuilder builder = Json.createObjectBuilder();
if ( value instanceof InputStream ) {
// input stream is already handled
builder.add("entry", 0);
} else if ( value instanceof Calendar ) {
- builder.add("entry", format((Calendar)value));
+ if (ecmaSupport) {
+ builder.add("entry", JsonObjectCreator.formatEcma((Calendar)value));
+ } else {
+ builder.add("entry", ISO8601.format(((Calendar)value)));
+ }
} else if ( value instanceof Boolean ) {
builder.add("entry", (Boolean) value);
} else if ( value instanceof Long ) {
@@ -120,8 +136,7 @@ public abstract class JsonObjectCreator {
/**
* Write a single property
*/
- private static void createProperty(final JsonObjectBuilder obj,
- final ValueMap valueMap,
+ private void createProperty(final JsonObjectBuilder obj,
final String key,
final Object value) {
Object[] values = null;
@@ -146,11 +161,11 @@ public abstract class JsonObjectCreator {
// (colon is not allowed as a JCR property name)
// in the name, and the value should be the size of the binary data
if (values == null) {
- obj.add(":" + key, getLength(valueMap, -1, key, (InputStream)value));
+ obj.add(":" + key, getLength(-1, key, (InputStream)value));
} else {
final JsonArrayBuilder result = Json.createArrayBuilder();
for (int i = 0; i < values.length; i++) {
- result.add(getLength(valueMap, i, key, (InputStream)values[i]));
+ result.add(getLength(i, key, (InputStream)values[i]));
}
obj.add(":" + key, result);
}
@@ -168,8 +183,7 @@ public abstract class JsonObjectCreator {
}
}
- private static long getLength(final ValueMap valueMap,
- final int index,
+ private long getLength(final int index,
final String key,
final InputStream stream) {
try {
diff --git a/src/main/java/org/apache/sling/servlets/get/impl/util/ResourceTraversor.java b/src/main/java/org/apache/sling/servlets/get/impl/util/ResourceTraversor.java
index c42df33..d93aa2d 100644
--- a/src/main/java/org/apache/sling/servlets/get/impl/util/ResourceTraversor.java
+++ b/src/main/java/org/apache/sling/servlets/get/impl/util/ResourceTraversor.java
@@ -49,6 +49,8 @@ public class ResourceTraversor
private final Resource startResource;
+ private boolean ecmaSupport;
+
/** Create a ResourceTraversor, optionally limiting recursion and total number of resources
* @param levels recursion levels limit, -1 means no limit
* @param maxResources maximum number of resources to collect, ignored if levels == 1
@@ -56,12 +58,13 @@ public class ResourceTraversor
* @param tidy not used
* @throws JSONException
*/
- public ResourceTraversor(final int levels, final long maxResources, final Resource resource) {
+ public ResourceTraversor(final int levels, final long maxResources, final Resource resource, boolean ecmaSupport) {
this.maxResources = maxResources;
this.maxRecursionLevels = levels;
this.startResource = resource;
currentQueue = new LinkedList<>();
nextQueue = new LinkedList<>();
+ this.ecmaSupport = ecmaSupport;
this.startObject = this.adapt(resource);
}
@@ -135,7 +138,7 @@ public class ResourceTraversor
* @throws JSONException
*/
private JsonObjectBuilder adapt(final Resource resource) {
- return JsonObjectCreator.create(resource);
+ return new JsonObjectCreator(resource,ecmaSupport).create();
}
public JsonObject getJSONObject() {
diff --git a/src/test/java/org/apache/sling/servlets/get/impl/JsonRendererServletTest.java b/src/test/java/org/apache/sling/servlets/get/impl/JsonRendererServletTest.java
index 6c5ee91..a86cee0 100644
--- a/src/test/java/org/apache/sling/servlets/get/impl/JsonRendererServletTest.java
+++ b/src/test/java/org/apache/sling/servlets/get/impl/JsonRendererServletTest.java
@@ -79,7 +79,7 @@ public class JsonRendererServletTest {
request.setResource(resolver.getResource(path));
MockSlingHttpServletResponse response = new MockSlingHttpServletResponse();
- JsonRenderer servlet = new JsonRenderer(1000);
+ JsonRenderer servlet = new JsonRenderer(1000,true);
PrivateAccessor.invoke(servlet, "render",
new Class[]{SlingHttpServletRequest.class, SlingHttpServletResponse.class},
new Object[]{request, response});
diff --git a/src/test/java/org/apache/sling/servlets/get/impl/helpers/HtmlRendererServletTest.java b/src/test/java/org/apache/sling/servlets/get/impl/helpers/HtmlRendererTest.java
similarity index 94%
rename from src/test/java/org/apache/sling/servlets/get/impl/helpers/HtmlRendererServletTest.java
rename to src/test/java/org/apache/sling/servlets/get/impl/helpers/HtmlRendererTest.java
index b7feaf8..72a3a1b 100644
--- a/src/test/java/org/apache/sling/servlets/get/impl/helpers/HtmlRendererServletTest.java
+++ b/src/test/java/org/apache/sling/servlets/get/impl/helpers/HtmlRendererTest.java
@@ -35,7 +35,7 @@ import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
-public class HtmlRendererServletTest {
+public class HtmlRendererTest {
private SlingHttpServletRequest request;
private SlingHttpServletResponse response;
@@ -64,9 +64,7 @@ public class HtmlRendererServletTest {
public void testEscaping() throws ServletException, IOException {
XSSAPI xss = Mockito.mock(XSSAPI.class);
- final HtmlRenderer servlet = new HtmlRenderer(xss);
-
- servlet.render(request, response);
+ new HtmlRenderer(xss).render(request, response);
Mockito.verify(xss).encodeForHTML("<script>alert(1);</script>");
}
diff --git a/src/test/java/org/apache/sling/servlets/get/impl/helpers/JsonRendererServletTest.java b/src/test/java/org/apache/sling/servlets/get/impl/helpers/JsonRendererServletTest.java
deleted file mode 100644
index b2c5cd3..0000000
--- a/src/test/java/org/apache/sling/servlets/get/impl/helpers/JsonRendererServletTest.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * 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.
- */
-package org.apache.sling.servlets.get.impl.helpers;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import java.io.IOException;
-
-import org.apache.sling.api.SlingHttpServletRequest;
-import org.apache.sling.api.SlingHttpServletResponse;
-import org.apache.sling.api.request.RequestPathInfo;
-import org.apache.sling.api.resource.Resource;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.Matchers;
-import org.mockito.Mockito;
-import org.mockito.invocation.InvocationOnMock;
-import org.mockito.stubbing.Answer;
-
-public class JsonRendererServletTest {
-
- private SlingHttpServletRequest request;
- private SlingHttpServletResponse response;
- private String [] selectors;
- private JsonRenderer jrs;
-
- @Before
- public void setup() {
- request = Mockito.mock(SlingHttpServletRequest.class);
-
- final RequestPathInfo rpi = Mockito.mock(RequestPathInfo.class);
- Mockito.when(request.getRequestPathInfo()).thenReturn(rpi);
- Mockito.when(rpi.getSelectors()).thenAnswer(new Answer<String[]>(){
- public String [] answer(InvocationOnMock invocation) {
- return selectors;
- }
- });
-
- final Resource resource = Mockito.mock(Resource.class);
- Mockito.when(request.getResource()).thenReturn(resource);
-
- response = Mockito.mock(SlingHttpServletResponse.class);
-
- jrs = new JsonRenderer(42);
- }
-
- @Test
- public void testRecursionLevelA() {
- selectors = new String[] { "12" };
- assertEquals(12, jrs.getMaxRecursionLevel(request));
- assertFalse(jrs.isTidy(request));
- }
-
- @Test(expected=IllegalArgumentException.class)
- public void testRecursionLevelB() {
- selectors = new String[] { "42", "more" };
- jrs.getMaxRecursionLevel(request);
- }
-
- @Test(expected=IllegalArgumentException.class)
- public void testRecursionLevelC() {
- selectors = new String[] { "more" };
- jrs.getMaxRecursionLevel(request);
- }
-
- @Test
- public void testRecursionLevelD() {
- selectors = new String[] { "tidy" };
- assertEquals(0, jrs.getMaxRecursionLevel(request));
- }
-
- @Test
- public void testRecursionLevelE() {
- // Level must be the last selector but
- // if the last selector is "tidy" there's
- // no error. "for historical reasons"
- selectors = new String[] { "46", "tidy" };
- assertEquals(0, jrs.getMaxRecursionLevel(request));
- }
-
- @Test
- public void testRecursionLevelF() {
- selectors = new String[] { "tidy", "45" };
- assertEquals(45, jrs.getMaxRecursionLevel(request));
- assertTrue(jrs.isTidy(request));
- }
-
- @Test
- public void testBadRequest() throws IOException {
- selectors = new String[] { "bad", "selectors" };
- jrs.render(request, response);
- Mockito.verify(response, Mockito.times(1)).sendError(Matchers.anyInt(), Matchers.anyString());
- }
-}
\ No newline at end of file
diff --git a/src/test/java/org/apache/sling/servlets/get/impl/helpers/JsonRendererTest.java b/src/test/java/org/apache/sling/servlets/get/impl/helpers/JsonRendererTest.java
new file mode 100644
index 0000000..e6d971d
--- /dev/null
+++ b/src/test/java/org/apache/sling/servlets/get/impl/helpers/JsonRendererTest.java
@@ -0,0 +1,136 @@
+/*
+ * 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.
+ */
+package org.apache.sling.servlets.get.impl.helpers;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.Calendar;
+
+import javax.json.Json;
+import javax.json.JsonObject;
+import javax.json.JsonReader;
+
+import org.apache.jackrabbit.util.ISO8601;
+import org.apache.sling.testing.mock.sling.junit.SlingContext;
+import org.apache.sling.testing.mock.sling.servlet.MockSlingHttpServletRequest;
+import org.apache.sling.testing.mock.sling.servlet.MockSlingHttpServletResponse;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+
+public class JsonRendererTest {
+
+ @Rule
+ public final SlingContext context = new SlingContext();
+
+ private MockSlingHttpServletRequest request;
+ private MockSlingHttpServletResponse response;
+
+ private JsonRenderer jrs;
+
+ @Before
+ public void setup() {
+ context.load().json("/data.json", "/content");
+ request = context.request();
+ response = context.response();
+
+ context.currentResource("/content");
+
+ jrs = new JsonRenderer(42,false);
+ }
+
+ @Test
+ public void testRecursionLevelA() {
+ context.requestPathInfo().setSelectorString("12");
+ assertEquals(12, jrs.getMaxRecursionLevel(request));
+ assertFalse(jrs.isTidy(request));
+ }
+
+ @Test(expected=IllegalArgumentException.class)
+ public void testRecursionLevelB() {
+ context.requestPathInfo().setSelectorString("42.more");
+ jrs.getMaxRecursionLevel(request);
+ }
+
+ @Test(expected=IllegalArgumentException.class)
+ public void testRecursionLevelC() {
+ context.requestPathInfo().setSelectorString("more");
+ jrs.getMaxRecursionLevel(request);
+ }
+
+ @Test
+ public void testRecursionLevelD() {
+ context.requestPathInfo().setSelectorString("tidy");
+ assertEquals(0, jrs.getMaxRecursionLevel(request));
+ }
+
+ @Test
+ public void testRecursionLevelE() {
+ // Level must be the last selector but
+ // if the last selector is "tidy" there's
+ // no error. "for historical reasons"
+ context.requestPathInfo().setSelectorString("46.tidy");
+ assertEquals(0, jrs.getMaxRecursionLevel(request));
+ }
+
+ @Test
+ public void testRecursionLevelF() {
+ context.requestPathInfo().setSelectorString("tidy.45");
+ assertEquals(45, jrs.getMaxRecursionLevel(request));
+ assertTrue(jrs.isTidy(request));
+ }
+
+ @Test
+ public void testBadRequest() throws IOException {
+ context.requestPathInfo().setSelectorString("bad.selectors");
+ jrs.render(request, response);
+ assertTrue(response.getStatus() == 400);
+ }
+
+ @Test
+ public void testISO8601() throws IOException {
+ context.requestPathInfo().setSelectorString("1");
+ jrs.render(request, response);
+ StringReader reader = new StringReader(response.getOutputAsString());
+ JsonObject job = Json.createReader(reader).readObject();
+ String created = job.getString("created");
+ Calendar cal = ISO8601.parse(created);
+ // at the time of the test the offset it not preserved
+ // if we did direct string comparison the time would be different based on the testers
+ // time zone
+ assertTrue(ISO8601.getYear(cal) == 2016);
+ }
+
+ @Test
+ public void testECMA() throws IOException {
+ context.requestPathInfo().setSelectorString("1");
+ jrs = new JsonRenderer(42,true);
+ jrs.render(request, response);
+ String out = response.getOutputAsString();
+ JsonObject job = Json.createReader(new StringReader(out)).readObject();
+ String created = job.getString("created");
+ assertTrue(created.startsWith("Mon Jan"));
+ }
+
+
+}
\ No newline at end of file
diff --git a/src/test/java/org/apache/sling/servlets/get/impl/helpers/StreamRendererServletTest.java b/src/test/java/org/apache/sling/servlets/get/impl/helpers/StreamRendererTest.java
similarity index 98%
rename from src/test/java/org/apache/sling/servlets/get/impl/helpers/StreamRendererServletTest.java
rename to src/test/java/org/apache/sling/servlets/get/impl/helpers/StreamRendererTest.java
index 2423ecb..8318196 100644
--- a/src/test/java/org/apache/sling/servlets/get/impl/helpers/StreamRendererServletTest.java
+++ b/src/test/java/org/apache/sling/servlets/get/impl/helpers/StreamRendererTest.java
@@ -34,7 +34,7 @@ import org.apache.sling.api.resource.ResourceMetadata;
import org.junit.Test;
import org.mockito.Mockito;
-public class StreamRendererServletTest {
+public class StreamRendererTest {
@Test
public void testCopyRange() throws IOException {
@@ -135,7 +135,6 @@ public class StreamRendererServletTest {
final ResourceMetadata meta = Mockito.mock(ResourceMetadata.class);
final ServletContext sc = Mockito.mock(ServletContext.class);
- @SuppressWarnings("serial")
StreamRenderer streamRendererServlet = new StreamRenderer(true,new String []{"/"},sc);
Mockito.when(resource.getResourceMetadata()).thenReturn(meta);
diff --git a/src/test/resources/data.json b/src/test/resources/data.json
new file mode 100644
index 0000000..7619a4f
--- /dev/null
+++ b/src/test/resources/data.json
@@ -0,0 +1,19 @@
+{
+ "resourceType":"page",
+ "created" : "Mon Jan 18 2016 16:30:00 GMT+0200",
+ "one":
+ {
+ "resourceType":"one"
+ },
+ "two":
+ {
+ "resourceType":"two"
+ },
+ "etc":
+ {
+ "resourceType":"etc",
+ "tags" : {
+ "resourceType" : "tags"
+ }
+ }
+}
\ No newline at end of file
--
To stop receiving notification emails like this one, please contact
jeb@apache.org.