diff --git a/tests/src/whisk/core/cli/test/WskBasicUsageTests.scala b/tests/src/whisk/core/cli/test/WskBasicUsageTests.scala
index 6e89030..b0b2e04 100644
--- a/tests/src/whisk/core/cli/test/WskBasicUsageTests.scala
+++ b/tests/src/whisk/core/cli/test/WskBasicUsageTests.scala
@@ -22,6 +22,7 @@
 import scala.language.postfixOps
 import scala.concurrent.duration.Duration
 import scala.concurrent.duration.DurationInt
+import scala.util.Random
 
 import org.apache.commons.io.FileUtils
 import org.junit.runner.RunWith
@@ -401,6 +402,24 @@
             }
     }
 
+    it should "create, and invoke an action that utilizes an invalid docker container with appropriate error" in withAssetCleaner(wskprops) {
+        val name = "invalid dockerContainer"
+        val containerName = s"bogus${Random.alphanumeric.take(16).mkString.toLowerCase}"
+
+        (wp, assetHelper) =>
+            assetHelper.withCleaner(wsk.action, name) {
+                // docker name is a randomly generate string
+                (action, _) => action.create(name, Some(containerName), kind = Some("docker"))
+            }
+
+            val run = wsk.action.invoke(name)
+            withActivation(wsk.activation, run) {
+                activation =>
+                    activation.response.status shouldBe ActivationResponse.messageForCode(ActivationResponse.ApplicationError)
+                    activation.response.result.get.fields("error") shouldBe s"Failed to pull container image '$containerName'.".toJson
+            }
+    }
+
     behavior of "Wsk packages"
 
     it should "create, and get a package to verify annotation parsing" in withAssetCleaner(wskprops) {
diff --git a/tests/src/whisk/core/dispatcher/test/DispatcherTests.scala b/tests/src/whisk/core/dispatcher/test/DispatcherTests.scala
index 7c96f3e..0948d42 100644
--- a/tests/src/whisk/core/dispatcher/test/DispatcherTests.scala
+++ b/tests/src/whisk/core/dispatcher/test/DispatcherTests.scala
@@ -33,19 +33,21 @@
 import common.WskActorSystem
 import spray.json.JsNumber
 import spray.json.JsObject
+import whisk.common.Logging
 import whisk.common.TransactionId
 import whisk.core.connector.{ ActivationMessage => Message }
 import whisk.core.dispatcher.ActivationFeed
-import whisk.core.dispatcher.MessageHandler
 import whisk.core.dispatcher.Dispatcher
+import whisk.core.dispatcher.MessageHandler
 import whisk.core.entity.ActivationId
-import whisk.core.entity.Subject
-import whisk.utils.retry
+import whisk.core.entity.AuthKey
+import whisk.core.entity.DocRevision
 import whisk.core.entity.EntityName
 import whisk.core.entity.EntityPath
 import whisk.core.entity.FullyQualifiedEntityName
-import whisk.common.Logging
-import whisk.core.entity.AuthKey
+import whisk.core.entity.SemVer
+import whisk.core.entity.Subject
+import whisk.utils.retry
 
 @RunWith(classOf[JUnitRunner])
 class DispatcherTests extends FlatSpec with Matchers with WskActorSystem {
@@ -66,8 +68,8 @@
         val content = JsObject("payload" -> JsNumber(count))
         val subject = Subject()
         val authkey = AuthKey()
-        val path = FullyQualifiedEntityName(EntityPath("test"), EntityName(s"count-$count"), None)
-        val msg = Message(TransactionId.testing, path, subject, authkey, ActivationId(), EntityPath(subject()), Some(content))
+        val path = FullyQualifiedEntityName(EntityPath("test"), EntityName(s"count-$count"), SemVer())
+        val msg = Message(TransactionId.testing, path, DocRevision(), subject, authkey, ActivationId(), EntityPath(subject()), Some(content))
         connector.send(msg)
     }
 
@@ -100,7 +102,7 @@
                 Console.withErr(stream) {
                     retry({
                         val logs = stream.toString()
-                        logs should include regex (s"exception while pulling new records: commit failed")
+                        logs should include regex (s"exception while pulling new records *.* commit failed")
                     }, 10, Some(100 milliseconds))
 
                     connector.throwCommitException = false
diff --git a/tests/src/whisk/core/entity/test/SchemaTests.scala b/tests/src/whisk/core/entity/test/SchemaTests.scala
index 2a0f2d3..ae65593 100644
--- a/tests/src/whisk/core/entity/test/SchemaTests.scala
+++ b/tests/src/whisk/core/entity/test/SchemaTests.scala
@@ -45,6 +45,7 @@
 import whisk.core.entity.AuthKey
 import whisk.core.entity.DocId
 import whisk.core.entity.DocInfo
+import whisk.core.entity.DocRevision
 import whisk.core.entity.EntityName
 import whisk.core.entity.Exec
 import whisk.core.entity.LogLimit
@@ -89,6 +90,22 @@
         }
     }
 
+    it should "accept any string as doc revision" in {
+        Seq("a", " a", "a ", "", null).foreach { i =>
+            val d = DocRevision(i)
+            assert(d.rev == (if (i != null) i.trim else null))
+        }
+
+        DocRevision.serdes.read(JsNull) shouldBe DocRevision()
+        DocRevision.serdes.read(JsString("")) shouldBe DocRevision("")
+        DocRevision.serdes.read(JsString("a")) shouldBe DocRevision("a")
+        DocRevision.serdes.read(JsString(" a")) shouldBe DocRevision("a")
+        DocRevision.serdes.read(JsString("a ")) shouldBe DocRevision("a")
+        intercept[DeserializationException] {
+            DocRevision.serdes.read(JsNumber(1))
+        }
+    }
+
     it should "reject malformed doc info" in {
         Seq(null, "", " ").foreach { i =>
             intercept[IllegalArgumentException] {
