You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwhisk.apache.org by ho...@apache.org on 2017/07/17 14:10:32 UTC
[incubator-openwhisk-cli] 09/09: Add subject with a namespace.
(#2291)
This is an automated email from the ASF dual-hosted git repository.
houshengbo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-openwhisk-cli.git
commit 7859b711a4a73345f4d60657c040f6089182298b
Author: rodric rabbah <ro...@gmail.com>
AuthorDate: Fri Jul 14 19:02:24 2017 -0400
Add subject with a namespace. (#2291)
- Add a test that should catch future regressions where a key is installed incorrectly.
- Add a helper to retrieve namespace for a key.
- Eliminate use of wskadmin in tests to lookup a namespace from a key.
- Delete deprecated WhiskAuth
- Rename WhiskAuthV2 to WhiskAuth.
- Fix all tests for WhiskAuth removal.
---
.../apigw/healthtests/ApiGwEndToEndTests.scala | 7 +-
.../test/scala/system/basic/WskBasicTests.scala | 340 ++++++++++-----------
.../scala/whisk/core/admin/WskAdminTests.scala | 20 +-
.../scala/whisk/core/cli/test/ApiGwTests.scala | 17 +-
.../core/cli/test/WskActionSequenceTests.scala | 6 +-
.../whisk/core/cli/test/WskBasicUsageTests.scala | 29 +-
.../whisk/core/cli/test/WskEntitlementTests.scala | 3 +-
.../whisk/core/cli/test/WskWebActionsTests.scala | 3 +-
8 files changed, 202 insertions(+), 223 deletions(-)
diff --git a/tests/src/test/scala/apigw/healthtests/ApiGwEndToEndTests.scala b/tests/src/test/scala/apigw/healthtests/ApiGwEndToEndTests.scala
index d1bc472..49cfbf7 100644
--- a/tests/src/test/scala/apigw/healthtests/ApiGwEndToEndTests.scala
+++ b/tests/src/test/scala/apigw/healthtests/ApiGwEndToEndTests.scala
@@ -35,7 +35,6 @@ import common.TestHelpers
import common.TestCLIUtils
import common.TestUtils._
import common.Wsk
-import common.WskAdmin
import common.WskProps
import common.WskPropsV2
import common.WskTestHelpers
@@ -57,7 +56,7 @@ class ApiGwEndToEndTests
implicit val wskprops = WskProps()
val wsk = new Wsk
- val (cliuser, clinamespace) = WskAdmin.getUser(wskprops.authKey)
+ val clinamespace = wsk.namespace.whois()
// Custom CLI properties file
val cliWskPropsFile = File.createTempFile("wskprops", ".tmp")
@@ -85,7 +84,7 @@ class ApiGwEndToEndTests
val urlqueryvalue = "test"
try {
- println("cli user: " + cliuser + "; cli namespace: " + clinamespace)
+ println("cli namespace: " + clinamespace)
// Create the action for the API
val file = TestCLIUtils.getTestActionFilename(s"echo.js")
@@ -155,7 +154,7 @@ class ApiGwEndToEndTests
val urlqueryvalue = "test"
try {
- println("cli user: " + cliuser + "; cli namespace: " + clinamespace)
+ println("cli namespace: " + clinamespace)
// Create the action for the API. It must be a "web-action" action.
val file = TestCLIUtils.getTestActionFilename(s"echo-web-http.js")
diff --git a/tests/src/test/scala/system/basic/WskBasicTests.scala b/tests/src/test/scala/system/basic/WskBasicTests.scala
index 65ebc04..ef86c1b 100644
--- a/tests/src/test/scala/system/basic/WskBasicTests.scala
+++ b/tests/src/test/scala/system/basic/WskBasicTests.scala
@@ -20,6 +20,9 @@ package system.basic
import java.io.File
import java.time.Instant
+import scala.concurrent.duration.DurationInt
+import scala.language.postfixOps
+
import org.junit.runner.RunWith
import org.scalatest.junit.JUnitRunner
@@ -29,12 +32,9 @@ import common.TestUtils._
import common.Wsk
import common.WskProps
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
@@ -138,17 +138,16 @@ class WskBasicTests
"description" -> JsString("Parameter description 2"))))
assetHelper.withCleaner(wsk.pkg, packageName) {
- (pkg, _) =>
- pkg.create(packageName, annotations = packageAnnots)
+ (pkg, _) => pkg.create(packageName, annotations = packageAnnots)
}
wsk.action.create(packageName + "/" + actionName, defaultAction, annotations = actionAnnots)
val stdout = wsk.pkg.get(packageName, summary = true).stdout
- val ns_regex_list = wsk.namespace.list().stdout.trim.replace('\n', '|')
+ val ns = wsk.namespace.whois()
wsk.action.delete(packageName + "/" + actionName)
- stdout should include regex (s"(?i)package /${ns_regex_list}/${packageName}: Package description\\s*\\(parameters: paramName1, paramName2\\)")
- stdout should include regex (s"(?i)action /${ns_regex_list}/${packageName}/${actionName}: Action description\\s*\\(parameters: paramName1, paramName2\\)")
+ stdout should include regex (s"(?i)package /$ns/$packageName: Package description\\s*\\(parameters: paramName1, paramName2\\)")
+ stdout should include regex (s"(?i)action /$ns/$packageName/$actionName: Action description\\s*\\(parameters: paramName1, paramName2\\)")
}
it should "create a package with a name that contains spaces" in withAssetCleaner(wskprops) {
@@ -156,8 +155,7 @@ class WskBasicTests
val name = "package with spaces"
val res = assetHelper.withCleaner(wsk.pkg, name) {
- (pkg, _) =>
- pkg.create(name)
+ (pkg, _) => pkg.create(name)
}
res.stdout should include(s"ok: created package $name")
@@ -173,12 +171,10 @@ class WskBasicTests
(pkg, _) => pkg.create(name, parameters = paramInput)
}
- val expectedParam = JsObject(
- "payload" -> JsString("test"))
-
- val ns_regex_list = wsk.namespace.list().stdout.trim.replace('\n', '|')
+ val expectedParam = JsObject("payload" -> JsString("test"))
+ val ns = wsk.namespace.whois()
- wsk.pkg.get(name, fieldFilter = Some("namespace")).stdout should include regex (s"""(?i)$successMsg namespace\n$ns_regex_list""")
+ wsk.pkg.get(name, fieldFilter = Some("namespace")).stdout should include regex (s"""(?i)$successMsg namespace\n"$ns"""")
wsk.pkg.get(name, fieldFilter = Some("name")).stdout should include(s"""$successMsg name\n"$name"""")
wsk.pkg.get(name, fieldFilter = Some("version")).stdout should include(s"""$successMsg version\n"0.0.1"""")
wsk.pkg.get(name, fieldFilter = Some("publish")).stdout should include(s"""$successMsg publish\nfalse""")
@@ -189,10 +185,9 @@ class WskBasicTests
it should "reject creation of duplication packages" in withAssetCleaner(wskprops) {
val name = "dupePackage"
- (wp, assetHelper) =>
- assetHelper.withCleaner(wsk.pkg, name) {
- (pkg, _) => pkg.create(name)
- }
+ (wp, assetHelper) => assetHelper.withCleaner(wsk.pkg, name) {
+ (pkg, _) => pkg.create(name)
+ }
val stderr = wsk.pkg.create(name, expectedExitCode = CONFLICT).stderr
stderr should include regex (s"""Unable to create package '$name': resource already exists \\(code \\d+\\)""")
@@ -228,6 +223,7 @@ class WskBasicTests
action.create(name, file, parameters = params)
action.create(name, None, parameters = Map("b" -> "B".toJson), update = true)
}
+
val stdout = wsk.action.get(name).stdout
stdout should not include regex(""""key": "a"""")
stdout should not include regex(""""value": "A"""")
@@ -242,13 +238,12 @@ class WskBasicTests
val name = "dupeAction"
val file = Some(TestCLIUtils.getTestActionFilename("echo.js"))
- (wp, assetHelper) =>
- assetHelper.withCleaner(wsk.action, name) {
- (action, _) => action.create(name, file)
- }
+ (wp, assetHelper) => assetHelper.withCleaner(wsk.action, name) {
+ (action, _) => action.create(name, file)
+ }
- val stderr = wsk.action.create(name, file, expectedExitCode = CONFLICT).stderr
- stderr should include regex (s"""Unable to create action '$name': resource already exists \\(code \\d+\\)""")
+ val stderr = wsk.action.create(name, file, expectedExitCode = CONFLICT).stderr
+ stderr should include regex (s"""Unable to create action '$name': resource already exists \\(code \\d+\\)""")
}
it should "reject delete of action that does not exist" in {
@@ -271,40 +266,38 @@ class WskBasicTests
it should "create, and invoke an action that utilizes a docker container" in withAssetCleaner(wskprops) {
val name = "dockerContainer"
- (wp, assetHelper) =>
- assetHelper.withCleaner(wsk.action, name) {
- // this docker image will be need to be pulled from dockerhub and hence has to be published there first
- (action, _) => action.create(name, None, docker = Some("openwhisk/example"))
- }
+ (wp, assetHelper) => assetHelper.withCleaner(wsk.action, name) {
+ // this docker image will be need to be pulled from dockerhub and hence has to be published there first
+ (action, _) => action.create(name, None, docker = Some("openwhisk/example"))
+ }
- val args = Map("payload" -> "test".toJson)
- val run = wsk.action.invoke(name, args)
- withActivation(wsk.activation, run) {
- activation =>
- activation.response.result shouldBe Some(JsObject(
- "args" -> args.toJson,
- "msg" -> "Hello from arbitrary C program!".toJson))
- }
+ val args = Map("payload" -> "test".toJson)
+ val run = wsk.action.invoke(name, args)
+ withActivation(wsk.activation, run) {
+ activation =>
+ activation.response.result shouldBe Some(JsObject(
+ "args" -> args.toJson,
+ "msg" -> "Hello from arbitrary C program!".toJson))
+ }
}
it should "create, and invoke an action that utilizes dockerskeleton with native zip" in withAssetCleaner(wskprops) {
val name = "dockerContainerWithZip"
- (wp, assetHelper) =>
- assetHelper.withCleaner(wsk.action, name) {
- // this docker image will be need to be pulled from dockerhub and hence has to be published there first
- (action, _) => action.create(name, Some(TestCLIUtils.getTestActionFilename("blackbox.zip")), kind = Some("native"))
- }
+ (wp, assetHelper) => assetHelper.withCleaner(wsk.action, name) {
+ // this docker image will be need to be pulled from dockerhub and hence has to be published there first
+ (action, _) => action.create(name, Some(TestCLIUtils.getTestActionFilename("blackbox.zip")), kind = Some("native"))
+ }
- val run = wsk.action.invoke(name, Map())
- withActivation(wsk.activation, run) {
- activation =>
- activation.response.result shouldBe Some(JsObject(
- "msg" -> "hello zip".toJson))
- activation.logs shouldBe defined
- val logs = activation.logs.get.toString
- logs should include("This is an example zip used with the docker skeleton action.")
- logs should not include ("XXX_THE_END_OF_A_WHISK_ACTIVATION_XXX")
- }
+ val run = wsk.action.invoke(name, Map())
+ withActivation(wsk.activation, run) {
+ activation =>
+ activation.response.result shouldBe Some(JsObject(
+ "msg" -> "hello zip".toJson))
+ activation.logs shouldBe defined
+ val logs = activation.logs.get.toString
+ logs should include("This is an example zip used with the docker skeleton action.")
+ logs should not include ("XXX_THE_END_OF_A_WHISK_ACTIVATION_XXX")
+ }
}
it should "create, and invoke an action using a parameter file" in withAssetCleaner(wskprops) {
@@ -312,18 +305,15 @@ class WskBasicTests
val file = Some(TestCLIUtils.getTestActionFilename("argCheck.js"))
val argInput = Some(TestCLIUtils.getTestActionFilename("validInput2.json"))
- (wp, assetHelper) =>
- assetHelper.withCleaner(wsk.action, name) {
- (action, _) => action.create(name, file)
- }
+ (wp, assetHelper) => assetHelper.withCleaner(wsk.action, name) {
+ (action, _) => action.create(name, file)
+ }
- val expectedOutput = JsObject(
- "payload" -> JsString("test"))
- val run = wsk.action.invoke(name, parameterFile = argInput)
- withActivation(wsk.activation, run) {
- activation =>
- activation.response.result shouldBe Some(expectedOutput)
- }
+ val expectedOutput = JsObject("payload" -> JsString("test"))
+ val run = wsk.action.invoke(name, parameterFile = argInput)
+ withActivation(wsk.activation, run) {
+ activation => activation.response.result shouldBe Some(expectedOutput)
+ }
}
it should "create an action, and get its individual fields" in withAssetCleaner(wskprops) {
@@ -331,26 +321,23 @@ class WskBasicTests
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"))
+ (wp, assetHelper) => assetHelper.withCleaner(wsk.action, name) {
+ (action, _) => action.create(name, defaultAction, parameters = paramInput)
+ }
- val ns_regex_list = wsk.namespace.list().stdout.trim.replace('\n', '|')
+ 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(s"""$successMsg""")
- wsk.action.get(name, fieldFilter = Some("exec")).stdout should include regex (s"""$successMsg exec\n\\{\\s+"kind":\\s+"nodejs:6",\\s+"code":\\s+"\\/\\*\\*[\\\\r]*\\\\n \\* Hello, world.[\\\\r]*\\\\n \\*\\/[\\\\r]*\\\\nfunction main\\(params\\) \\{[\\\\r]*\\\\n greeting \\= 'hello, ' \\+ params.payload \\+ '!'[\\\\r]*\\\\n console.log\\(greeting\\);[\\\\r]*\\\\n return \\{payload: greeting\\}[\\\\r]*\\\\n\\}""")
- 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+"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+\\}""")
- wsk.action.get(name, fieldFilter = Some("namespace")).stdout should include regex (s"""(?i)$successMsg namespace\n$ns_regex_list""")
- 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""")
+ 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(s"""$successMsg""")
+ wsk.action.get(name, fieldFilter = Some("exec")).stdout should include regex (s"""$successMsg exec\n\\{\\s+"kind":\\s+"nodejs:6",\\s+"code":\\s+"\\/\\*\\*[\\\\r]*\\\\n \\* Hello, world.[\\\\r]*\\\\n \\*\\/[\\\\r]*\\\\nfunction main\\(params\\) \\{[\\\\r]*\\\\n greeting \\= 'hello, ' \\+ params.payload \\+ '!'[\\\\r]*\\\\n console.log\\(greeting\\);[\\\\r]*\\\\n return \\{payload: greeting\\}[\\\\r]*\\\\n\\}""")
+ 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+"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+\\}""")
+ 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""")
}
/**
@@ -414,6 +401,7 @@ class WskBasicTests
assetHelper.withCleaner(wsk.action, name) {
(action, _) => action.create(name, Some(TestCLIUtils.getTestActionFilename("wc.js")))
}
+
wsk.action.invoke(name, Map("payload" -> "one two three".toJson), result = true)
.stdout should include regex (""""count": 3""")
}
@@ -437,9 +425,9 @@ class WskBasicTests
}
val stdout = wsk.action.get(name, summary = true).stdout
- val ns_regex_list = wsk.namespace.list().stdout.trim.replace('\n', '|')
+ val ns = wsk.namespace.whois()
- stdout should include regex (s"(?i)action /${ns_regex_list}/${name}: Action description\\s*\\(parameters: paramName1, paramName2\\)")
+ stdout should include regex (s"(?i)action /$ns/$name: Action description\\s*\\(parameters: paramName1, paramName2\\)")
}
it should "create an action with a name that contains spaces" in withAssetCleaner(wskprops) {
@@ -484,12 +472,11 @@ class WskBasicTests
it should "create, and get docker action get ensure exec code is omitted" in withAssetCleaner(wskprops) {
val name = "dockerContainer"
- (wp, assetHelper) =>
- assetHelper.withCleaner(wsk.action, name) {
- (action, _) => action.create(name, None, docker = Some("fake-container"))
- }
+ (wp, assetHelper) => assetHelper.withCleaner(wsk.action, name) {
+ (action, _) => action.create(name, None, docker = Some("fake-container"))
+ }
- wsk.action.get(name).stdout should not include (""""code"""")
+ wsk.action.get(name).stdout should not include (""""code"""")
}
behavior of "Wsk Trigger CLI"
@@ -548,9 +535,9 @@ class WskBasicTests
}
val stdout = wsk.trigger.get(name, summary = true).stdout
- val ns_regex_list = wsk.namespace.list().stdout.trim.replace('\n', '|')
+ val ns = wsk.namespace.whois()
- stdout should include regex (s"trigger /${ns_regex_list}/${name}: Trigger description\\s*\\(parameters: paramName1, paramName2\\)")
+ stdout should include regex (s"trigger /$ns/$name: Trigger description\\s*\\(parameters: paramName1, paramName2\\)")
}
it should "create a trigger with a name that contains spaces" in withAssetCleaner(wskprops) {
@@ -558,8 +545,7 @@ class WskBasicTests
val name = "trigger with spaces"
val res = assetHelper.withCleaner(wsk.trigger, name) {
- (trigger, _) =>
- trigger.create(name)
+ (trigger, _) => trigger.create(name)
}
res.stdout should include regex (s"ok: created trigger $name")
@@ -570,19 +556,15 @@ class WskBasicTests
val file = Some(TestCLIUtils.getTestActionFilename("argCheck.js"))
val argInput = Some(TestCLIUtils.getTestActionFilename("validInput2.json"))
- (wp, assetHelper) =>
- assetHelper.withCleaner(wsk.trigger, name) {
- (trigger, _) =>
- trigger.create(name)
- }
+ (wp, assetHelper) => assetHelper.withCleaner(wsk.trigger, name) {
+ (trigger, _) => trigger.create(name)
+ }
- val expectedOutput = JsObject(
- "payload" -> JsString("test"))
- val run = wsk.trigger.fire(name, parameterFile = argInput)
- withActivation(wsk.activation, run) {
- activation =>
- activation.response.result shouldBe Some(expectedOutput)
- }
+ val expectedOutput = JsObject("payload" -> JsString("test"))
+ val run = wsk.trigger.fire(name, parameterFile = argInput)
+ withActivation(wsk.activation, run) {
+ activation => activation.response.result shouldBe Some(expectedOutput)
+ }
}
it should "create a trigger, and get its individual fields" in withAssetCleaner(wskprops) {
@@ -590,53 +572,47 @@ class WskBasicTests
val paramInput = Map("payload" -> "test".toJson)
val successMsg = s"ok: got trigger $name, displaying field"
- (wp, assetHelper) =>
- assetHelper.withCleaner(wsk.trigger, name) {
- (trigger, _) =>
- trigger.create(name, parameters = paramInput)
- }
-
- val expectedParam = JsObject(
- "payload" -> JsString("test"))
+ (wp, assetHelper) => assetHelper.withCleaner(wsk.trigger, name) {
+ (trigger, _) => trigger.create(name, parameters = paramInput)
+ }
- val ns_regex_list = wsk.namespace.list().stdout.trim.replace('\n', '|')
+ val expectedParam = JsObject("payload" -> JsString("test"))
+ val ns = wsk.namespace.whois()
- wsk.trigger.get(name, fieldFilter = Some("namespace")).stdout should include regex (s"""(?i)$successMsg namespace\n$ns_regex_list""")
- wsk.trigger.get(name, fieldFilter = Some("name")).stdout should include(s"""$successMsg name\n"$name"""")
- wsk.trigger.get(name, fieldFilter = Some("version")).stdout should include(s"""$successMsg version\n"0.0.1"""")
- wsk.trigger.get(name, fieldFilter = Some("publish")).stdout should include(s"""$successMsg publish\nfalse""")
- wsk.trigger.get(name, fieldFilter = Some("annotations")).stdout should include(s"""$successMsg annotations\n[]""")
- wsk.trigger.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.trigger.get(name, fieldFilter = Some("limits")).stdout should include(s"""$successMsg limits\n{}""")
- wsk.trigger.get(name, fieldFilter = Some("invalid"), expectedExitCode = ERROR_EXIT).stderr should include("error: Invalid field filter 'invalid'.")
+ wsk.trigger.get(name, fieldFilter = Some("namespace")).stdout should include regex (s"""(?i)$successMsg namespace\n"$ns"""")
+ wsk.trigger.get(name, fieldFilter = Some("name")).stdout should include(s"""$successMsg name\n"$name"""")
+ wsk.trigger.get(name, fieldFilter = Some("version")).stdout should include(s"""$successMsg version\n"0.0.1"""")
+ wsk.trigger.get(name, fieldFilter = Some("publish")).stdout should include(s"""$successMsg publish\nfalse""")
+ wsk.trigger.get(name, fieldFilter = Some("annotations")).stdout should include(s"""$successMsg annotations\n[]""")
+ wsk.trigger.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.trigger.get(name, fieldFilter = Some("limits")).stdout should include(s"""$successMsg limits\n{}""")
+ 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)
+ (trigger, _) => trigger.create(name)
}
val run = wsk.trigger.fire(name)
withActivation(wsk.activation, run) {
- activation =>
- activation.response.result shouldBe Some(JsObject())
+ activation => activation.response.result shouldBe Some(JsObject())
}
}
it should "reject creation of duplicate triggers" in withAssetCleaner(wskprops) {
val name = "dupeTrigger"
- (wp, assetHelper) =>
- assetHelper.withCleaner(wsk.trigger, name) {
- (trigger, _) => trigger.create(name)
- }
+ (wp, assetHelper) => assetHelper.withCleaner(wsk.trigger, name) {
+ (trigger, _) => trigger.create(name)
+ }
val stderr = wsk.trigger.create(name, expectedExitCode = CONFLICT).stderr
stderr should include regex (s"""Unable to create trigger '$name': resource already exists \\(code \\d+\\)""")
}
+
it should "reject delete of trigger that does not exist" in {
val name = "nonexistentTrigger"
val stderr = wsk.trigger.delete(name, expectedExitCode = NOT_FOUND).stderr
@@ -698,8 +674,7 @@ class WskBasicTests
(action, name) => action.create(name, defaultAction)
}
assetHelper.withCleaner(wsk.rule, ruleName) {
- (rule, name) =>
- rule.create(name, trigger = triggerName, action = actionName)
+ (rule, name) => rule.create(name, trigger = triggerName, action = actionName)
}
val stdout = wsk.rule.get(ruleName).stdout
@@ -721,11 +696,12 @@ class WskBasicTests
assetHelper.withCleaner(wsk.rule, ruleName, confirmDelete = false) {
(rule, name) => rule.create(name, trigger = triggerName, action = actionName)
}
+
// Summary namespace should match one of the allowable namespaces (typically 'guest')
- val ns_regex_list = wsk.namespace.list().stdout.trim.replace('\n', '|')
+ val ns = wsk.namespace.whois()
val stdout = wsk.rule.get(ruleName, summary = true).stdout
- stdout should include regex (s"(?i)rule /${ns_regex_list}/${ruleName}\\s*\\(status: active\\)")
+ stdout should include regex (s"(?i)rule /$ns/$ruleName\\s*\\(status: active\\)")
}
it should "create a rule, and get its individual fields" in withAssetCleaner(wskprops) {
@@ -735,32 +711,29 @@ class WskBasicTests
val paramInput = Map("payload" -> "test".toJson)
val successMsg = s"ok: got rule $ruleName, displaying field"
- (wp, assetHelper) =>
- assetHelper.withCleaner(wsk.trigger, triggerName) {
- (trigger, name) => trigger.create(name)
- }
- assetHelper.withCleaner(wsk.action, actionName) {
- (action, name) => action.create(name, defaultAction)
- }
- assetHelper.withCleaner(wsk.rule, ruleName) {
- (rule, name) =>
- rule.create(name, trigger = triggerName, action = actionName)
- }
-
- val ns_regex_list = wsk.namespace.list().stdout.trim.replace('\n', '|')
+ (wp, assetHelper) => assetHelper.withCleaner(wsk.trigger, triggerName) {
+ (trigger, name) => trigger.create(name)
+ }
+ assetHelper.withCleaner(wsk.action, actionName) {
+ (action, name) => action.create(name, defaultAction)
+ }
+ assetHelper.withCleaner(wsk.rule, ruleName) {
+ (rule, name) => rule.create(name, trigger = triggerName, action = actionName)
+ }
- wsk.rule.get(ruleName, fieldFilter = Some("namespace")).stdout should include regex (s"""(?i)$successMsg namespace\n$ns_regex_list""")
- wsk.rule.get(ruleName, fieldFilter = Some("name")).stdout should include(s"""$successMsg name\n"$ruleName"""")
- wsk.rule.get(ruleName, fieldFilter = Some("version")).stdout should include(s"""$successMsg version\n"0.0.1"\n""")
- wsk.rule.get(ruleName, fieldFilter = Some("status")).stdout should include(s"""$successMsg status\n"active"""")
- val trigger = wsk.rule.get(ruleName, fieldFilter = Some("trigger")).stdout
- trigger should include regex (s"""$successMsg trigger\n""")
- trigger should include(triggerName)
- trigger should not include (actionName)
- val action = wsk.rule.get(ruleName, fieldFilter = Some("action")).stdout
- action should include regex (s"""$successMsg action\n""")
- action should include(actionName)
- action should not include (triggerName)
+ val ns = wsk.namespace.whois()
+ wsk.rule.get(ruleName, fieldFilter = Some("namespace")).stdout should include regex (s"""(?i)$successMsg namespace\n"$ns"""")
+ wsk.rule.get(ruleName, fieldFilter = Some("name")).stdout should include(s"""$successMsg name\n"$ruleName"""")
+ wsk.rule.get(ruleName, fieldFilter = Some("version")).stdout should include(s"""$successMsg version\n"0.0.1"\n""")
+ wsk.rule.get(ruleName, fieldFilter = Some("status")).stdout should include(s"""$successMsg status\n"active"""")
+ val trigger = wsk.rule.get(ruleName, fieldFilter = Some("trigger")).stdout
+ trigger should include regex (s"""$successMsg trigger\n""")
+ trigger should include(triggerName)
+ trigger should not include (actionName)
+ val action = wsk.rule.get(ruleName, fieldFilter = Some("action")).stdout
+ action should include regex (s"""$successMsg action\n""")
+ action should include(actionName)
+ action should not include (triggerName)
}
it should "reject creation of duplicate rules" in withAssetCleaner(wskprops) {
@@ -768,17 +741,15 @@ class WskBasicTests
val triggerName = "triggerName"
val actionName = "actionName"
- (wp, assetHelper) =>
- assetHelper.withCleaner(wsk.trigger, triggerName) {
- (trigger, name) => trigger.create(name)
- }
- assetHelper.withCleaner(wsk.action, actionName) {
- (action, name) => action.create(name, defaultAction)
- }
- assetHelper.withCleaner(wsk.rule, ruleName) {
- (rule, name) =>
- rule.create(name, trigger = triggerName, action = actionName)
- }
+ (wp, assetHelper) => assetHelper.withCleaner(wsk.trigger, triggerName) {
+ (trigger, name) => trigger.create(name)
+ }
+ assetHelper.withCleaner(wsk.action, actionName) {
+ (action, name) => action.create(name, defaultAction)
+ }
+ assetHelper.withCleaner(wsk.rule, ruleName) {
+ (rule, name) => rule.create(name, trigger = triggerName, action = actionName)
+ }
val stderr = wsk.rule.create(ruleName, trigger = triggerName, action = actionName, expectedExitCode = CONFLICT).stderr
stderr should include regex (s"""Unable to create rule '$ruleName': resource already exists \\(code \\d+\\)""")
@@ -817,8 +788,10 @@ class WskBasicTests
behavior of "Wsk Namespace CLI"
it should "return a list of exactly one namespace" in {
- wsk.namespace.list().
- stdout.lines should have size 2 // headline + namespace
+ val lines = wsk.namespace.list().stdout.lines.toSeq
+ lines should have size 2
+ lines.head shouldBe "namespaces"
+ lines(1).trim should not be empty
}
it should "list entities in default namespace" in {
@@ -846,13 +819,12 @@ class WskBasicTests
trigger.create(name)
}
- val ns_regex_list = wsk.namespace.list().stdout.trim.replace('\n', '|')
-
+ val ns = s""""${wsk.namespace.whois()}""""
val run = wsk.trigger.fire(name)
withActivation(wsk.activation, run) {
activation =>
val successMsg = s"ok: got activation ${activation.activationId}, displaying field"
- wsk.activation.get(Some(activation.activationId), fieldFilter = Some("namespace")).stdout should include regex (s"""(?i)$successMsg namespace\n$ns_regex_list""")
+ wsk.activation.get(Some(activation.activationId), fieldFilter = Some("namespace")).stdout should include regex (s"""(?i)$successMsg namespace\n$ns""")
wsk.activation.get(Some(activation.activationId), fieldFilter = Some("name")).stdout should include(s"""$successMsg name\n"$name"""")
wsk.activation.get(Some(activation.activationId), fieldFilter = Some("version")).stdout should include(s"""$successMsg version\n"0.0.1"""")
wsk.activation.get(Some(activation.activationId), fieldFilter = Some("publish")).stdout should include(s"""$successMsg publish\nfalse""")
@@ -866,19 +838,19 @@ class WskBasicTests
}
it should "reject get of activation that does not exist" in {
- val name = "0"*32
+ val name = "0" * 32
val stderr = wsk.activation.get(Some(name), expectedExitCode = NOT_FOUND).stderr
stderr should include regex (s"""Unable to get activation '$name': The requested resource does not exist. \\(code \\d+\\)""")
}
it should "reject logs of activation that does not exist" in {
- val name = "0"*32
+ val name = "0" * 32
val stderr = wsk.activation.logs(Some(name), expectedExitCode = NOT_FOUND).stderr
stderr should include regex (s"""Unable to get logs for activation '$name': The requested resource does not exist. \\(code \\d+\\)""")
}
it should "reject result of activation that does not exist" in {
- val name = "0"*32
+ val name = "0" * 32
val stderr = wsk.activation.result(Some(name), expectedExitCode = NOT_FOUND).stderr
stderr should include regex (s"""Unable to get result for activation '$name': The requested resource does not exist. \\(code \\d+\\)""")
}
@@ -895,7 +867,7 @@ class WskBasicTests
val includeID = wsk.activation.extractActivationId(lastInvoke).get
Thread.sleep(1000)
- var lastFlag = Seq (
+ val lastFlag = Seq(
(Seq("activation", "get", "publish", "--last"), includeID),
(Seq("activation", "get", "--last"), includeID),
(Seq("activation", "logs", "--last"), includeStr),
@@ -912,15 +884,15 @@ class WskBasicTests
(wp, assetHelper) =>
val auth: Seq[String] = Seq("--auth", wskprops.authKey)
- assetHelper.withCleaner(wsk.action, "lastName") {
- (action, _) => wsk.action.create("lastName", defaultAction)
- }
+ assetHelper.withCleaner(wsk.action, "lastName") {
+ (action, _) => wsk.action.create("lastName", defaultAction)
+ }
val lastId = wsk.activation.extractActivationId(wsk.action.invoke("lastName")).get
val tooManyArgsMsg = s"${lastId}. An activation ID is required."
val invalidField = s"Invalid field filter '${lastId}'."
Thread.sleep(1000)
- var invalidCmd = Seq (
+ val invalidCmd = Seq(
(Seq("activation", "get", s"$lastId", "publish", "--last"), tooManyArgsMsg),
(Seq("activation", "get", s"$lastId", "--last"), invalidField),
(Seq("activation", "logs", s"$lastId", "--last"), tooManyArgsMsg),
@@ -931,5 +903,5 @@ class WskBasicTests
val stderr = wsk.cli(cmd ++ wskprops.overrides ++ auth, expectedExitCode = ERROR_EXIT).stderr
stderr should include(err)
}
- }
+ }
}
diff --git a/tests/src/test/scala/whisk/core/admin/WskAdminTests.scala b/tests/src/test/scala/whisk/core/admin/WskAdminTests.scala
index e5ab26c..ec4cf59 100644
--- a/tests/src/test/scala/whisk/core/admin/WskAdminTests.scala
+++ b/tests/src/test/scala/whisk/core/admin/WskAdminTests.scala
@@ -25,10 +25,11 @@ import org.scalatest.junit.JUnitRunner
import common.RunWskAdminCmd
import common.TestHelpers
+import common.Wsk
import common.WskAdmin
+import common.WskProps
import whisk.core.entity.AuthKey
import whisk.core.entity.Subject
-import whisk.core.entity.WhiskAuth
@RunWith(classOf[JUnitRunner])
class WskAdminTests
@@ -43,8 +44,8 @@ class WskAdminTests
it should "CRD a subject" in {
val wskadmin = new RunWskAdminCmd {}
- val auth = WhiskAuth(Subject(), AuthKey())
- val subject = auth.subject.asString
+ val auth = AuthKey()
+ val subject = Subject().asString
try {
println(s"CRD subject: $subject")
val create = wskadmin.cli(Seq("user", "create", subject))
@@ -67,14 +68,14 @@ class WskAdminTests
// recreate with explicit
val newspace = s"${subject}.myspace"
- wskadmin.cli(Seq("user", "create", subject, "-ns", newspace, "-u", auth.authkey.compact))
+ wskadmin.cli(Seq("user", "create", subject, "-ns", newspace, "-u", auth.compact))
whisk.utils.retry({
// reverse lookup by namespace
- wskadmin.cli(Seq("user", "list", "-k", newspace)).stdout.trim should be(auth.authkey.compact)
+ wskadmin.cli(Seq("user", "list", "-k", newspace)).stdout.trim should be(auth.compact)
}, 10, Some(1.second))
- wskadmin.cli(Seq("user", "get", subject, "-ns", newspace)).stdout.trim should be(auth.authkey.compact)
+ wskadmin.cli(Seq("user", "get", subject, "-ns", newspace)).stdout.trim should be(auth.compact)
// delete namespace
wskadmin.cli(Seq("user", "delete", subject, "-ns", newspace)).stdout should include("Namespace deleted")
@@ -83,4 +84,11 @@ class WskAdminTests
}
}
+ it should "verify guest account installed correctly" in {
+ val wskadmin = new RunWskAdminCmd {}
+ implicit val wskprops = WskProps()
+ val wsk = new Wsk
+ val ns = wsk.namespace.whois()
+ wskadmin.cli(Seq("user", "get", ns)).stdout.trim should be(wskprops.authKey)
+ }
}
diff --git a/tests/src/test/scala/whisk/core/cli/test/ApiGwTests.scala b/tests/src/test/scala/whisk/core/cli/test/ApiGwTests.scala
index aadb929..aa3fd84 100644
--- a/tests/src/test/scala/whisk/core/cli/test/ApiGwTests.scala
+++ b/tests/src/test/scala/whisk/core/cli/test/ApiGwTests.scala
@@ -29,7 +29,6 @@ import common.TestUtils._
import common.TestCLIUtils
import common.WhiskProperties
import common.Wsk
-import common.WskAdmin
import common.WskProps
import common.WskPropsV2
import common.WskTestHelpers
@@ -45,7 +44,7 @@ class ApiGwTests
implicit var wskprops = WskProps()
val wsk = new Wsk
- val (cliuser, clinamespace) = WskAdmin.getUser(wskprops.authKey)
+ val clinamespace = wsk.namespace.whois()
// This test suite makes enough CLI invocations in 60 seconds to trigger the OpenWhisk
// throttling restriction. To avoid CLI failures due to being throttled, track the
@@ -229,7 +228,7 @@ class ApiGwTests
val testapiname = testName + " API Name"
val actionName = testName + "_action"
try {
- println("cli user: " + cliuser + "; cli namespace: " + clinamespace)
+ println("cli namespace: " + clinamespace)
var rr = apiCreateExperimental(basepath = Some(testbasepath), relpath = Some(testrelpath), operation = Some(testurlop), action = Some(actionName), apiname = Some(testapiname))
println("api create: " + rr.stdout)
@@ -259,7 +258,7 @@ class ApiGwTests
val testapiname = testName+" API Name"
val actionName = testName+"_action"
try {
- println("cli user: "+cliuser+"; cli namespace: "+clinamespace)
+ println("cli namespace: "+clinamespace)
var rr = apiCreateExperimental(basepath = Some(testbasepath), relpath = Some(testrelpath), operation = Some(testurlop), action = Some(actionName), apiname = Some(testapiname))
rr.stdout should include("ok: created API")
@@ -434,7 +433,7 @@ class ApiGwTests
val testapiname = testName+" API Name"
val actionName = testName+"a-c@t ion"
try {
- println("cli user: "+cliuser+"; cli namespace: "+clinamespace)
+ println("cli namespace: "+clinamespace)
var rr = apiCreateExperimental(basepath = Some(testbasepath), relpath = Some(testrelpath), operation = Some(testurlop), action = Some(actionName), apiname = Some(testapiname))
rr.stdout should include("ok: created API")
@@ -612,7 +611,7 @@ class ApiGwTests
val testapiname = testName + " API Name"
val actionName = testName + "_action"
try {
- println("cli user: " + cliuser + "; cli namespace: " + clinamespace)
+ println("cli namespace: " + clinamespace)
// Create the action for the API. It must be a "web-action" action.
val file = TestCLIUtils.getTestActionFilename(s"echo.js")
wsk.action.create(name = actionName, artifact = Some(file), expectedExitCode = SUCCESS_EXIT, web = Some("true"))
@@ -646,7 +645,7 @@ class ApiGwTests
val testapiname = testName+" API Name"
val actionName = testName+"_action"
try {
- println("cli user: "+cliuser+"; cli namespace: "+clinamespace)
+ println("cli namespace: "+clinamespace)
// Create the action for the API. It must be a "web-action" action.
val file = TestCLIUtils.getTestActionFilename(s"echo.js")
@@ -856,7 +855,7 @@ class ApiGwTests
val testapiname = testName+" API Name"
val actionName = testName+"a-c@t ion"
try {
- println("cli user: "+cliuser+"; cli namespace: "+clinamespace)
+ println("cli namespace: "+clinamespace)
// Create the action for the API. It must be a "web-action" action.
val file = TestCLIUtils.getTestActionFilename(s"echo.js")
wsk.action.create(name = actionName, artifact = Some(file), expectedExitCode = SUCCESS_EXIT, web = Some("true"))
@@ -1256,7 +1255,7 @@ class ApiGwTests
val wskpropsBackup = wskprops
try {
// Create the action for the API.
- val file = TestUtils.getTestActionFilename(s"echo.js")
+ val file = TestCLIUtils.getTestActionFilename(s"echo.js")
wsk.action.create(name = actionName, artifact = Some(file), expectedExitCode = SUCCESS_EXIT, web = Some("true"))
// Set an invalid auth key
diff --git a/tests/src/test/scala/whisk/core/cli/test/WskActionSequenceTests.scala b/tests/src/test/scala/whisk/core/cli/test/WskActionSequenceTests.scala
index d6a2fab..84d4a82 100644
--- a/tests/src/test/scala/whisk/core/cli/test/WskActionSequenceTests.scala
+++ b/tests/src/test/scala/whisk/core/cli/test/WskActionSequenceTests.scala
@@ -23,10 +23,10 @@ import org.scalatest.junit.JUnitRunner
import common.TestHelpers
import common.TestCLIUtils
import common.Wsk
-import common.WskAdmin
import common.WskProps
import common.WskTestHelpers
import spray.json._
+import whisk.core.entity.EntityPath
/**
* Tests creation and retrieval of a sequence action
@@ -38,8 +38,8 @@ class WskActionSequenceTests
implicit val wskprops = WskProps()
val wsk = new Wsk
- val defaultNamespace = wskprops.namespace
- val (user, namespace) = WskAdmin.getUser(wskprops.authKey)
+ val defaultNamespace = EntityPath.DEFAULT.asString
+ val namespace = wsk.namespace.whois()
behavior of "Wsk Action Sequence"
diff --git a/tests/src/test/scala/whisk/core/cli/test/WskBasicUsageTests.scala b/tests/src/test/scala/whisk/core/cli/test/WskBasicUsageTests.scala
index ea2c8d4..987d0ae 100644
--- a/tests/src/test/scala/whisk/core/cli/test/WskBasicUsageTests.scala
+++ b/tests/src/test/scala/whisk/core/cli/test/WskBasicUsageTests.scala
@@ -22,6 +22,8 @@ import java.io.BufferedWriter
import java.io.FileWriter
import java.time.Instant
import java.net.URLEncoder
+import java.nio.charset.StandardCharsets
+import java.time.Clock
import scala.language.postfixOps
import scala.concurrent.duration.Duration
@@ -50,8 +52,6 @@ import whisk.core.entity.size.SizeInt
import whisk.utils.retry
import JsonArgsForTests._
import whisk.http.Messages
-import common.WskAdmin
-import java.time.Clock
/**
* Tests for basic CLI usage. Some of these tests require a deployed backend.
@@ -98,10 +98,13 @@ class WskBasicUsageTests
it should "set apihost, auth, and namespace" in {
val tmpwskprops = File.createTempFile("wskprops", ".tmp")
try {
- val namespace = wsk.namespace.list().stdout.trim.split("\n").last
+ val namespace = wsk.namespace.whois()
val env = Map("WSK_CONFIG_FILE" -> tmpwskprops.getAbsolutePath())
- val stdout = wsk.cli(Seq("property", "set", "-i", "--apihost", wskprops.apihost, "--auth", wskprops.authKey,
- "--namespace", namespace), env = env).stdout
+ val stdout = wsk.cli(Seq("property", "set", "-i",
+ "--apihost", wskprops.apihost,
+ "--auth", wskprops.authKey,
+ "--namespace", namespace),
+ env = env).stdout
stdout should include(s"ok: whisk auth set")
stdout should include(s"ok: whisk API host set to ${wskprops.apihost}")
stdout should include(s"ok: whisk namespace set to ${namespace}")
@@ -521,7 +524,7 @@ class WskBasicUsageTests
it should "invoke an action receiving context properties" in withAssetCleaner(wskprops) {
(wp, assetHelper) =>
- val (user, namespace) = WskAdmin.getUser(wskprops.authKey)
+ val namespace = wsk.namespace.whois()
val name = "context"
assetHelper.withCleaner(wsk.action, name) {
(action, _) => action.create(name, Some(TestCLIUtils.getTestActionFilename("helloContext.js")))
@@ -706,11 +709,11 @@ class WskBasicUsageTests
val nonExistentActionName = "non-existence action"
val packagedAction = s"$packageName/$actionName"
val packagedWebAction = s"$packageName/$webActionName"
- val (user, namespace) = WskAdmin.getUser(wskprops.authKey)
- val encodedActionName = URLEncoder.encode(actionName, "UTF-8").replace("+", "%20")
- val encodedPackageName = URLEncoder.encode(packageName, "UTF-8").replace("+", "%20")
- val encodedWebActionName = URLEncoder.encode(webActionName, "UTF-8").replace("+", "%20")
- val encodedNamespace = URLEncoder.encode(namespace, "UTF-8").replace("+", "%20")
+ val namespace = wsk.namespace.whois()
+ val encodedActionName = URLEncoder.encode(actionName, StandardCharsets.UTF_8.name).replace("+", "%20")
+ val encodedPackageName = URLEncoder.encode(packageName, StandardCharsets.UTF_8.name).replace("+", "%20")
+ val encodedWebActionName = URLEncoder.encode(webActionName, StandardCharsets.UTF_8.name).replace("+", "%20")
+ val encodedNamespace = URLEncoder.encode(namespace, StandardCharsets.UTF_8.name).replace("+", "%20")
val actionPath = "https://%s/api/%s/namespaces/%s/actions/%s"
val packagedActionPath = s"$actionPath/%s"
val webActionPath = "https://%s/api/%s/web/%s/%s/%s"
@@ -906,9 +909,9 @@ class WskBasicUsageTests
}
// Summary namespace should match one of the allowable namespaces (typically 'guest')
- val ns_regex_list = wsk.namespace.list().stdout.trim.replace('\n', '|')
+ val ns = wsk.namespace.whois()
val stdout = wsk.trigger.get(triggerName, summary = true).stdout
- stdout should include regex (s"(?i)trigger\\s+/${ns_regex_list}/${triggerName}")
+ stdout should include regex (s"(?i)trigger\\s+/$ns/$triggerName")
}
it should "create a trigger with the proper parameter and annotation escapes" in withAssetCleaner(wskprops) {
diff --git a/tests/src/test/scala/whisk/core/cli/test/WskEntitlementTests.scala b/tests/src/test/scala/whisk/core/cli/test/WskEntitlementTests.scala
index 70de2f8..7f83762 100644
--- a/tests/src/test/scala/whisk/core/cli/test/WskEntitlementTests.scala
+++ b/tests/src/test/scala/whisk/core/cli/test/WskEntitlementTests.scala
@@ -27,7 +27,6 @@ import common.TestUtils.FORBIDDEN
import common.TestUtils.NOT_FOUND
import common.TestUtils.TIMEOUT
import common.Wsk
-import common.WskAdmin
import common.WskProps
import common.WskTestHelpers
import spray.json._
@@ -328,7 +327,7 @@ class WskEntitlementTests
val run = wsk.action.invoke(fullyQualifiedActionName)(defaultWskProps)
withActivation(wsk.activation, run)({ activation =>
- val (_, namespace) = WskAdmin.getUser(defaultWskProps.authKey)
+ val namespace = wsk.namespace.whois()(defaultWskProps)
activation.response.success shouldBe true
activation.response.result.get.toString should include regex (s""""namespace":\\s*"$namespace"""")
})(defaultWskProps)
diff --git a/tests/src/test/scala/whisk/core/cli/test/WskWebActionsTests.scala b/tests/src/test/scala/whisk/core/cli/test/WskWebActionsTests.scala
index 1f38acd..be6ae04 100644
--- a/tests/src/test/scala/whisk/core/cli/test/WskWebActionsTests.scala
+++ b/tests/src/test/scala/whisk/core/cli/test/WskWebActionsTests.scala
@@ -32,7 +32,6 @@ import common.TestHelpers
import common.TestCLIUtils
import common.WhiskProperties
import common.Wsk
-import common.WskAdmin
import common.WskProps
import common.WskTestHelpers
import spray.json._
@@ -132,7 +131,7 @@ trait WskWebActionsTests
val wsk = new Wsk
private implicit val wskprops = WskProps()
- val namespace = WskAdmin.getUser(wskprops.authKey)._2
+ val namespace = wsk.namespace.whois()
protected val testRoutePath: String
--
To stop receiving notification emails like this one, please contact
"commits@openwhisk.apache.org" <co...@openwhisk.apache.org>.