You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwhisk.apache.org by cs...@apache.org on 2017/08/01 22:12:03 UTC
[incubator-openwhisk-cli] 04/06: Add a database flag to completely
block a given subject. (#2530)
This is an automated email from the ASF dual-hosted git repository.
csantanapr pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-openwhisk-cli.git
commit 4b9ef6c757cb6f98b8d0f9e294d2470c978d2f66
Author: Markus Thömmes <ma...@me.com>
AuthorDate: Fri Jul 28 15:59:40 2017 +0200
Add a database flag to completely block a given subject. (#2530)
There was no preservative way of blocking a user from the system temporarily before. This adds the functionality to provide a flag in the user's subject entry to block its keys from further usage.
---
.../scala/whisk/core/admin/WskAdminTests.scala | 62 ++++++++++++++++++++++
1 file changed, 62 insertions(+)
diff --git a/tests/src/test/scala/whisk/core/admin/WskAdminTests.scala b/tests/src/test/scala/whisk/core/admin/WskAdminTests.scala
index ec4cf59..0d31758 100644
--- a/tests/src/test/scala/whisk/core/admin/WskAdminTests.scala
+++ b/tests/src/test/scala/whisk/core/admin/WskAdminTests.scala
@@ -30,6 +30,7 @@ import common.WskAdmin
import common.WskProps
import whisk.core.entity.AuthKey
import whisk.core.entity.Subject
+import common.TestUtils
@RunWith(classOf[JUnitRunner])
class WskAdminTests
@@ -91,4 +92,65 @@ class WskAdminTests
val ns = wsk.namespace.whois()
wskadmin.cli(Seq("user", "get", ns)).stdout.trim should be(wskprops.authKey)
}
+
+ it should "block and unblock a user respectively" in {
+ val wskadmin = new RunWskAdminCmd {}
+ val auth = AuthKey()
+ val subject1 = Subject().asString
+ val subject2 = Subject().asString
+ val commonNamespace = "testspace"
+ try {
+ wskadmin.cli(Seq("user", "create", subject1, "-ns", commonNamespace, "-u", auth.compact))
+ wskadmin.cli(Seq("user", "create", subject2, "-ns", commonNamespace))
+
+ whisk.utils.retry({
+ // reverse lookup by namespace
+ val out = wskadmin.cli(Seq("user", "list", "-p", "2", "-k", commonNamespace)).stdout.trim
+ out should include(auth.compact)
+ out.lines should have size 2
+ }, 10, Some(1.second))
+
+ // block the user
+ wskadmin.cli(Seq("user", "block", subject1))
+
+ // wait until the user can no longer be found
+ whisk.utils.retry({
+ wskadmin.cli(Seq("user", "list", "-p", "2", "-k", commonNamespace)).stdout.trim.lines should have size 1
+ }, 10, Some(1.second))
+
+ // unblock the user
+ wskadmin.cli(Seq("user", "unblock", subject1))
+
+ // wait until the user can be found again
+ whisk.utils.retry({
+ val out = wskadmin.cli(Seq("user", "list", "-p", "2", "-k", commonNamespace)).stdout.trim
+ out should include(auth.compact)
+ out.lines should have size 2
+ }, 10, Some(1.second))
+ } finally {
+ wskadmin.cli(Seq("user", "delete", subject1)).stdout should include("Subject deleted")
+ wskadmin.cli(Seq("user", "delete", subject2)).stdout should include("Subject deleted")
+ }
+ }
+
+ it should "not allow edits on a blocked subject" in {
+ val wskadmin = new RunWskAdminCmd {}
+ val subject = Subject().asString
+ try {
+ // initially create the subject
+ wskadmin.cli(Seq("user", "create", subject))
+ // editing works
+ wskadmin.cli(Seq("user", "create", subject, "-ns", "testspace1"))
+ // block it
+ wskadmin.cli(Seq("user", "block", subject))
+ // Try to add a namespace, doesn't work
+ wskadmin.cli(Seq("user", "create", subject, "-ns", "testspace2"), expectedExitCode = TestUtils.ERROR_EXIT)
+ // Unblock the user
+ wskadmin.cli(Seq("user", "unblock", subject))
+ // Adding a namespace works
+ wskadmin.cli(Seq("user", "create", subject, "-ns", "testspace2"))
+ } finally {
+ wskadmin.cli(Seq("user", "delete", subject)).stdout should include("Subject deleted")
+ }
+ }
}
--
To stop receiving notification emails like this one, please contact
"commits@openwhisk.apache.org" <co...@openwhisk.apache.org>.