From ffa3d804f9d16b8d9c37d6d56fb1f922a746a6e5 Mon Sep 17 00:00:00 2001
From: Mario Raciti <mario.raciti@inaf.it>
Date: Tue, 2 Mar 2021 16:22:53 +0100
Subject: [PATCH] TMSS-445-merge: Add
 SubtaskViewSet_has_TMSSPermissions_in_permission_classes test; cleanup

---
 .../test/t_permissions_system_roles.py        | 49 +++++++------------
 1 file changed, 18 insertions(+), 31 deletions(-)

diff --git a/SAS/TMSS/backend/test/t_permissions_system_roles.py b/SAS/TMSS/backend/test/t_permissions_system_roles.py
index 59e92962e68..08bb4736240 100755
--- a/SAS/TMSS/backend/test/t_permissions_system_roles.py
+++ b/SAS/TMSS/backend/test/t_permissions_system_roles.py
@@ -113,6 +113,24 @@ class SystemPermissionTestCase(unittest.TestCase):
         cls.to_observer_group = Group.objects.get(name='TO observer')
 
 
+    def test_SubtaskViewSet_has_TMSSPermissions_in_permission_classes(self):
+        # Assert SubtaskViewSet has the TMSSPermissions permission class.
+        from lofar.sas.tmss.tmss.tmssapp.viewsets.permissions import TMSSPermissions
+        from lofar.sas.tmss.tmss.tmssapp.viewsets.scheduling import SubtaskViewSet
+
+        is_in_permission_classes = False
+        for p in SubtaskViewSet.get_permissions(SubtaskViewSet):
+            # Check TMSSPermission is included in the SubtaskViewSet permission classes
+            if not is_in_permission_classes:
+                if type(p).__name__ is TMSSPermissions.__name__:
+                    # Check that it is actually an instance of TMSSPermissions
+                    self.assertTrue(isinstance(p, TMSSPermissions))
+                    is_in_permission_classes = True
+
+        self.assertTrue(is_in_permission_classes,
+                        msg='SubtaskViewSet does not have %s in its permission classes.' % TMSSPermissions.__name__)
+
+
     def test_Subtask_cannot_get_progress_without_to_observer_group(self):
         user = User.objects.get(username='paulus')
         user.groups.set([])
@@ -122,7 +140,6 @@ class SystemPermissionTestCase(unittest.TestCase):
         while user.has_perm('tmssapp.get_progress_subtask'):
             user = User.objects.get(username='paulus')
 
-        # TODO: Check if the SubtaskViewSet has the get_progress_subtask permission
         # Assert TO observer group has the get_progress_subtask permission
         self.assertIsNotNone(self.to_observer_group.permissions.all().filter(codename='get_progress_subtask'))
         # Assert Paulus does not have the get_progress_subtask permission
@@ -142,7 +159,6 @@ class SystemPermissionTestCase(unittest.TestCase):
         while not user.has_perm('tmssapp.get_progress_subtask'):
             user = User.objects.get(username='paulus')
 
-        # TODO: Check if the SubtaskViewSet has the get_progress_subtask permission
         # Assert TO observer group has the get_progress_subtask permission
         self.assertIsNotNone(self.to_observer_group.permissions.all().filter(codename='get_progress_subtask'))
         # Assert Paulus has the get_progress_subtask permission
@@ -163,7 +179,6 @@ class SystemPermissionTestCase(unittest.TestCase):
         while user.has_perm('tmssapp.input_dataproducts_subtask'):
             user = User.objects.get(username='paulus')
 
-        # TODO: Check if the SubtaskViewSet has the input_dataproducts_subtask permission
         # Assert TO observer group has the input_dataproducts_subtask permission
         self.assertIsNotNone(self.to_observer_group.permissions.all().filter(codename='input_dataproducts_subtask'))
         # Assert Paulus does not have the input_dataproducts_subtask permission
@@ -184,7 +199,6 @@ class SystemPermissionTestCase(unittest.TestCase):
         while not user.has_perm('tmssapp.input_dataproducts_subtask'):
             user = User.objects.get(username='paulus')
 
-        # TODO: Check if the SubtaskViewSet has the input_dataproducts_subtask permission
         # Assert TO observer group has the input_dataproducts_subtask permission
         self.assertIsNotNone(self.to_observer_group.permissions.all().filter(codename='input_dataproducts_subtask'))
         # Assert Paulus has the input_dataproducts_subtask permission
@@ -205,7 +219,6 @@ class SystemPermissionTestCase(unittest.TestCase):
         while user.has_perm('tmssapp.output_dataproducts_subtask'):
             user = User.objects.get(username='paulus')
 
-        # TODO: Check if the SubtaskViewSet has the output_dataproducts_subtask permission
         # Assert TO observer group has the output_dataproducts_subtask permission
         self.assertIsNotNone(self.to_observer_group.permissions.all().filter(codename='output_dataproducts_subtask'))
         # Assert Paulus does not have the output_dataproducts_subtask permission
@@ -226,7 +239,6 @@ class SystemPermissionTestCase(unittest.TestCase):
         while not user.has_perm('tmssapp.output_dataproducts_subtask'):
             user = User.objects.get(username='paulus')
 
-        # TODO: Check if the SubtaskViewSet has the output_dataproducts_subtask permission
         # Assert TO observer group has the output_dataproducts_subtask permission
         self.assertIsNotNone(self.to_observer_group.permissions.all().filter(codename='output_dataproducts_subtask'))
         # Assert Paulus has the output_dataproducts_subtask permission
@@ -247,7 +259,6 @@ class SystemPermissionTestCase(unittest.TestCase):
         while user.has_perm('tmssapp.parset_subtask'):
             user = User.objects.get(username='paulus')
 
-        # TODO: Check if the SubtaskViewSet has the parset_subtask permission
         # Assert TO observer group has the parset_subtask permission
         self.assertIsNotNone(self.to_observer_group.permissions.all().filter(codename='parset_subtask'))
         # Assert Paulus does not have the parset_subtask permission
@@ -268,7 +279,6 @@ class SystemPermissionTestCase(unittest.TestCase):
         while not user.has_perm('tmssapp.parset_subtask'):
             user = User.objects.get(username='paulus')
 
-        # TODO: Check if the SubtaskViewSet has the parset_subtask permission
         # Assert TO observer group has the parset_subtask permission
         self.assertIsNotNone(self.to_observer_group.permissions.all().filter(codename='parset_subtask'))
         # Assert Paulus has the parset_subtask permission
@@ -289,7 +299,6 @@ class SystemPermissionTestCase(unittest.TestCase):
         while user.has_perm('tmssapp.predecessors_subtask'):
             user = User.objects.get(username='paulus')
 
-        # TODO: Check if the SubtaskViewSet has the predecessors_subtask permission
         # Assert TO observer group has the predecessors_subtask permission
         self.assertIsNotNone(self.to_observer_group.permissions.all().filter(codename='predecessors_subtask'))
         # Assert Paulus does not have the predecessors_subtask permission
@@ -311,7 +320,6 @@ class SystemPermissionTestCase(unittest.TestCase):
         while not user.has_perm('tmssapp.predecessors_subtask'):
             user = User.objects.get(username='paulus')
 
-        # TODO: Check if the SubtaskViewSet has the predecessors_subtask permission
         # Assert TO observer group has the predecessors_subtask permission
         self.assertIsNotNone(self.to_observer_group.permissions.all().filter(codename='predecessors_subtask'))
         # Assert Paulus has the predecessors_subtask permission
@@ -332,7 +340,6 @@ class SystemPermissionTestCase(unittest.TestCase):
         while user.has_perm('tmssapp.process_feedback_and_set_to_finished_if_complete_subtask'):
             user = User.objects.get(username='paulus')
 
-        # TODO: Check if the SubtaskViewSet has the process_feedback_and_set_to_finished_if_complete_subtask permission
         # Assert TO observer group has the process_feedback_and_set_to_finished_if_complete_subtask permission
         self.assertIsNotNone(self.to_observer_group.permissions.all().filter(codename='process_feedback_and_set_to_finished_if_complete_subtask'))
         # Assert Paulus does not have the process_feedback_and_set_to_finished_if_complete_subtask permission
@@ -353,7 +360,6 @@ class SystemPermissionTestCase(unittest.TestCase):
         while not user.has_perm('tmssapp.process_feedback_and_set_to_finished_if_complete_subtask'):
             user = User.objects.get(username='paulus')
 
-        # TODO: Check if the SubtaskViewSet has the process_feedback_and_set_to_finished_if_complete_subtask permission
         # Assert TO observer group has the process_feedback_and_set_to_finished_if_complete_subtask permission
         self.assertIsNotNone(self.to_observer_group.permissions.all().filter(codename='process_feedback_and_set_to_finished_if_complete_subtask'))
         # Assert Paulus has the process_feedback_and_set_to_finished_if_complete_subtask permission
@@ -379,7 +385,6 @@ class SystemPermissionTestCase(unittest.TestCase):
         while user.has_perm('tmssapp.reprocess_raw_feedback_for_subtask_and_set_to_finished_if_complete_subtask'):
             user = User.objects.get(username='paulus')
 
-        # TODO: Check if the SubtaskViewSet has the reprocess_raw_feedback_for_subtask_and_set_to_finished_if_complete_subtask permission
         # Assert TO observer group has the reprocess_raw_feedback_for_subtask_and_set_to_finished_if_complete_subtask permission
         self.assertIsNotNone(self.to_observer_group.permissions.all().filter(codename='reprocess_raw_feedback_for_subtask_and_set_to_finished_if_complete_subtask'))
         # Assert Paulus does not have the reprocess_raw_feedback_for_subtask_and_set_to_finished_if_complete_subtask permission
@@ -401,7 +406,6 @@ class SystemPermissionTestCase(unittest.TestCase):
         while not user.has_perm('tmssapp.reprocess_raw_feedback_for_subtask_and_set_to_finished_if_complete_subtask'):
             user = User.objects.get(username='paulus')
 
-        # TODO: Check if the SubtaskViewSet has the reprocess_raw_feedback_for_subtask_and_set_to_finished_if_complete_subtask permission
         # Assert TO observer group has the reprocess_raw_feedback_for_subtask_and_set_to_finished_if_complete_subtask permission
         self.assertIsNotNone(self.to_observer_group.permissions.all().filter(codename='reprocess_raw_feedback_for_subtask_and_set_to_finished_if_complete_subtask'))
         # Assert Paulus has the reprocess_raw_feedback_for_subtask_and_set_to_finished_if_complete_subtask permission
@@ -422,7 +426,6 @@ class SystemPermissionTestCase(unittest.TestCase):
         while user.has_perm('tmssapp.schedule_subtask'):
             user = User.objects.get(username='paulus')
 
-        # TODO: Check if the SubtaskViewSet has the schedule_subtask permission
         # Assert TO observer group has the schedule_subtask permission
         self.assertIsNotNone(self.to_observer_group.permissions.all().filter(codename='schedule_subtask'))
         # Assert Paulus does not have the schedule_subtask permission
@@ -444,12 +447,6 @@ class SystemPermissionTestCase(unittest.TestCase):
         while not user.has_perm('tmssapp.schedule_subtask'):
             user = User.objects.get(username='paulus')
 
-        # TODO: Check if the SubtaskViewSet has the schedule_subtask permission
-        # from lofar.sas.tmss.tmss.tmssapp.viewsets.permissions import TMSSPermissions
-        # from lofar.sas.tmss.tmss.tmssapp.viewsets.scheduling import SubtaskViewSet
-        # logger.info('\n\n\n%s\n\n', SubtaskViewSet.get_permissions(SubtaskViewSet)[0])
-        # self.assertIn(TMSSPermissions, SubtaskViewSet.get_permissions(SubtaskViewSet))
-
         # Assert TO observer group has the schedule_subtask permission
         self.assertIsNotNone(self.to_observer_group.permissions.all().filter(codename='schedule_subtask'))
         # Assert Paulus has the schedule_subtask permission
@@ -474,7 +471,6 @@ class SystemPermissionTestCase(unittest.TestCase):
         while user.has_perm('tmssapp.state_log_subtask'):
             user = User.objects.get(username='paulus')
 
-        # TODO: Check if the SubtaskViewSet has the state_log_subtask permission
         # Assert TO observer group has the state_log_subtask permission
         self.assertIsNotNone(self.to_observer_group.permissions.all().filter(codename='state_log_subtask'))
         # Assert Paulus does not have the state_log_subtask permission
@@ -495,7 +491,6 @@ class SystemPermissionTestCase(unittest.TestCase):
         while not user.has_perm('tmssapp.state_log_subtask'):
             user = User.objects.get(username='paulus')
 
-        # TODO: Check if the SubtaskViewSet has the state_log_subtask permission
         # Assert TO observer group has the state_log_subtask permission
         self.assertIsNotNone(self.to_observer_group.permissions.all().filter(codename='state_log_subtask'))
         # Assert Paulus has the state_log_subtask permission
@@ -516,7 +511,6 @@ class SystemPermissionTestCase(unittest.TestCase):
         while user.has_perm('tmssapp.successors_subtask'):
             user = User.objects.get(username='paulus')
 
-        # TODO: Check if the SubtaskViewSet has the successors_subtask permission
         # Assert TO observer group has the successors_subtask permission
         self.assertIsNotNone(self.to_observer_group.permissions.all().filter(codename='successors_subtask'))
         # Assert Paulus does not have the successors_subtask permission
@@ -537,7 +531,6 @@ class SystemPermissionTestCase(unittest.TestCase):
         while not user.has_perm('tmssapp.successors_subtask'):
             user = User.objects.get(username='paulus')
 
-        # TODO: Check if the SubtaskViewSet has the successors_subtask permission
         # Assert TO observer group has the successors_subtask permission
         self.assertIsNotNone(self.to_observer_group.permissions.all().filter(codename='successors_subtask'))
         # Assert Paulus has the successors_subtask permission
@@ -558,7 +551,6 @@ class SystemPermissionTestCase(unittest.TestCase):
         while user.has_perm('tmssapp.task_log_subtask'):
             user = User.objects.get(username='paulus')
 
-        # TODO: Check if the SubtaskViewSet has the task_log_subtask permission
         # Assert TO observer group has the task_log_subtask permission
         self.assertIsNotNone(self.to_observer_group.permissions.all().filter(codename='task_log_subtask'))
         # Assert Paulus does not have the task_log_subtask permission
@@ -579,7 +571,6 @@ class SystemPermissionTestCase(unittest.TestCase):
         while not user.has_perm('tmssapp.task_log_subtask'):
             user = User.objects.get(username='paulus')
 
-        # TODO: Check if the SubtaskViewSet has the task_log_subtask permission
         # Assert TO observer group has the task_log_subtask permission
         self.assertIsNotNone(self.to_observer_group.permissions.all().filter(codename='task_log_subtask'))
         # Assert Paulus has the task_log_subtask permission
@@ -600,7 +591,6 @@ class SystemPermissionTestCase(unittest.TestCase):
         while user.has_perm('tmssapp.transformed_output_dataproduct_subtask'):
             user = User.objects.get(username='paulus')
 
-        # TODO: Check if the SubtaskViewSet has the transformed_output_dataproduct_subtask permission
         # Assert TO observer group has the transformed_output_dataproduct_subtask permission
         self.assertIsNotNone(self.to_observer_group.permissions.all().filter(codename='transformed_output_dataproduct_subtask'))
         # Assert Paulus does not have the transformed_output_dataproduct_subtask permission
@@ -621,7 +611,6 @@ class SystemPermissionTestCase(unittest.TestCase):
         while not user.has_perm('tmssapp.transformed_output_dataproduct_subtask'):
             user = User.objects.get(username='paulus')
 
-        # TODO: Check if the SubtaskViewSet has the transformed_output_dataproduct_subtask permission
         # Assert TO observer group has the transformed_output_dataproduct_subtask permission
         self.assertIsNotNone(self.to_observer_group.permissions.all().filter(codename='transformed_output_dataproduct_subtask'))
         # Assert Paulus has the transformed_output_dataproduct_subtask permission
@@ -647,7 +636,6 @@ class SystemPermissionTestCase(unittest.TestCase):
         while user.has_perm('tmssapp.unschedule_subtask'):
             user = User.objects.get(username='paulus')
 
-        # TODO: Check if the SubtaskViewSet has the unschedule_subtask permission
         # Assert TO observer group has the unschedule_subtask permission
         self.assertIsNotNone(self.to_observer_group.permissions.all().filter(codename='unschedule_subtask'))
         # Assert Paulus does not have the unschedule_subtask permission
@@ -668,7 +656,6 @@ class SystemPermissionTestCase(unittest.TestCase):
         while not user.has_perm('tmssapp.unschedule_subtask'):
             user = User.objects.get(username='paulus')
 
-        # TODO: Check if the SubtaskViewSet has the unschedule_subtask permission
         # Assert TO observer group has the unschedule_subtask permission
         self.assertIsNotNone(self.to_observer_group.permissions.all().filter(codename='unschedule_subtask'))
         # Assert Paulus has the unschedule_subtask permission
-- 
GitLab