diff --git a/InvenTree/InvenTree/api_tester.py b/InvenTree/InvenTree/api_tester.py index 992ecead21..c5d96e6bb3 100644 --- a/InvenTree/InvenTree/api_tester.py +++ b/InvenTree/InvenTree/api_tester.py @@ -49,32 +49,38 @@ class UserMixin: self.user.save() - for role in self.roles: - self.assignRole(role, self.roles == ['all']) + # Assign all roles if set + if self.roles == 'all': + self.assignRole() + # else filter the roles + else: + for role in self.roles: + self.assignRole(role) if self.auto_login: self.client.login(username=self.username, password=self.password) - def assignRole(self, role, assign_all: bool = False): + def assignRole(self, role = None, assign_all: bool = False): """ Set the user roles for the registered user """ # role is of the format 'rule.permission' e.g. 'part.add' - rule, perm = role.split('.') + if not assign_all: + rule, perm = role.split('.') for ruleset in self.group.rule_sets.all(): - if ruleset.name == rule or assign_all: + if assign_all or ruleset.name == rule: - if perm == 'view' or assign_all: + if assign_all or perm == 'view': ruleset.can_view = True - elif perm == 'change' or assign_all: + elif assign_all or perm == 'change': ruleset.can_change = True - elif perm == 'delete' or assign_all: + elif assign_all or perm == 'delete': ruleset.can_delete = True - elif perm == 'add' or assign_all: + elif assign_all or perm == 'add': ruleset.can_add = True ruleset.save() diff --git a/InvenTree/InvenTree/test_api.py b/InvenTree/InvenTree/test_api.py index 4a5e03ac5a..10e2305d07 100644 --- a/InvenTree/InvenTree/test_api.py +++ b/InvenTree/InvenTree/test_api.py @@ -20,7 +20,7 @@ class HTMLAPITests(InvenTreeTestCase): which raised an AssertionError when using the HTML API interface, while the regular JSON interface continued to work as expected. """ - roles = ['all'] + roles = 'all' def test_part_api(self): url = reverse('api-part-list') diff --git a/InvenTree/company/test_views.py b/InvenTree/company/test_views.py index 0c135aff88..a3ecd1651a 100644 --- a/InvenTree/company/test_views.py +++ b/InvenTree/company/test_views.py @@ -16,9 +16,7 @@ class CompanyViewTestBase(InvenTreeTestCase): 'supplier_part', ] - roles = [ - 'all', - ] + roles = 'all' class CompanyViewTest(CompanyViewTestBase): diff --git a/InvenTree/part/test_bom_export.py b/InvenTree/part/test_bom_export.py index 38d9bb5db9..d78ced4b17 100644 --- a/InvenTree/part/test_bom_export.py +++ b/InvenTree/part/test_bom_export.py @@ -18,7 +18,7 @@ class BomExportTest(InvenTreeTestCase): 'bom', ] - roles = ['all'] + roles = 'all' def setUp(self): super().setUp() diff --git a/InvenTree/part/test_views.py b/InvenTree/part/test_views.py index 2971c032e0..f20fc3159f 100644 --- a/InvenTree/part/test_views.py +++ b/InvenTree/part/test_views.py @@ -17,7 +17,7 @@ class PartViewTestCase(TestCase): 'supplier_part', ] - roles = ['all'] + roles = 'all' def setUp(self): super().setUp() diff --git a/InvenTree/plugin/base/integration/test_mixins.py b/InvenTree/plugin/base/integration/test_mixins.py index d9be17fde0..9ccc99528f 100644 --- a/InvenTree/plugin/base/integration/test_mixins.py +++ b/InvenTree/plugin/base/integration/test_mixins.py @@ -260,7 +260,7 @@ class PanelMixinTests(TestCase): 'stock', ] - roles = ['all'] + roles = 'all' def test_installed(self): """Test that the sample panel plugin is installed""" diff --git a/InvenTree/stock/test_views.py b/InvenTree/stock/test_views.py index acea850046..dba39334de 100644 --- a/InvenTree/stock/test_views.py +++ b/InvenTree/stock/test_views.py @@ -18,7 +18,7 @@ class StockViewTestCase(InvenTreeTestCase): 'stock', ] - roles = ['all'] + roles = 'all' class StockListTest(StockViewTestCase):