You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwhisk.apache.org by ja...@apache.org on 2019/05/08 15:19:26 UTC

[incubator-openwhisk-cli] branch master updated: Update tests to react to provide-api-key toggle (#438)

This is an automated email from the ASF dual-hosted git repository.

japetrsn pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-openwhisk-cli.git


The following commit(s) were added to refs/heads/master by this push:
     new 18fd63c  Update tests to react to provide-api-key toggle (#438)
18fd63c is described below

commit 18fd63cf05c35c6a0c4d2b8717c30a56fc0a7268
Author: James Dubee <jw...@us.ibm.com>
AuthorDate: Wed May 8 11:19:21 2019 -0400

    Update tests to react to provide-api-key toggle (#438)
---
 .../core/cli/test/WskCliBasicUsageTests.scala      | 115 +++++++++++++++------
 .../test/scala/system/basic/WskCliBasicTests.scala |  36 -------
 2 files changed, 85 insertions(+), 66 deletions(-)

diff --git a/tests/src/test/scala/org/apache/openwhisk/core/cli/test/WskCliBasicUsageTests.scala b/tests/src/test/scala/org/apache/openwhisk/core/cli/test/WskCliBasicUsageTests.scala
index 66106b4..b16b58b 100644
--- a/tests/src/test/scala/org/apache/openwhisk/core/cli/test/WskCliBasicUsageTests.scala
+++ b/tests/src/test/scala/org/apache/openwhisk/core/cli/test/WskCliBasicUsageTests.scala
@@ -66,7 +66,7 @@ class WskCliBasicUsageTests extends TestHelpers with WskTestHelpers {
   // Some action invocation environments will not have an api key; so allow this check to be conditionally skipped
   val apiKeyCheck = true
 
-  val requireAPIKeyAnnotation = WhiskProperties.getBooleanProperty("whisk.feature.requireApiKeyAnnotation", true);
+  val requireAPIKeyAnnotation = WhiskProperties.getBooleanProperty("whisk.feature.requireApiKeyAnnotation", true)
 
   behavior of "Wsk CLI usage"
 
@@ -653,6 +653,24 @@ class WskCliBasicUsageTests extends TestHelpers with WskTestHelpers {
     val createAnnots = Map(createKey -> createValue, origKey -> origValue)
     val updateAnnots =
       Map(updateKey -> updateValue, origKey -> overwrittenValue)
+    val baseAnnotations =
+      Parameters("web-export", JsTrue) ++
+        Parameters("raw-http", JsFalse) ++
+        Parameters("final", JsTrue) ++
+        Parameters("exec", "nodejs:6")
+    val createAnnotations = if (requireAPIKeyAnnotation) {
+      baseAnnotations ++
+        Parameters(WhiskAction.provideApiKeyAnnotationName, JsFalse) ++
+        Parameters(createKey, createValue) ++
+        Parameters(origKey, origValue)
+    } else {
+      baseAnnotations ++
+        Parameters(createKey, createValue) ++
+        Parameters(origKey, origValue)
+    }
+    val updateAnnotations = baseAnnotations ++ Parameters(updateKey, updateValue) ++ Parameters(
+      origKey,
+      overwrittenValue)
 
     assetHelper.withCleaner(wsk.action, name) { (action, _) =>
       action.create(name, file, annotations = createAnnots)
@@ -660,30 +678,18 @@ class WskCliBasicUsageTests extends TestHelpers with WskTestHelpers {
 
     wsk.action.create(name, file, web = Some("true"), update = true)
 
-    val existinAnnots =
-      wsk.action.get(name, fieldFilter = Some("annotations")).stdout
-    assert(existinAnnots.startsWith(s"ok: got action $name, displaying field annotations\n"))
-    removeCLIHeader(existinAnnots).parseJson shouldBe JsArray(
-      JsObject("key" -> JsString("web-export"), "value" -> JsBoolean(true)),
-      JsObject("key" -> JsString(origKey), "value" -> origValue),
-      JsObject("key" -> JsString("raw-http"), "value" -> JsBoolean(false)),
-      JsObject("key" -> JsString("final"), "value" -> JsBoolean(true)),
-      JsObject("key" -> JsString(createKey), "value" -> createValue),
-      JsObject("key" -> JsString(WhiskAction.provideApiKeyAnnotationName), "value" -> JsBoolean(false)),
-      JsObject("key" -> JsString("exec"), "value" -> JsString("nodejs:6")))
+    val existingAnnots = wsk.action.get(name, fieldFilter = Some("annotations")).stdout
+    assert(existingAnnots.startsWith(s"ok: got action $name, displaying field annotations\n"))
+    removeCLIHeader(existingAnnots).parseJson.convertTo[Set[JsObject]] shouldBe createAnnotations.toJsArray
+      .convertTo[Set[JsObject]]
 
     wsk.action.create(name, file, web = Some("true"), update = true, annotations = updateAnnots)
 
     val updatedAnnots =
       wsk.action.get(name, fieldFilter = Some("annotations")).stdout
     assert(updatedAnnots.startsWith(s"ok: got action $name, displaying field annotations\n"))
-    removeCLIHeader(updatedAnnots).parseJson shouldBe JsArray(
-      JsObject("key" -> JsString("web-export"), "value" -> JsBoolean(true)),
-      JsObject("key" -> JsString(origKey), "value" -> overwrittenValue),
-      JsObject("key" -> JsString(updateKey), "value" -> updateValue),
-      JsObject("key" -> JsString("raw-http"), "value" -> JsBoolean(false)),
-      JsObject("key" -> JsString("final"), "value" -> JsBoolean(true)),
-      JsObject("key" -> JsString("exec"), "value" -> JsString("nodejs:6")))
+    removeCLIHeader(updatedAnnots).parseJson.convertTo[Set[JsObject]] shouldBe updateAnnotations.toJsArray
+      .convertTo[Set[JsObject]]
   }
 
   it should "ensure action update creates an action with --web flag" in withAssetCleaner(wskprops) {
@@ -696,24 +702,22 @@ class WskCliBasicUsageTests extends TestHelpers with WskTestHelpers {
       }
 
       val baseAnnotations =
-        Parameters("web-export", JsBoolean(true)) ++
-          Parameters("raw-http", JsBoolean(false)) ++
-          Parameters("final", JsBoolean(true))
+        Parameters("web-export", JsTrue) ++
+          Parameters("raw-http", JsFalse) ++
+          Parameters("final", JsTrue) ++
+          Parameters("exec", "nodejs:6")
 
       val testAnnotations = if (requireAPIKeyAnnotation) {
         baseAnnotations ++
-          Parameters(WhiskAction.provideApiKeyAnnotationName, JsBoolean(false)) ++
-          Parameters("exec", "nodejs:6")
+          Parameters(WhiskAction.provideApiKeyAnnotationName, JsFalse)
       } else {
-        baseAnnotations ++
-          Parameters("exec", "nodejs:6")
+        baseAnnotations
       }
 
       val action = wsk.action.get(name)
       removeCLIHeader(action.stdout).parseJson.asJsObject
         .fields("annotations")
-        .convertTo[Set[JsObject]] shouldBe testAnnotations.toJsArray
-        .convertTo[Set[JsObject]]
+        .convertTo[Set[JsObject]] shouldBe testAnnotations.toJsArray.convertTo[Set[JsObject]]
   }
 
   it should "reject action create and update with invalid --web flag input" in withAssetCleaner(wskprops) {
@@ -864,7 +868,6 @@ class WskCliBasicUsageTests extends TestHelpers with WskTestHelpers {
     var stdout = wsk.action.get(name, fieldFilter = Some("annotations")).stdout
     var existingAnnotations =
       removeCLIHeader(stdout).parseJson.convertTo[JsArray].elements
-    println("existingAnnotations: " + existingAnnotations)
     existingAnnotations.contains(JsObject("key" -> JsString("exec"), "value" -> JsString("nodejs:6"))) shouldBe true
     existingAnnotations.contains(JsObject("key" -> JsString("web-export"), "value" -> JsBoolean(true))) shouldBe true
     existingAnnotations.contains(JsObject("key" -> JsString("raw-http"), "value" -> JsBoolean(false))) shouldBe true
@@ -877,7 +880,6 @@ class WskCliBasicUsageTests extends TestHelpers with WskTestHelpers {
     stdout = wsk.action.get(name, fieldFilter = Some("annotations")).stdout
     var updatedAnnotations =
       removeCLIHeader(stdout).parseJson.convertTo[JsArray].elements
-    println("updatedAnnotations: " + updatedAnnotations)
     updatedAnnotations.contains(JsObject("key" -> JsString("exec"), "value" -> JsString("nodejs:6"))) shouldBe true
     updatedAnnotations.contains(JsObject("key" -> JsString("web-export"), "value" -> JsBoolean(true))) shouldBe true
     updatedAnnotations.contains(JsObject("key" -> JsString("raw-http"), "value" -> JsBoolean(false))) shouldBe true
@@ -1183,6 +1185,59 @@ class WskCliBasicUsageTests extends TestHelpers with WskTestHelpers {
       .stderr should include("Cannot save action sequences")
   }
 
+  it should "create an action, and get its individual fields" in withAssetCleaner(wskprops) {
+    val name = "actionFields"
+    val paramInput = Map("payload" -> "test".toJson)
+    val successMsg = s"ok: got action $name, displaying field"
+    val requireAPIKeyAnnotation = WhiskProperties.getBooleanProperty("whisk.feature.requireApiKeyAnnotation", true)
+    val expectedParam = JsObject("payload" -> JsString("test"))
+    val ns = wsk.namespace.whois()
+    val expectedExec = JsObject("kind" -> "nodejs:6".toJson, "binary" -> JsFalse)
+    val expectedParams = Parameters("payload", "test")
+    val baseAnnotations =
+      Parameters("exec", "nodejs:6")
+    val expectedAnnots = if (requireAPIKeyAnnotation) {
+      baseAnnotations ++
+        Parameters(WhiskAction.provideApiKeyAnnotationName, JsFalse)
+    } else {
+      baseAnnotations
+    }
+    val expectedLimits =
+      JsObject("timeout" -> 60000.toJson, "memory" -> 256.toJson, "logs" -> 10.toJson, "concurrency" -> 1.toJson)
+
+    (wp, assetHelper) =>
+      assetHelper.withCleaner(wsk.action, name) { (action, _) =>
+        action.create(name, defaultAction, parameters = paramInput)
+      }
+
+      wsk.action.get(name, fieldFilter = Some("name")).stdout should include(s"""$successMsg name\n"$name"""")
+      wsk.action.get(name, fieldFilter = Some("version")).stdout should include(s"""$successMsg version\n"0.0.1"""")
+      wsk.action
+        .get(name, fieldFilter = Some("namespace"))
+        .stdout should include regex (s"""(?i)$successMsg namespace\n"$ns"""")
+      wsk.action.get(name, fieldFilter = Some("invalid"), expectedExitCode = MISUSE_EXIT).stderr should include(
+        "error: Invalid field filter 'invalid'.")
+      wsk.action.get(name, fieldFilter = Some("publish")).stdout should include(s"$successMsg publish\nfalse")
+
+      val exec = wsk.action.get(name, fieldFilter = Some("exec")).stdout
+      assert(exec.startsWith(s"$successMsg exec"))
+      removeCLIHeader(exec).parseJson.asJsObject shouldBe expectedExec
+
+      val params = wsk.action.get(name, fieldFilter = Some("parameters")).stdout
+      assert(params.startsWith(s"$successMsg parameters"))
+      removeCLIHeader(params).parseJson.convertTo[Set[JsObject]] shouldBe expectedParams.toJsArray
+        .convertTo[Set[JsObject]]
+
+      val annots = wsk.action.get(name, fieldFilter = Some("annotations")).stdout
+      assert(annots.startsWith(s"$successMsg annotations"))
+      removeCLIHeader(annots).parseJson.convertTo[Set[JsObject]] shouldBe expectedAnnots.toJsArray
+        .convertTo[Set[JsObject]]
+
+      val limits = wsk.action.get(name, fieldFilter = Some("limits")).stdout
+      assert(limits.startsWith(s"$successMsg limits"))
+      removeCLIHeader(limits).parseJson.asJsObject shouldBe expectedLimits
+  }
+
   behavior of "Wsk packages"
 
   it should "create, and delete a package" in {
diff --git a/tests/src/test/scala/system/basic/WskCliBasicTests.scala b/tests/src/test/scala/system/basic/WskCliBasicTests.scala
index 1c76ce5..a3c18f4 100644
--- a/tests/src/test/scala/system/basic/WskCliBasicTests.scala
+++ b/tests/src/test/scala/system/basic/WskCliBasicTests.scala
@@ -289,42 +289,6 @@ class WskCliBasicTests extends TestHelpers with WskTestHelpers {
       }
   }
 
-  it should "create an action, and get its individual fields" in withAssetCleaner(wskprops) {
-    val name = "actionFields"
-    val paramInput = Map("payload" -> "test".toJson)
-    val successMsg = s"ok: got action $name, displaying field"
-
-    (wp, assetHelper) =>
-      assetHelper.withCleaner(wsk.action, name) { (action, _) =>
-        action.create(name, defaultAction, parameters = paramInput)
-      }
-
-      val expectedParam = JsObject("payload" -> JsString("test"))
-      val ns = wsk.namespace.whois()
-
-      wsk.action.get(name, fieldFilter = Some("name")).stdout should include(s"""$successMsg name\n"$name"""")
-      wsk.action.get(name, fieldFilter = Some("version")).stdout should include(s"""$successMsg version\n"0.0.1"""")
-      wsk.action.get(name, fieldFilter = Some("exec")).stdout should include(successMsg)
-      wsk.action
-        .get(name, fieldFilter = Some("exec"))
-        .stdout should include regex (s"""$successMsg exec\n\\{\\s+"kind":\\s+"nodejs:6",\\s+"binary":\\s+false\\s+\\}""")
-      wsk.action
-        .get(name, fieldFilter = Some("parameters"))
-        .stdout should include regex (s"""$successMsg parameters\n\\[\\s+\\{\\s+"key":\\s+"payload",\\s+"value":\\s+"test"\\s+\\}\\s+\\]""")
-      wsk.action
-        .get(name, fieldFilter = Some("annotations"))
-        .stdout should include regex (s"""$successMsg annotations\n\\[\\s+\\{\\s+"key":\\s+"provide-api-key",\\s+"value":\\s+false\\s+\\},\\s+\\{\\s+"key":\\s+"exec",\\s+"value":\\s+"nodejs:6"\\s+\\}\\s+\\]""")
-      wsk.action
-        .get(name, fieldFilter = Some("limits")) //
-        .stdout should include regex (s"""$successMsg limits\n\\{\\s+"timeout":\\s+60000,\\s+"memory":\\s+256,\\s+"logs":\\s+10,\\s+"concurrency":\\s+1\\s+\\}""")
-      wsk.action
-        .get(name, fieldFilter = Some("namespace"))
-        .stdout should include regex (s"""(?i)$successMsg namespace\n"$ns"""")
-      wsk.action.get(name, fieldFilter = Some("invalid"), expectedExitCode = MISUSE_EXIT).stderr should include(
-        "error: Invalid field filter 'invalid'.")
-      wsk.action.get(name, fieldFilter = Some("publish")).stdout should include(s"""$successMsg publish\nfalse""")
-  }
-
   /**
    * Tests creating an action from a malformed js file. This should fail in
    * some way - preferably when trying to create the action. If not, then