Как я могу установить ldap_user в тесте django?

У нас есть django приложение с LDAP аутентификацией (django-auth-ldap). В пользовательском разрешении мы проверяем, содержит ли request.ldap_user.group_names определенную группу (в зависимости от request.data). Ручное тестирование показало, что оно работает. Теперь мы хотим написать автоматизированный тест, но продолжаем получать "AttributeError: 'User' object has no attribute 'ldap_user' and we can not find anywhere how we can set the ldap_user and the ldap_user group names.

".

Вот тест на данный момент:

import pytest
from django.urls import reverse
from django.test import Client
from django.contrib.auth.models import User
import requests

client = Client()

url_create_artifact = reverse("artifacts/create-list")

@pytest.mark.django_db()
def test_post_artifacts_create_logged_in():
    component = Component()
    component.id = "test_component"
    component.ldap_group = "test_group"
    component.save()

    user = User.objects.create(username="test_user")
    user.set_password("1234")
    user.save()
    client.login(username="test_user", password="1234")
    
    response = client.post(
            url_create_artifact,
            {
                "component_id": "test_component"
            },
        )

    assert response.status_code == 200

Это пользовательское разрешение:

from rest_framework.permissions import BasePermission, SAFE_METHODS
from django.shortcuts import get_object_or_404

class CustomPermission(BasePermission):
    def has_permission(self, request, view):
        component_id = request.data["component_id"]
        component = get_object_or_404(klass=Component, id=component_id)
        user = request.user

        if user.is_authenticated:
            user_ldap_groups = request.user.ldap_user.group_names
            component_ldap_group = component.ldap_group

            return component_ldap_group in user_ldap_groups
        else:
            return False

Наше представление начинается с

from rest_framework.authentication import SessionAuthentication
from our_app.permissions import ApplicationPermission
from rest_framework import viewsets


class ArtifactSetCreate(viewsets.GenericViewSet):
    authentication_classes = [SessionAuthentication]
    permission_classes = [CustomPermission]
[...]

urls.py содержит

from rest_framework import routers
from our_app.views import ArtifactViewSetCreate

router = routers.DefaultRouter()
router.register(r"artifact/create", ArtifactViewSetCreate, basename="artifacts/create")
Вернуться на верх