mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-12 05:50:16 +02:00
Performance improve admin tests, test w/o auto groups
This commit is contained in:
parent
ff168d1c9e
commit
80729b6b06
@ -34,21 +34,20 @@ class MockRequest(object):
|
|||||||
|
|
||||||
class TestUserAdmin(TestCase):
|
class TestUserAdmin(TestCase):
|
||||||
|
|
||||||
def setUp(self):
|
@classmethod
|
||||||
self.factory = RequestFactory()
|
def setUpClass(cls):
|
||||||
self.modeladmin = UserAdmin(
|
super().setUpClass()
|
||||||
model=User, admin_site=AdminSite()
|
|
||||||
)
|
|
||||||
# groups
|
# groups
|
||||||
self.group_1 = Group.objects.create(
|
cls.group_1 = Group.objects.create(
|
||||||
name='Group 1'
|
name='Group 1'
|
||||||
)
|
)
|
||||||
self.group_2 = Group.objects.create(
|
cls.group_2 = Group.objects.create(
|
||||||
name='Group 2'
|
name='Group 2'
|
||||||
)
|
)
|
||||||
|
|
||||||
# user 1 - corp and alliance, normal user
|
# user 1 - corp and alliance, normal user
|
||||||
self.character_1 = EveCharacter.objects.create(
|
cls.character_1 = EveCharacter.objects.create(
|
||||||
character_id='1001',
|
character_id='1001',
|
||||||
character_name='Bruce Wayne',
|
character_name='Bruce Wayne',
|
||||||
corporation_id='2001',
|
corporation_id='2001',
|
||||||
@ -58,7 +57,7 @@ class TestUserAdmin(TestCase):
|
|||||||
alliance_name='Wayne Enterprises',
|
alliance_name='Wayne Enterprises',
|
||||||
alliance_ticker='WE',
|
alliance_ticker='WE',
|
||||||
)
|
)
|
||||||
self.character_1a = EveCharacter.objects.create(
|
cls.character_1a = EveCharacter.objects.create(
|
||||||
character_id='1002',
|
character_id='1002',
|
||||||
character_name='Batman',
|
character_name='Batman',
|
||||||
corporation_id='2001',
|
corporation_id='2001',
|
||||||
@ -81,27 +80,27 @@ class TestUserAdmin(TestCase):
|
|||||||
member_count=42,
|
member_count=42,
|
||||||
alliance=alliance
|
alliance=alliance
|
||||||
)
|
)
|
||||||
self.user_1 = User.objects.create_user(
|
cls.user_1 = User.objects.create_user(
|
||||||
self.character_1.character_name.replace(' ', '_'),
|
cls.character_1.character_name.replace(' ', '_'),
|
||||||
'abc@example.com',
|
'abc@example.com',
|
||||||
'password'
|
'password'
|
||||||
)
|
)
|
||||||
CharacterOwnership.objects.create(
|
CharacterOwnership.objects.create(
|
||||||
character=self.character_1,
|
character=cls.character_1,
|
||||||
owner_hash='x1' + self.character_1.character_name,
|
owner_hash='x1' + cls.character_1.character_name,
|
||||||
user=self.user_1
|
user=cls.user_1
|
||||||
)
|
)
|
||||||
CharacterOwnership.objects.create(
|
CharacterOwnership.objects.create(
|
||||||
character=self.character_1a,
|
character=cls.character_1a,
|
||||||
owner_hash='x1' + self.character_1a.character_name,
|
owner_hash='x1' + cls.character_1a.character_name,
|
||||||
user=self.user_1
|
user=cls.user_1
|
||||||
)
|
)
|
||||||
self.user_1.profile.main_character = self.character_1
|
cls.user_1.profile.main_character = cls.character_1
|
||||||
self.user_1.profile.save()
|
cls.user_1.profile.save()
|
||||||
self.user_1.groups.add(self.group_1)
|
cls.user_1.groups.add(cls.group_1)
|
||||||
|
|
||||||
# user 2 - corp only, staff
|
# user 2 - corp only, staff
|
||||||
self.character_2 = EveCharacter.objects.create(
|
cls.character_2 = EveCharacter.objects.create(
|
||||||
character_id=1003,
|
character_id=1003,
|
||||||
character_name='Clark Kent',
|
character_name='Clark Kent',
|
||||||
corporation_id=2002,
|
corporation_id=2002,
|
||||||
@ -116,24 +115,24 @@ class TestUserAdmin(TestCase):
|
|||||||
member_count=99,
|
member_count=99,
|
||||||
alliance=None
|
alliance=None
|
||||||
)
|
)
|
||||||
self.user_2 = User.objects.create_user(
|
cls.user_2 = User.objects.create_user(
|
||||||
self.character_2.character_name.replace(' ', '_'),
|
cls.character_2.character_name.replace(' ', '_'),
|
||||||
'abc@example.com',
|
'abc@example.com',
|
||||||
'password'
|
'password'
|
||||||
)
|
)
|
||||||
CharacterOwnership.objects.create(
|
CharacterOwnership.objects.create(
|
||||||
character=self.character_2,
|
character=cls.character_2,
|
||||||
owner_hash='x1' + self.character_2.character_name,
|
owner_hash='x1' + cls.character_2.character_name,
|
||||||
user=self.user_2
|
user=cls.user_2
|
||||||
)
|
)
|
||||||
self.user_2.profile.main_character = self.character_2
|
cls.user_2.profile.main_character = cls.character_2
|
||||||
self.user_2.profile.save()
|
cls.user_2.profile.save()
|
||||||
self.user_2.groups.add(self.group_2)
|
cls.user_2.groups.add(cls.group_2)
|
||||||
self.user_2.is_staff = True
|
cls.user_2.is_staff = True
|
||||||
self.user_2.save()
|
cls.user_2.save()
|
||||||
|
|
||||||
# user 3 - no main, no group, superuser
|
# user 3 - no main, no group, superuser
|
||||||
self.character_3 = EveCharacter.objects.create(
|
cls.character_3 = EveCharacter.objects.create(
|
||||||
character_id=1101,
|
character_id=1101,
|
||||||
character_name='Lex Luthor',
|
character_name='Lex Luthor',
|
||||||
corporation_id=2101,
|
corporation_id=2101,
|
||||||
@ -154,20 +153,27 @@ class TestUserAdmin(TestCase):
|
|||||||
alliance_ticker='LWD',
|
alliance_ticker='LWD',
|
||||||
executor_corp_id=''
|
executor_corp_id=''
|
||||||
)
|
)
|
||||||
self.user_3 = User.objects.create_user(
|
cls.user_3 = User.objects.create_user(
|
||||||
self.character_3.character_name.replace(' ', '_'),
|
cls.character_3.character_name.replace(' ', '_'),
|
||||||
'abc@example.com',
|
'abc@example.com',
|
||||||
'password'
|
'password'
|
||||||
)
|
)
|
||||||
CharacterOwnership.objects.create(
|
CharacterOwnership.objects.create(
|
||||||
character=self.character_3,
|
character=cls.character_3,
|
||||||
owner_hash='x1' + self.character_3.character_name,
|
owner_hash='x1' + cls.character_3.character_name,
|
||||||
user=self.user_3
|
user=cls.user_3
|
||||||
)
|
)
|
||||||
self.user_3.is_superuser = True
|
cls.user_3.is_superuser = True
|
||||||
self.user_3.save()
|
cls.user_3.save()
|
||||||
|
|
||||||
# create autogroups for corps and alliances
|
def setUp(self):
|
||||||
|
self.factory = RequestFactory()
|
||||||
|
self.modeladmin = UserAdmin(
|
||||||
|
model=User, admin_site=AdminSite()
|
||||||
|
)
|
||||||
|
|
||||||
|
def _create_autogroups(self):
|
||||||
|
"""create autogroups for corps and alliances"""
|
||||||
autogroups_config = AutogroupsConfig(
|
autogroups_config = AutogroupsConfig(
|
||||||
corp_groups = True,
|
corp_groups = True,
|
||||||
alliance_groups = True
|
alliance_groups = True
|
||||||
@ -179,66 +185,86 @@ class TestUserAdmin(TestCase):
|
|||||||
|
|
||||||
# column rendering
|
# column rendering
|
||||||
|
|
||||||
def test_user_profile_pic_1(self):
|
def test_user_profile_pic_u1(self):
|
||||||
expected = ('<img src="https://images.evetech.net/characters/1001/'
|
expected = ('<img src="https://images.evetech.net/characters/1001/'
|
||||||
'portrait?size=32" class="img-circle">')
|
'portrait?size=32" class="img-circle">')
|
||||||
self.assertEqual(user_profile_pic(self.user_1), expected)
|
self.assertEqual(user_profile_pic(self.user_1), expected)
|
||||||
|
|
||||||
def test_user_profile_pic_3(self):
|
def test_user_profile_pic_u3(self):
|
||||||
self.assertIsNone(user_profile_pic(self.user_3))
|
self.assertIsNone(user_profile_pic(self.user_3))
|
||||||
|
|
||||||
def test_user_username_1(self):
|
def test_user_username_u1(self):
|
||||||
expected = (
|
expected = (
|
||||||
'<strong><a href="/admin/authentication/user/{}/change/">'
|
'<strong><a href="/admin/authentication/user/{}/change/">'
|
||||||
'Bruce_Wayne</a></strong><br>Bruce Wayne'.format(self.user_1.pk)
|
'Bruce_Wayne</a></strong><br>Bruce Wayne'.format(self.user_1.pk)
|
||||||
)
|
)
|
||||||
self.assertEqual(user_username(self.user_1), expected)
|
self.assertEqual(user_username(self.user_1), expected)
|
||||||
|
|
||||||
def test_user_username_3(self):
|
def test_user_username_u3(self):
|
||||||
expected = (
|
expected = (
|
||||||
'<strong><a href="/admin/authentication/user/{}/change/">'
|
'<strong><a href="/admin/authentication/user/{}/change/">'
|
||||||
'Lex_Luthor</a></strong>'.format(self.user_3.pk)
|
'Lex_Luthor</a></strong>'.format(self.user_3.pk)
|
||||||
)
|
)
|
||||||
self.assertEqual(user_username(self.user_3), expected)
|
self.assertEqual(user_username(self.user_3), expected)
|
||||||
|
|
||||||
def test_user_main_organization_1(self):
|
def test_user_main_organization_u1(self):
|
||||||
expected = 'Wayne Technologies<br>Wayne Enterprises'
|
expected = 'Wayne Technologies<br>Wayne Enterprises'
|
||||||
self.assertEqual(user_main_organization(self.user_1), expected)
|
self.assertEqual(user_main_organization(self.user_1), expected)
|
||||||
|
|
||||||
def test_user_main_organization_2(self):
|
def test_user_main_organization_u2(self):
|
||||||
expected = 'Daily Planet'
|
expected = 'Daily Planet'
|
||||||
self.assertEqual(user_main_organization(self.user_2), expected)
|
self.assertEqual(user_main_organization(self.user_2), expected)
|
||||||
|
|
||||||
def test_user_main_organization_3(self):
|
def test_user_main_organization_u3(self):
|
||||||
expected = None
|
expected = None
|
||||||
self.assertEqual(user_main_organization(self.user_3), expected)
|
self.assertEqual(user_main_organization(self.user_3), expected)
|
||||||
|
|
||||||
def test_characters_1(self):
|
def test_characters_u1(self):
|
||||||
expected = 'Batman, Bruce Wayne'
|
expected = 'Batman, Bruce Wayne'
|
||||||
result = self.modeladmin._characters(self.user_1)
|
result = self.modeladmin._characters(self.user_1)
|
||||||
self.assertEqual(result, expected)
|
self.assertEqual(result, expected)
|
||||||
|
|
||||||
def test_characters_2(self):
|
def test_characters_u2(self):
|
||||||
expected = 'Clark Kent'
|
expected = 'Clark Kent'
|
||||||
result = self.modeladmin._characters(self.user_2)
|
result = self.modeladmin._characters(self.user_2)
|
||||||
self.assertEqual(result, expected)
|
self.assertEqual(result, expected)
|
||||||
|
|
||||||
def test_characters_3(self):
|
def test_characters_u3(self):
|
||||||
expected = 'Lex Luthor'
|
expected = 'Lex Luthor'
|
||||||
result = self.modeladmin._characters(self.user_3)
|
result = self.modeladmin._characters(self.user_3)
|
||||||
self.assertEqual(result, expected)
|
self.assertEqual(result, expected)
|
||||||
|
|
||||||
def test_groups_1(self):
|
def test_groups_u1(self):
|
||||||
|
self._create_autogroups()
|
||||||
expected = 'Group 1'
|
expected = 'Group 1'
|
||||||
result = self.modeladmin._groups(self.user_1)
|
result = self.modeladmin._groups(self.user_1)
|
||||||
self.assertEqual(result, expected)
|
self.assertEqual(result, expected)
|
||||||
|
|
||||||
def test_groups_2(self):
|
def test_groups_u2(self):
|
||||||
|
self._create_autogroups()
|
||||||
expected = 'Group 2'
|
expected = 'Group 2'
|
||||||
result = self.modeladmin._groups(self.user_2)
|
result = self.modeladmin._groups(self.user_2)
|
||||||
self.assertEqual(result, expected)
|
self.assertEqual(result, expected)
|
||||||
|
|
||||||
def test_groups_3(self):
|
def test_groups_u3(self):
|
||||||
|
self._create_autogroups()
|
||||||
|
result = self.modeladmin._groups(self.user_3)
|
||||||
|
self.assertIsNone(result)
|
||||||
|
|
||||||
|
@patch(MODULE_PATH + '._has_auto_groups', False)
|
||||||
|
def test_groups_u1_no_autogroups(self):
|
||||||
|
expected = 'Group 1'
|
||||||
|
result = self.modeladmin._groups(self.user_1)
|
||||||
|
self.assertEqual(result, expected)
|
||||||
|
|
||||||
|
@patch(MODULE_PATH + '._has_auto_groups', False)
|
||||||
|
def test_groups_u2_no_autogroups(self):
|
||||||
|
expected = 'Group 2'
|
||||||
|
result = self.modeladmin._groups(self.user_2)
|
||||||
|
self.assertEqual(result, expected)
|
||||||
|
|
||||||
|
@patch(MODULE_PATH + '._has_auto_groups', False)
|
||||||
|
def test_groups_u3_no_autogroups(self):
|
||||||
result = self.modeladmin._groups(self.user_3)
|
result = self.modeladmin._groups(self.user_3)
|
||||||
self.assertIsNone(result)
|
self.assertIsNone(result)
|
||||||
|
|
||||||
@ -247,17 +273,17 @@ class TestUserAdmin(TestCase):
|
|||||||
result = self.modeladmin._state(self.user_1)
|
result = self.modeladmin._state(self.user_1)
|
||||||
self.assertEqual(result, expected)
|
self.assertEqual(result, expected)
|
||||||
|
|
||||||
def test_role_1(self):
|
def test_role_u1(self):
|
||||||
expected = 'User'
|
expected = 'User'
|
||||||
result = self.modeladmin._role(self.user_1)
|
result = self.modeladmin._role(self.user_1)
|
||||||
self.assertEqual(result, expected)
|
self.assertEqual(result, expected)
|
||||||
|
|
||||||
def test_role_2(self):
|
def test_role_u2(self):
|
||||||
expected = 'Staff'
|
expected = 'Staff'
|
||||||
result = self.modeladmin._role(self.user_2)
|
result = self.modeladmin._role(self.user_2)
|
||||||
self.assertEqual(result, expected)
|
self.assertEqual(result, expected)
|
||||||
|
|
||||||
def test_role_3(self):
|
def test_role_u3(self):
|
||||||
expected = 'Superuser'
|
expected = 'Superuser'
|
||||||
result = self.modeladmin._role(self.user_3)
|
result = self.modeladmin._role(self.user_3)
|
||||||
self.assertEqual(result, expected)
|
self.assertEqual(result, expected)
|
||||||
@ -297,7 +323,36 @@ class TestUserAdmin(TestCase):
|
|||||||
|
|
||||||
# filters
|
# filters
|
||||||
|
|
||||||
def test_filter_real_groups(self):
|
def test_filter_real_groups_with_autogroups(self):
|
||||||
|
|
||||||
|
class UserAdminTest(BaseUserAdmin):
|
||||||
|
list_filter = (UserAdmin.RealGroupsFilter,)
|
||||||
|
|
||||||
|
self._create_autogroups()
|
||||||
|
my_modeladmin = UserAdminTest(User, AdminSite())
|
||||||
|
|
||||||
|
# Make sure the lookups are correct
|
||||||
|
request = self.factory.get('/')
|
||||||
|
request.user = self.user_1
|
||||||
|
changelist = my_modeladmin.get_changelist_instance(request)
|
||||||
|
filters = changelist.get_filters(request)
|
||||||
|
filterspec = filters[0][0]
|
||||||
|
expected = [
|
||||||
|
(self.group_1.pk, self.group_1.name),
|
||||||
|
(self.group_2.pk, self.group_2.name),
|
||||||
|
]
|
||||||
|
self.assertEqual(filterspec.lookup_choices, expected)
|
||||||
|
|
||||||
|
# Make sure the correct queryset is returned
|
||||||
|
request = self.factory.get('/', {'group_id__exact': self.group_1.pk})
|
||||||
|
request.user = self.user_1
|
||||||
|
changelist = my_modeladmin.get_changelist_instance(request)
|
||||||
|
queryset = changelist.get_queryset(request)
|
||||||
|
expected = User.objects.filter(groups__in=[self.group_1])
|
||||||
|
self.assertSetEqual(set(queryset), set(expected))
|
||||||
|
|
||||||
|
@patch(MODULE_PATH + '._has_auto_groups', False)
|
||||||
|
def test_filter_real_groups_no_autogroups(self):
|
||||||
|
|
||||||
class UserAdminTest(BaseUserAdmin):
|
class UserAdminTest(BaseUserAdmin):
|
||||||
list_filter = (UserAdmin.RealGroupsFilter,)
|
list_filter = (UserAdmin.RealGroupsFilter,)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user