diff --git a/tests/src/common/Wsk.scala b/tests/src/common/Wsk.scala
index 8ea9fa2..c3c1c47 100644
--- a/tests/src/common/Wsk.scala
+++ b/tests/src/common/Wsk.scala
@@ -858,11 +858,13 @@
     /**
      * returns user given the auth key
      */
-    def getUser(authKey: String): String = {
+    def getUser(authKey: String): (String, String) = {
         val wskadmin = new RunWskAdminCmd {}
         val user = wskadmin.cli(Seq("user", "whois", authKey)).stdout.trim
         assert(!user.contains("Subject id is not recognized"), s"failed to retrieve user from authkey '$authKey'")
-        user
+
+        val Seq(rawSubject, rawNamespace) = user.lines.toSeq
+        (rawSubject.replaceFirst("subject: ", ""), rawNamespace.replaceFirst("namespace: ", ""))
     }
 }
 
diff --git a/tests/src/whisk/core/admin/WskAdminTests.scala b/tests/src/whisk/core/admin/WskAdminTests.scala
index 43e433f..8b8ee24 100644
--- a/tests/src/whisk/core/admin/WskAdminTests.scala
+++ b/tests/src/whisk/core/admin/WskAdminTests.scala
@@ -53,7 +53,7 @@
         authkey.split(":")(0).length should be(36)
         authkey.split(":")(1).length should be >= 64
 
-        wskadmin.cli(Seq("user", "whois", authkey)).stdout.trim should be(subject)
+        wskadmin.cli(Seq("user", "whois", authkey)).stdout.trim should be(Seq(s"subject: $subject", s"namespace: $subject").mkString("\n"))
         wskadmin.cli(Seq("user", "delete", subject)).stdout should include("Subject deleted")
 
         val recreate = wskadmin.cli(Seq("user", "create", subject, "-u", auth.authkey.compact))
diff --git a/tests/src/whisk/core/cli/test/SequenceMigrationTests.scala b/tests/src/whisk/core/cli/test/SequenceMigrationTests.scala
index ea4921e..ce5ff85 100644
--- a/tests/src/whisk/core/cli/test/SequenceMigrationTests.scala
+++ b/tests/src/whisk/core/cli/test/SequenceMigrationTests.scala
@@ -15,7 +15,6 @@
  */
 package whisk.core.cli.test
 
-
 import java.util.Date
 import scala.concurrent.duration.DurationInt
 import org.junit.runner.RunWith
@@ -57,7 +56,7 @@
     val whiskConfig = new WhiskConfig(WhiskEntityStore.requiredProperties)
     // handle on the entity datastore
     val entityStore = WhiskEntityStore.datastore(whiskConfig)
-    val user = WskAdmin.getUser(wskprops.authKey)
+    val (user, namespace) = WskAdmin.getUser(wskprops.authKey)
     val allowedActionDuration = 120 seconds
 
     behavior of "Sequence Migration"
@@ -67,7 +66,7 @@
             // create entities to insert in the entity store
             val echo = "echo.json"
             val wc = "word_count.json"
-            val seq_echo_wc = "seq_echo_word_count.json"   // old-style sequence
+            val seq_echo_wc = "seq_echo_word_count.json" // old-style sequence
             val entities = Seq(echo, wc, seq_echo_wc)
             implicit val tid = transid() // needed for put db below
             for (entity <- entities) {
@@ -77,7 +76,7 @@
                 val jsonString = try source.mkString finally source.close()
                 val entityJson = jsonString.parseJson.asJsObject
                 // add default namespace (i.e., user) to the json object
-                val entityJsonWithNamespace = JsObject(entityJson.fields + ("namespace" -> JsString(user)))
+                val entityJsonWithNamespace = JsObject(entityJson.fields + ("namespace" -> JsString(namespace)))
                 val wskEntity = entityJsonWithNamespace.convertTo[WhiskAction]
                 put(entityStore, wskEntity)
             }
@@ -93,6 +92,6 @@
     }
 
     after {
-        cleanup()  // cleanup entities from db
+        cleanup() // cleanup entities from db
     }
 }
diff --git a/tests/src/whisk/core/cli/test/WskActionSequenceTests.scala b/tests/src/whisk/core/cli/test/WskActionSequenceTests.scala
index 1f1dde3..56be417 100644
--- a/tests/src/whisk/core/cli/test/WskActionSequenceTests.scala
+++ b/tests/src/whisk/core/cli/test/WskActionSequenceTests.scala
@@ -40,7 +40,7 @@
     implicit val wskprops = WskProps()
     val wsk = new Wsk
     val defaultNamespace = wskprops.namespace
-    val user = WskAdmin.getUser(wskprops.authKey)
+    val (user, namespace) = WskAdmin.getUser(wskprops.authKey)
 
     behavior of "Wsk Action Sequence"
 
@@ -83,5 +83,5 @@
             wsk.parseJsonString(stdout).fields("exec").asJsObject.fields("kind") shouldBe kindValue
     }
 
-    private def resolveDefaultNamespace(actionName: String) = actionName.replace("/_/", s"/$user/")
+    private def resolveDefaultNamespace(actionName: String) = actionName.replace("/_/", s"/$namespace/")
 }
diff --git a/tests/src/whisk/core/cli/test/WskBasicUsageTests.scala b/tests/src/whisk/core/cli/test/WskBasicUsageTests.scala
index f1439f5..70b6319 100644
--- a/tests/src/whisk/core/cli/test/WskBasicUsageTests.scala
+++ b/tests/src/whisk/core/cli/test/WskBasicUsageTests.scala
@@ -476,7 +476,7 @@
 
     it should "invoke an action receiving context properties" in withAssetCleaner(wskprops) {
         (wp, assetHelper) =>
-            val user = WskAdmin.getUser(wskprops.authKey)
+            val (user, namespace) = WskAdmin.getUser(wskprops.authKey)
             val name = "context"
             assetHelper.withCleaner(wsk.action, name) {
                 (action, _) => action.create(name, Some(TestUtils.getTestActionFilename("helloContext.js")))
@@ -490,8 +490,8 @@
                     val fields = activation.response.result.get.convertTo[Map[String, String]]
                     fields("api_host") shouldBe WhiskProperties.getEdgeHost + ":" + WhiskProperties.getEdgeHostApiPort
                     fields("api_key") shouldBe wskprops.authKey
-                    fields("namespace") shouldBe user
-                    fields("action_name") shouldBe s"/$user/$name"
+                    fields("namespace") shouldBe namespace
+                    fields("action_name") shouldBe s"/$namespace/$name"
                     fields("activation_id") shouldBe activation.activationId
                     fields("deadline").toLong should be >= start
             }
