observer slice test
diff --git a/xos/tosca/tests/allObserverTests.py b/xos/tosca/tests/allObserverTests.py
index 4f832f2..d06daba 100644
--- a/xos/tosca/tests/allObserverTests.py
+++ b/xos/tosca/tests/allObserverTests.py
@@ -2,9 +2,11 @@
 from observerImageTest import ObserverImageTest
 from observerUserTest import ObserverUserTest
 from observerSiteTest import ObserverSiteTest
+from observerSliceTest import ObserverSliceTest
 
 if __name__ == "__main__":
     ObserverComputeTest()
     ObserverImageTest()
     ObserverSiteTest()
     ObserverUserTest()
+    ObserverSliceTest()
diff --git a/xos/tosca/tests/observerSliceTest.py b/xos/tosca/tests/observerSliceTest.py
new file mode 100644
index 0000000..749f4ed
--- /dev/null
+++ b/xos/tosca/tests/observerSliceTest.py
@@ -0,0 +1,48 @@
+from observertest import BaseObserverToscaTest
+
+from core.models import Site, Deployment, Slice, ControllerSlice
+
+# Note that as a side effect, these tests will also create a Site
+
+class ObserverSliceTest(BaseObserverToscaTest):
+    tests = ["create_slice"]
+    # hide_observer_output = False # uncomment to display lots of stuff to screen
+
+    def cleanup(self):
+        # We don't want to leak resources, so we make sure to let the observer
+        # attempt to delete these objects.
+        self.try_to_delete(Slice, purge=False, name="testsite_slice1")
+        self.try_to_delete(Site, purge=False, login_base="testsite")
+        self.run_observer()
+        self.try_to_delete(Slice, purge=True, name="testsite_slice1")
+        self.try_to_delete(Site, purge=True, login_base="testsite")
+
+    def create_slice(self):
+        self.assert_noobj(Site, "testsite")
+        self.assert_noobj(Slice, "testsite_slice1")
+        self.execute(self.make_nodetemplate(self.get_usable_deployment(), "tosca.nodes.Deployment",
+                                            props={"no-delete": True}) +
+                     self.make_nodetemplate("testsite", "tosca.nodes.Site") + \
+                     self.make_nodetemplate("testsite_slice1", "tosca.nodes.Slice", reqs=[("testsite", "tosca.relationships.MemberOfSite")]))
+
+        testsite = self.assert_obj(Site, "testsite")
+        testslice = self.assert_obj(Slice, "testsite_slice1")
+
+        self.run_model_policy(save_output="/tmp/slicetest:create_slice:model_policy")
+
+        # make sure a ControllerSlice object was created
+        cs = ControllerSlice.objects.filter(slice=testslice)
+        assert(len(cs) == 1)
+
+        self.run_observer(save_output="/tmp/slicetest:create_slice:observer")
+
+        testslice = self.assert_obj(Slice, "testsite_slice1")
+
+        cs = ControllerSlice.objects.filter(slice=testslice)
+        assert(len(cs) == 1)
+        assert(cs[0].tenant_id is not None)
+        assert(cs[0].tenant_id != "")
+
+if __name__ == "__main__":
+    ObserverSliceTest()
+