diff --git a/tests/src/system/basic/WskBasicTests.scala b/tests/src/system/basic/WskBasicTests.scala index 61f6507e65021d29ef7481479a5f3634238e13dc..36c661dcb32bea4a4861d4cc699c3db3d30d8b50 100644 --- a/tests/src/system/basic/WskBasicTests.scala +++ b/tests/src/system/basic/WskBasicTests.scala @@ -35,6 +35,8 @@ import common.WskTestHelpers import spray.json._ import spray.json.DefaultJsonProtocol._ import spray.json.pimpAny +import scala.concurrent.duration.DurationInt +import scala.language.postfixOps @RunWith(classOf[JUnitRunner]) class WskBasicTests @@ -416,6 +418,34 @@ class WskBasicTests res.stdout should include(s"ok: created action $name") } + it should "create an action, and invoke an action that returns an empty JSON object" in withAssetCleaner(wskprops) { + (wp, assetHelper) => + val name = "emptyJSONAction" + + val res = assetHelper.withCleaner(wsk.action, name) { + (action, _) => + action.create(name, Some(TestUtils.getTestActionFilename("emptyJSONResult.js"))) + action.invoke(name, blocking = true, result = true) + } + + res.stdout shouldBe ("{}\n") + } + + it should "create, and invoke an action that times out to ensure the result is empty" in withAssetCleaner(wskprops) { + (wp, assetHelper) => + val name = "sleepAction" + val params = Map("payload" -> "100000".toJson) + val allowedActionDuration = 120 seconds + val res = assetHelper.withCleaner(wsk.action, name) { + (action, _) => + action.create(name, Some(TestUtils.getTestActionFilename("timeout.js")), + timeout = Some(allowedActionDuration)) + action.invoke(name, parameters = params, blocking = true, result = true) + } + + res.stdout shouldBe "" + } + behavior of "Wsk Trigger CLI" it should "create, update, get, fire and list trigger" in withAssetCleaner(wskprops) { @@ -534,6 +564,21 @@ class WskBasicTests wsk.trigger.get(name, fieldFilter = Some("invalid"), expectedExitCode = ERROR_EXIT).stderr should include("error: Invalid field filter 'invalid'.") } + it should "create, and fire a trigger to ensure result is empty" in withAssetCleaner(wskprops) { + (wp, assetHelper) => + val name = "emptyResultTrigger" + assetHelper.withCleaner(wsk.trigger, name) { + (trigger, _) => + trigger.create(name) + } + + val run = wsk.trigger.fire(name) + withActivation(wsk.activation, run) { + activation => + activation.response.result shouldBe Some(JsObject()) + } + } + behavior of "Wsk Rule CLI" it should "create rule, get rule, update rule and list rule" in withAssetCleaner(wskprops) {