Add test for init twice. (#62)
diff --git a/java8/proxy/src/main/java/openwhisk/java/action/Proxy.java b/java8/proxy/src/main/java/openwhisk/java/action/Proxy.java
index 6233e92..fd80333 100644
--- a/java8/proxy/src/main/java/openwhisk/java/action/Proxy.java
+++ b/java8/proxy/src/main/java/openwhisk/java/action/Proxy.java
@@ -85,10 +85,8 @@
String base64Jar = message.getAsJsonPrimitive("code").getAsString();
// FIXME: this is obviously not very useful. The idea is that we
- // will implement/use
- // a streaming parser for the incoming JSON object so that we
- // can stream the contents
- // of the jar straight to a file.
+ // will implement/use a streaming parser for the incoming JSON object so that we
+ // can stream the contents of the jar straight to a file.
InputStream jarIs = new ByteArrayInputStream(base64Jar.getBytes(StandardCharsets.UTF_8));
// Save the bytes to a file.
diff --git a/tests/src/test/scala/actionContainers/JavaActionContainerTests.scala b/tests/src/test/scala/actionContainers/JavaActionContainerTests.scala
index f30ccd1..a3094a8 100644
--- a/tests/src/test/scala/actionContainers/JavaActionContainerTests.scala
+++ b/tests/src/test/scala/actionContainers/JavaActionContainerTests.scala
@@ -124,6 +124,34 @@
err.trim shouldBe empty
}
+ it should "not allow initialization twice" in {
+ val (out, err) = withJavaContainer { c =>
+ val jar = JarBuilder.mkBase64Jar(
+ Seq("example", "HelloWhisk.java") ->
+ """
+ | package example;
+ |
+ | import com.google.gson.JsonObject;
+ |
+ | public class HelloWhisk {
+ | public static JsonObject main(JsonObject args) {
+ | return args;
+ | }
+ | }
+ """.stripMargin.trim)
+
+ val (initCode, _) = c.init(initPayload("example.HelloWhisk", jar))
+ initCode should be(200)
+
+ val (initCode2, out2) = c.init(initPayload("example.HelloWhisk", jar))
+ initCode2 should (be < 200 or be > 299) // the code does not matter, just cannot be 20x
+ out2 should be(Some(JsObject("error" -> JsString("Cannot initialize the action more than once."))))
+ }
+
+ out.trim shouldBe empty
+ err.trim shouldBe empty
+ }
+
it should "support valid actions with non 'main' names" in {
val (out, err) = withJavaContainer { c =>
val jar = JarBuilder.mkBase64Jar(