Author: aparfonov
Date: 2010-06-25 04:53:00 -0400 (Fri, 25 Jun 2010)
New Revision: 2705
Modified:
jcr/trunk/exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/script/groovy/GroovyScript2RestLoaderTest.java
Log:
EXOJCR-230 : simlify test by using ResourceLauncher
Modified:
jcr/trunk/exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/script/groovy/GroovyScript2RestLoaderTest.java
===================================================================
---
jcr/trunk/exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/script/groovy/GroovyScript2RestLoaderTest.java 2010-06-25
08:51:18 UTC (rev 2704)
+++
jcr/trunk/exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/script/groovy/GroovyScript2RestLoaderTest.java 2010-06-25
08:53:00 UTC (rev 2705)
@@ -24,17 +24,18 @@
import
org.exoplatform.services.jcr.ext.registry.RESTRegistryTest.DummyContainerResponseWriter;
import
org.exoplatform.services.jcr.ext.script.groovy.GroovyScript2RestLoader.ScriptMetadata;
import org.exoplatform.services.rest.RequestHandler;
-import org.exoplatform.services.rest.impl.ContainerRequest;
import org.exoplatform.services.rest.impl.ContainerResponse;
-import org.exoplatform.services.rest.impl.InputHeadersMap;
import org.exoplatform.services.rest.impl.MultivaluedMapImpl;
import org.exoplatform.services.rest.impl.ResourceBinder;
import org.exoplatform.services.rest.tools.ByteArrayContainerResponseWriter;
+import org.exoplatform.services.rest.tools.ResourceLauncher;
import org.exoplatform.services.security.ConversationState;
import org.exoplatform.services.security.Identity;
import java.io.ByteArrayInputStream;
-import java.net.URI;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
import java.util.Calendar;
import javax.jcr.Node;
@@ -54,6 +55,7 @@
private ResourceBinder binder;
+ @Deprecated
private RequestHandler handler;
private ThreadLocalSessionProviderService sesProv;
@@ -66,6 +68,8 @@
private int resourceNumber = 0;
+ private ResourceLauncher launcher;
+
/**
* {@inheritDoc}
*/
@@ -93,6 +97,8 @@
// repository for groovy dependencies
groovyRepo = root.addNode("repo", "nt:folder");
+ launcher = new ResourceLauncher(handler);
+
session.save();
}
@@ -121,68 +127,47 @@
{
MultivaluedMap<String, String> headers = new MultivaluedMapImpl();
headers.putSingle("Accept", MediaType.APPLICATION_JSON);
- ContainerRequest creq =
- new ContainerRequest("POST", new
URI("/script/groovy/meta/db1/ws/testRoot/script"), new URI(""), null,
- new InputHeadersMap(headers));
- ContainerResponse cres = new ContainerResponse(new
DummyContainerResponseWriter());
- handler.handleRequest(creq, cres);
-
- assertEquals(200, cres.getStatus());
- ScriptMetadata data = (ScriptMetadata)cres.getEntity();
+ ContainerResponse response =
+ launcher.service("POST",
"/script/groovy/meta/db1/ws/testRoot/script", "", headers, null,
null);
+ assertEquals(200, response.getStatus());
+ ScriptMetadata data = (ScriptMetadata)response.getEntity();
assertEquals("script/groovy", data.getMediaType());
assertTrue(Boolean.valueOf(data.getLoad()));
}
public void testRemoteAccessAutoload() throws Exception
{
- MultivaluedMap<String, String> headers = new MultivaluedMapImpl();
- ContainerRequest creq =
- new ContainerRequest("POST", new
URI("/script/groovy/autoload/db1/ws/testRoot/script?state=false"),
- new URI(""), null, new InputHeadersMap(headers));
- ContainerResponse cres = new ContainerResponse(new
DummyContainerResponseWriter());
- handler.handleRequest(creq, cres);
+ ContainerResponse cres =
+ launcher.service("POST",
"/script/groovy/autoload/db1/ws/testRoot/script?state=false", "",
null, null, null);
+
assertEquals(204, cres.getStatus());
assertFalse(script.getProperty("exo:autoload").getBoolean());
- creq =
- new ContainerRequest("POST", new
URI("/script/groovy/autoload/db1/ws/testRoot/script"), new URI(""),
null,
- new InputHeadersMap(headers));
- cres = new ContainerResponse(new DummyContainerResponseWriter());
- handler.handleRequest(creq, cres);
+ cres = launcher.service("POST",
"/script/groovy/autoload/db1/ws/testRoot/script", "", null, null,
null);
+
assertEquals(204, cres.getStatus());
assertTrue(script.getProperty("exo:autoload").getBoolean());
}
public void testRemoteAccessLoad() throws Exception
{
- MultivaluedMap<String, String> headers = new MultivaluedMapImpl();
- ContainerRequest creq =
- new ContainerRequest("POST", new
URI("/script/groovy/load/db1/ws/testRoot/script?state=false"), new
URI(""),
- null, new InputHeadersMap(headers));
- ContainerResponse cres = new ContainerResponse(new
DummyContainerResponseWriter());
- handler.handleRequest(creq, cres);
+ ContainerResponse cres =
+ launcher.service("POST",
"/script/groovy/load/db1/ws/testRoot/script?state=false", "", null,
null, null);
assertEquals(204, cres.getStatus());
assertEquals(resourceNumber, binder.getSize());
- creq =
- new ContainerRequest("POST", new
URI("/script/groovy/load/db1/ws/testRoot/script"), new URI(""), null,
- new InputHeadersMap(headers));
- cres = new ContainerResponse(new DummyContainerResponseWriter());
- handler.handleRequest(creq, cres);
+ launcher.service("POST",
"/script/groovy/load/db1/ws/testRoot/script", "", null, null, null);
+
assertEquals(204, cres.getStatus());
assertEquals(resourceNumber + 1, binder.getSize());
}
public void testRemoteAccessDelete() throws Exception
{
- MultivaluedMap<String, String> headers = new MultivaluedMapImpl();
- ContainerRequest creq =
- new ContainerRequest("POST", new
URI("/script/groovy/delete/db1/ws/testRoot/script"), new URI(""),
null,
- new InputHeadersMap(headers));
- ContainerResponse cres = new ContainerResponse(new
DummyContainerResponseWriter());
- handler.handleRequest(creq, cres);
+ ContainerResponse cres =
+ launcher.service("POST",
"/script/groovy/delete/db1/ws/testRoot/script", "", null, null,
null);
assertEquals(204, cres.getStatus());
assertEquals(resourceNumber, binder.getSize());
@@ -192,13 +177,9 @@
{
MultivaluedMap<String, String> headers = new MultivaluedMapImpl();
headers.putSingle("Accept", "script/groovy");
- ContainerRequest creq =
- new ContainerRequest("POST", new
URI("/script/groovy/src/db1/ws/testRoot/script"), new URI(""), null,
- new InputHeadersMap(headers));
ByteArrayContainerResponseWriter wr = new ByteArrayContainerResponseWriter();
- ContainerResponse cres = new ContainerResponse(wr);
- handler.handleRequest(creq, cres);
-
+ ContainerResponse cres =
+ launcher.service("POST",
"/script/groovy/src/db1/ws/testRoot/script", "", headers, null, wr,
null);
assertEquals(200, cres.getStatus());
compareStream(script.getProperty("jcr:data").getStream(), new
ByteArrayInputStream(wr.getBody()));
}
@@ -209,26 +190,18 @@
session.save();
MultivaluedMap<String, String> headers = new MultivaluedMapImpl();
headers.putSingle("Content-type", "script/groovy");
- ContainerRequest creq =
- new ContainerRequest("POST", new
URI("/script/groovy/add/db1/ws/testRoot/script"), new URI(""), Thread
-
.currentThread().getContextClassLoader().getResourceAsStream("test1.groovy"),
new InputHeadersMap(headers));
- ByteArrayContainerResponseWriter wr = new ByteArrayContainerResponseWriter();
- ContainerResponse cres = new ContainerResponse(wr);
- handler.handleRequest(creq, cres);
+ ContainerResponse cres =
+ launcher.service("POST",
"/script/groovy/add/db1/ws/testRoot/script", "", headers,
+ getResourceAsBytes("test1.groovy"), null, null);
+
assertEquals(201, cres.getStatus());
}
public void testDispatchScript() throws Exception
{
- ContainerRequest creq =
- new ContainerRequest("GET", new
URI("/groovy-test/groovy1/test"), new URI(""), null, new
InputHeadersMap(
- new MultivaluedMapImpl()));
+ ContainerResponse cres = launcher.service("GET",
"/groovy-test/groovy1/test", "", null, null, null);
- ContainerResponse cres = new ContainerResponse(new
DummyContainerResponseWriter());
-
- handler.handleRequest(creq, cres);
-
assertEquals(200, cres.getStatus());
assertEquals("Hello from groovy to test", cres.getEntity());
@@ -239,12 +212,9 @@
// must be rebounded , not created other one
assertEquals(resourceNumber + 1, binder.getSize());
- creq =
- new ContainerRequest("GET", new
URI("/groovy-test/groovy2/test"), new URI(""), null, new
InputHeadersMap(
- new MultivaluedMapImpl()));
cres = new ContainerResponse(new DummyContainerResponseWriter());
- handler.handleRequest(creq, cres);
+ cres = launcher.service("GET", "/groovy-test/groovy2/test",
"", null, null, null);
assertEquals(200, cres.getStatus());
assertEquals("Hello from groovy to >>>>> test",
cres.getEntity());
}
@@ -254,20 +224,14 @@
MultivaluedMap<String, String> headers = new MultivaluedMapImpl();
headers.putSingle("Content-Type", "script/groovy");
String script = "public class Test { def a = 0\ndef =\n}\n";
- ContainerRequest creq =
- new ContainerRequest("POST", new
URI("/script/groovy/validate/%5Bno-name%5D"), new URI(""),
- new ByteArrayInputStream(script.getBytes()), new InputHeadersMap(headers));
- ContainerResponse cres = new ContainerResponse(new
DummyContainerResponseWriter());
- handler.handleRequest(creq, cres);
+
+ ContainerResponse cres =
+ launcher.service("POST",
"/script/groovy/validate/%5Bno-name%5D", "", headers,
script.getBytes(), null);
assertEquals(400, cres.getStatus());
System.out.println(cres.getEntity());
- // cres.setResponse(null); //reset response
script = "public class Test { def a = 0\ndef b = 1\n }\n";
- creq =
- new ContainerRequest("POST", new
URI("/script/groovy/validate/%5Bno-name%5D"), new URI(""),
- new ByteArrayInputStream(script.getBytes()), new InputHeadersMap(headers));
- handler.handleRequest(creq, cres);
+ cres = launcher.service("POST",
"/script/groovy/validate/%5Bno-name%5D", "", headers,
script.getBytes(), null);
assertEquals(200, cres.getStatus());
}
@@ -276,21 +240,16 @@
MultivaluedMap<String, String> headers = new MultivaluedMapImpl();
headers.putSingle("Content-Type", "script/groovy");
String script = "public class Test { def a = 0\ndef =\n}\n";
- ContainerRequest creq =
- new ContainerRequest("POST", new
URI("/script/groovy/validate/"), new URI(""), new
ByteArrayInputStream(script
- .getBytes()), new InputHeadersMap(headers));
- ContainerResponse cres = new ContainerResponse(new
DummyContainerResponseWriter());
- handler.handleRequest(creq, cres);
+
+ ContainerResponse cres =
+ launcher.service("POST", "/script/groovy/validate/",
"", headers, script.getBytes(), null);
assertEquals(400, cres.getStatus());
System.out.println(cres.getEntity());
- // cres.setResponse(null); //reset response
script = "public class Test { def a = 0\ndef b = 1\n }\n";
- creq =
- new ContainerRequest("POST", new
URI("/script/groovy/validate/"), new URI(""), new
ByteArrayInputStream(script
- .getBytes()), new InputHeadersMap(headers));
- handler.handleRequest(creq, cres);
+ cres = launcher.service("POST", "/script/groovy/validate/",
"", headers, script.getBytes(), null);
assertEquals(200, cres.getStatus());
+
}
public void testGroovyDependency() throws Exception
@@ -312,13 +271,29 @@
// must be rebounded , not created other one
assertEquals(resourceNumber + 1, binder.getSize());
- ContainerRequest creq =
- new ContainerRequest("GET", new
URI("/groovy-test-dependency"), new URI(""), null, new
InputHeadersMap(
- new MultivaluedMapImpl()));
- ContainerResponse cres = new ContainerResponse(new
DummyContainerResponseWriter());
- handler.handleRequest(creq, cres);
+
+ ContainerResponse cres = launcher.service("GET",
"/groovy-test-dependency", "", null, null, null);
assertEquals(200, cres.getStatus());
assertEquals("dependencies.Dep1", cres.getEntity());
}
+
+ private byte[] getResourceAsBytes(String resource) throws IOException
+ {
+ byte[] data = null;
+ InputStream stream =
Thread.currentThread().getContextClassLoader().getResourceAsStream(resource);
+ if (stream != null)
+ {
+ ByteArrayOutputStream bout = new ByteArrayOutputStream();
+ byte[] buf = new byte[1024];
+ int r = -1;
+ while ((r = stream.read(buf)) != -1)
+ {
+ bout.write(buf, 0, r);
+ }
+ data = bout.toByteArray();
+ }
+ return data;
+ }
+
}