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