import mock import pytest from django.contrib.auth import get_user_model from django.urls import reverse from rest_framework import status from rest_framework.generics import get_object_or_404 @pytest.mark.django_db @mock.patch('django.core.mail.send_mail') def test_generate_password_by_manager(mocked_send_mail, staff_client, student_client, user_student): """ Test generate new password from admin area by manager """ assert staff_client.get( reverse('users:management-password'), status=status.HTTP_405_METHOD_NOT_ALLOWED ) assert student_client.get( reverse('users:management-password'), status=status.HTTP_403_FORBIDDEN ) data = { 'email': user_student.email, } assert staff_client.post( reverse('users:management-password'), data=data, status=status.HTTP_201_CREATED ) test_user = get_object_or_404(get_user_model(), email=user_student.email) assert not test_user.check_password('test') assert mocked_send_mail.call_count == 1 assert student_client.post( reverse('users:management-password'), data=data, status=status.HTTP_403_FORBIDDEN )