[SEBA-164] Forcing subscriber auth if onu goes down

Change-Id: I6d1b721ac67533fb2b58048666771b50d3a84b2b
diff --git a/xos/synchronizer/model_policies/test_model_policy_att_workflow_driver_serviceinstance.py b/xos/synchronizer/model_policies/test_model_policy_att_workflow_driver_serviceinstance.py
index 4386eb3..774efda 100644
--- a/xos/synchronizer/model_policies/test_model_policy_att_workflow_driver_serviceinstance.py
+++ b/xos/synchronizer/model_policies/test_model_policy_att_workflow_driver_serviceinstance.py
@@ -84,14 +84,17 @@
 
             self.assertIn("has not been synced yet", e.exception.message)
 
-    def test_skip_update(self):
+    def test_defer_update(self):
         self.si.valid = "awaiting"
         self.si.backend_code = 1
 
         with patch.object(RCORDSubscriber, "save") as subscriber_save, \
             patch.object(ONUDevice, "save") as onu_save:
 
-            self.policy.handle_update(self.si)
+            with self.assertRaises(Exception) as e:
+                self.policy.handle_update(self.si)
+
+            self.assertEqual(e.exception.message, "MODEL_POLICY: deferring handle_update for AttWorkflowDriverServiceInstance 98052 as not validated yet")
             subscriber_save.assert_not_called()
             onu_save.assert_not_called()
 
@@ -99,6 +102,7 @@
         self.si.valid = "invalid"
         self.si.serial_number = "BRCM1234"
         self.si.backend_code = 1
+        self.si.onu_state = "ENABLED"
 
         onu = ONUDevice(
             serial_number=self.si.serial_number
@@ -120,6 +124,7 @@
         self.si.serial_number = "BRCM1234"
         self.si.c_tag = None
         self.si.backend_code = 1
+        self.si.onu_state = "ENABLED"
 
         onu = ONUDevice(
             serial_number=self.si.serial_number,
@@ -147,7 +152,7 @@
         self.si.backend_code = 1
         self.si.serial_number = "BRCM1234"
         self.si.authentication_state = "DENIEND"
-        self.si.owner.leaf_model.create_on_discovery = False
+        self.si.onu_state = "ENABLED"
 
         onu = ONUDevice(
             serial_number=self.si.serial_number,
@@ -166,40 +171,37 @@
             onu_save.assert_called()
             self.assertEqual(subscriber_save.call_count, 0)
 
-    def test_create_subscriber(self):
+    def test_subscriber_awaiting_status_onu_state_disabled(self):
         self.si.valid = "valid"
-        self.si.serial_number = "BRCM1234"
         self.si.backend_code = 1
+        self.si.serial_number = "BRCM1234"
+        self.si.onu_state = "DISABLED"
 
         onu = ONUDevice(
             serial_number=self.si.serial_number,
-            admin_state="ENABLED"
+            admin_state="DISABLED"
+        )
+
+        subscriber = RCORDSubscriber(
+            onu_device=self.si.serial_number,
+            status='enabled'
         )
 
         with patch.object(ONUDevice.objects, "get_items") as onu_objects, \
-                patch.object(RCORDSubscriber, "save", autospec=True) as subscriber_save, \
-                patch.object(ONUDevice, "save") as onu_save:
-
+                patch.object(RCORDSubscriber.objects, "get_items") as subscriber_objects, \
+                patch.object(RCORDSubscriber, "save") as subscriber_save:
             onu_objects.return_value = [onu]
+            subscriber_objects.return_value = [subscriber]
 
             self.policy.handle_update(self.si)
-            self.assertEqual(subscriber_save.call_count, 1)
+            self.assertEqual(subscriber.status, "awaiting-auth")
+            subscriber_save.assert_called()
 
-            subscriber = subscriber_save.call_args[0][0]
-            self.assertEqual(subscriber.onu_device, self.si.serial_number)
-
-            onu_save.assert_not_called()
-    
-    def test_create_subscriber_no_create_on_discovery(self):
-        """
-        test_create_subscriber_no_create_on_discovery
-        When si.owner.create_on_discovery = False we still need to create the subscriber after authentication
-        """
-
+    def test_subscriber_enable_status_auth_state_approved(self):
         self.si.valid = "valid"
-        self.si.serial_number = "BRCM1234"
         self.si.backend_code = 1
-        self.si.owner.leaf_model.create_on_discovery = False
+        self.si.serial_number = "BRCM1234"
+        self.si.onu_state = "ENABLED"
         self.si.authentication_state = "APPROVED"
 
         onu = ONUDevice(
@@ -207,19 +209,20 @@
             admin_state="ENABLED"
         )
 
-        with patch.object(ONUDevice.objects, "get_items") as onu_objects, \
-                patch.object(RCORDSubscriber, "save", autospec=True) as subscriber_save, \
-                patch.object(ONUDevice, "save") as onu_save:
+        subscriber = RCORDSubscriber(
+            onu_device=self.si.serial_number,
+            status='awaiting-auth'
+        )
 
+        with patch.object(ONUDevice.objects, "get_items") as onu_objects, \
+                patch.object(RCORDSubscriber.objects, "get_items") as subscriber_objects, \
+                patch.object(RCORDSubscriber, "save") as subscriber_save:
             onu_objects.return_value = [onu]
+            subscriber_objects.return_value = [subscriber]
 
             self.policy.handle_update(self.si)
-            self.assertEqual(subscriber_save.call_count, 1)
-
-            subscriber = subscriber_save.call_args[0][0]
-            self.assertEqual(subscriber.onu_device, self.si.serial_number)
-
-            onu_save.assert_not_called()
+            self.assertEqual(subscriber.status, "enabled")
+            subscriber_save.assert_called()
 
 if __name__ == '__main__':
     unittest.main()