diff --git a/xos/tosca/tests/basetest.py b/xos/tosca/tests/basetest.py
index 8082f8c..0b5a19d 100644
--- a/xos/tosca/tests/basetest.py
+++ b/xos/tosca/tests/basetest.py
@@ -50,7 +50,9 @@
         obj = cls.objects.get(name=name)
         assert(obj)
         for (k,v) in kwargs.items():
-            assert(getattr(obj,k) == v)
+            if (getattr(obj,k,None) != v):
+                print "Object %s property '%s' is '%s' and should be '%s'" % (obj, k, getattr(obj,k,None), v)
+                assert(False)
 
     def try_to_delete(self, cls, **kwargs):
         objs = cls.objects.filter(**kwargs)
diff --git a/xos/tosca/tests/servicetest.py b/xos/tosca/tests/servicetest.py
index e493461..023c441 100644
--- a/xos/tosca/tests/servicetest.py
+++ b/xos/tosca/tests/servicetest.py
@@ -6,7 +6,8 @@
     tests = ["create_service_minimal",
              "create_service_notpublished",
              "create_service_notenabled",
-             "create_service_public_key"]
+             "create_service_public_key",
+             "update_service_notpublished"]
 
     def cleanup(self):
         self.try_to_delete(Service, name="test_svc")
@@ -31,6 +32,15 @@
         self.execute(self.make_nodetemplate("test_svc", "tosca.nodes.Service", {"public_key": "foobar"}))
         self.assert_obj(Service, "test_svc", kind="generic", published=True, enabled=True, public_key="foobar")
 
+    def update_service_notpublished(self):
+        self.assert_noobj(Service, "test_svc")
+        self.execute(self.make_nodetemplate("test_svc", "tosca.nodes.Service"))
+        self.assert_obj(Service, "test_svc", kind="generic", published=True, enabled=True)
+        original_id = Service.objects.get(name="test_svc").id
+        self.execute(self.make_nodetemplate("test_svc", "tosca.nodes.Service", {"published": False}))
+        self.assert_obj(Service, "test_svc", kind="generic", published=False, enabled=True)
+        assert(Service.objects.get(name="test_svc").id == original_id)
+
 if __name__ == "__main__":
     ServiceTest()
 
