46 lines
1.4 KiB
Python
46 lines
1.4 KiB
Python
import random
|
|
import string
|
|
|
|
from django.contrib.auth.models import Permission, User
|
|
|
|
|
|
class TestUserAuthenticationMixin:
|
|
model_name = ""
|
|
|
|
def create_user(self):
|
|
self.password = "".join(
|
|
[random.choice(string.ascii_letters) for _ in range(16)]
|
|
)
|
|
self.user = User.objects.create(
|
|
username="vader",
|
|
email="darth@vader.com",
|
|
is_staff=True,
|
|
is_active=True,
|
|
)
|
|
self.user.set_password(self.password)
|
|
self.user.save()
|
|
self.setup_user_permissions()
|
|
|
|
def login(self):
|
|
self.client.force_login(self.user)
|
|
|
|
def setup_user_permissions(self):
|
|
self.create_permission = Permission.objects.get(
|
|
codename=f"add_{self.model_name}"
|
|
)
|
|
self.delete_permission = Permission.objects.get(
|
|
codename=f"delete_{self.model_name}"
|
|
)
|
|
self.list_permission = Permission.objects.get(
|
|
codename=f"view_{self.model_name}"
|
|
)
|
|
self.update_permission = Permission.objects.get(
|
|
codename=f"change_{self.model_name}"
|
|
)
|
|
|
|
# Grant access and permissions
|
|
self.user.user_permissions.add(self.create_permission)
|
|
self.user.user_permissions.add(self.delete_permission)
|
|
self.user.user_permissions.add(self.list_permission)
|
|
self.user.user_permissions.add(self.update_permission)
|