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): response = self.client.post( "/api/v1/auth/login/", { "username": self.user.username, "password": self.password, }, ) jwt_token = response.data.get("access") self.client.credentials(HTTP_AUTHORIZATION=f"Bearer {jwt_token}") 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)