Allow PUT request for package to have optional binding specified as empty JSON object {}.
diff --git a/tests/src/whisk/core/entity/test/SchemaTests.scala b/tests/src/whisk/core/entity/test/SchemaTests.scala
index dcd5e97..3be9a20 100644
--- a/tests/src/whisk/core/entity/test/SchemaTests.scala
+++ b/tests/src/whisk/core/entity/test/SchemaTests.scala
@@ -156,7 +156,7 @@
         FullyQualifiedEntityName.serdesAsDocId.read(names(2)) shouldBe FullyQualifiedEntityName(EntityPath("a"), EntityName("b"))
     }
 
-    /*behavior of "Binding"
+    behavior of "Binding"
 
     it should "desiarilize legacy format" in {
         val names = Seq(
@@ -166,24 +166,31 @@
             JsObject("namespace" -> "a".toJson, "name" -> "b".toJson),
             JsObject("namespace" -> "a".toJson, "path" -> "a".toJson, "name" -> "b".toJson),
             JsObject("name" -> "b".toJson),
-            JsObject())
+            JsObject(),
+            JsNull)
 
-        WhiskPackage.bindingDeserializer.read(names(0)) shouldBe Some(FullyQualifiedEntityName(EntityPath("a"), EntityName("b")))
-        WhiskPackage.bindingDeserializer.read(names(1)) shouldBe Some(FullyQualifiedEntityName(EntityPath("a"), EntityName("b"), Some(SemVer())))
-        WhiskPackage.bindingDeserializer.read(names(2)) shouldBe Some(FullyQualifiedEntityName(EntityPath("a"), EntityName("b")))
-        WhiskPackage.bindingDeserializer.read(names(3)) shouldBe Some(FullyQualifiedEntityName(EntityPath("a"), EntityName("b")))
-        WhiskPackage.bindingDeserializer.read(names(6)) shouldBe None
-        a[DeserializationException] should be thrownBy WhiskPackage.bindingDeserializer.read(names(4))
-        a[DeserializationException] should be thrownBy WhiskPackage.bindingDeserializer.read(names(5))
-    }*/
+        //Binding.optionalBindingDeserializer.read(names(0)) shouldBe Some(Binding(EntityPath("a"), EntityName("b")))
+        //Binding.optionalBindingDeserializer.read(names(1)) shouldBe Some(Binding(EntityPath("a"), EntityName("b"), Some(SemVer())))
+        //Binding.optionalBindingDeserializer.read(names(2)) shouldBe Some(Binding(EntityPath("a"), EntityName("b")))
+        Binding.optionalBindingDeserializer.read(names(3)) shouldBe Some(Binding(EntityPath("a"), EntityName("b")))
+        Binding.optionalBindingDeserializer.read(names(6)) shouldBe None
+        //a[DeserializationException] should be thrownBy Binding.optionalBindingDeserializer.read(names(4))
+        a[DeserializationException] should be thrownBy Binding.optionalBindingDeserializer.read(names(5))
+        a[DeserializationException] should be thrownBy Binding.optionalBindingDeserializer.read(names(7))
+    }
+
+    it should "serialize optional binding to empty object" in {
+        Binding.optionalBindingSerializer.write(None) shouldBe JsObject()
+    }
 
     behavior of "WhiskPackagePut"
 
     it should "deserialize empty request" in {
         WhiskPackagePut.serdes.read(JsObject()) shouldBe WhiskPackagePut()
-        WhiskPackagePut.serdes.read(JsObject("binding" -> JsNull)) shouldBe WhiskPackagePut()
-        //WhiskPackagePut.serdes.read(JsObject("binding" -> JsObject())) shouldBe WhiskPackagePut()
+        //WhiskPackagePut.serdes.read(JsObject("binding" -> JsNull)) shouldBe WhiskPackagePut()
+        WhiskPackagePut.serdes.read(JsObject("binding" -> JsObject())) shouldBe WhiskPackagePut()
         //WhiskPackagePut.serdes.read(JsObject("binding" -> "a/b".toJson)) shouldBe WhiskPackagePut(binding = Some(Binding(EntityPath("a"), EntityName("b"))))
+        a[DeserializationException] should be thrownBy WhiskPackagePut.serdes.read(JsObject("binding" -> JsNull))
     }
 
     behavior of "WhiskPackage"