Я проверяю, может ли пользователь API POST
просматривать, если пользователь может передать разрешение IsAuthenticated
. После запуска теста я получаю сообщение об ошибке: AssertionError: 401 != 201
.
Когда permission_classes = (permissions.IsAuthenticated,)
закомментировано и тест запускается снова, я обнаруживаю, что request.user
оказывается AnonymousUser
. Тем не менее, у меня есть User
, созданный и прикрепленный к запросу, как показано ниже.
Я не уверен, что вызывает это, и хочу понять, как я могу передать экземпляр User в запрос.
Примечание - я пытаюсь сделать это в Django API тестирования, а не использовать Django REST Framework.
tests.py
class TestUserPreferencesResource(TestCase):
'''Verify that a User is capable of setting preferences for their profile'''
@classmethod
def setUpTestData(cls):
cls.user = User.objects.create_user('Mock', password="secret")
cls.user_prefs = json.dumps({
"age": ['Baby', 'Adult'],
"gender": ['Male'],
"size": ["Medium", "Large"]
})
cls.factory = RequestFactory()
cls.credentials = b64encode(b"Mock:secret").decode("ascii")
def test_user_preferences_settings(self):
request = self.factory.post(
reverse("pref-settings"),
data=self.user_prefs,
content_type="application/json",
headers = {
"Authorization": f"Basic {self.credentials}"
},
)
request.user = self.user
print(request.user)
response = UserPrefView.as_view()(request)
self.assertEqual(response.status_code, 201)
views.py
class UserPrefView(
CreateModelMixin,
UpdateModelMixin,
GenericAPIView):
queryset = UserPref.objects.all()
permission_classes = (permissions.IsAuthenticated,)
serilaizer_class = serializers.UserPreferenceSerializer
def post(self, request, format=None):
import pdb; pdb.set_trace()
serializer = self.serializer_class(data=request.data)
serializer.is_valid(raise_exception=True)
serializer.save(user=request.user)
return Response(serializer.data)