Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
self.assert_status_equal(response, status.HTTP_400_BAD_REQUEST)
self.assertEqual(response.data['non_field_errors'], [djoser.constants.INVALID_CREDENTIALS_ERROR])
self.assertTrue(self.signal_sent)
def test_post_should_not_login_if_empty_request(self):
data = {}
request = self.factory.post(data=data)
response = self.view(request)
self.assert_status_equal(response, status.HTTP_400_BAD_REQUEST)
self.assertEqual(response.data['non_field_errors'], [djoser.constants.INVALID_CREDENTIALS_ERROR])
class LogoutViewTest(restframework.APIViewTestCase,
assertions.StatusCodeAssertionsMixin):
view_class = djoser.views.LogoutView
def setUp(self):
self.signal_sent = False
def signal_receiver(self, *args, **kwargs):
self.signal_sent = True
def test_post_should_logout_logged_in_user(self):
user = create_user()
user_logged_out.connect(self.signal_receiver)
request = self.factory.post(user=user)
response = self.view(request)
data = {
'uid': djoser.utils.encode_uid(user.pk),
'token': default_token_generator.make_token(user),
'new_password': '666',
're_new_password': 'isokpassword',
}
request = self.factory.post(data=data)
response = self.view(request)
self.assert_status_equal(response, status.HTTP_400_BAD_REQUEST)
self.assertEqual(
response.data, {'new_password': ['Password 666 is not allowed.']}
)
class ActivationViewTest(restframework.APIViewTestCase,
assertions.EmailAssertionsMixin,
assertions.StatusCodeAssertionsMixin):
view_class = djoser.views.ActivationView
def setUp(self):
self.signal_sent = False
def signal_receiver(self, *args, **kwargs):
self.signal_sent = True
def test_post_should_activate_user_and_not_login(self):
user = create_user()
user.is_active = False
user.save()
data = {
'uid': djoser.utils.encode_uid(user.pk),
self.assertTrue(self.signal_sent)
def test_post_should_not_login_if_empty_request(self):
data = {}
request = self.factory.post(data=data)
response = self.view(request)
self.assert_status_equal(response, status.HTTP_400_BAD_REQUEST)
self.assertEqual(
response.data['non_field_errors'],
[djoser.constants.INVALID_CREDENTIALS_ERROR]
)
class LogoutViewTest(restframework.APIViewTestCase,
assertions.StatusCodeAssertionsMixin):
view_class = djoser.views.LogoutView
def setUp(self):
self.signal_sent = False
def signal_receiver(self, *args, **kwargs):
self.signal_sent = True
def test_post_should_logout_logged_in_user(self):
user = create_user()
user_logged_out.connect(self.signal_receiver)
request = self.factory.post(user=user)
response = self.view(request)
data = {
'username': 'john',
'password': 'secret',
'email': 'john@beatles.com',
}
data.update(kwargs)
user = get_user_model().objects.create_user(**data)
user.raw_password = data['password']
return user
def perform_create_mock(x):
raise IntegrityError
class RootViewTest(restframework.APIViewTestCase,
assertions.StatusCodeAssertionsMixin):
view_class = djoser.views.RootView
def test_get_should_return_urls_mapping(self):
request = self.factory.get()
view_object = self.create_view_object(request)
response = view_object.dispatch(request)
self.assert_status_equal(response, status.HTTP_200_OK)
for key in view_object.get_urls_mapping().keys():
self.assertIn(key, response.data)
class RegistrationViewTest(restframework.APIViewTestCase,
assertions.StatusCodeAssertionsMixin,
user = create_user()
data = {
'new_password': 'new password',
'current_password': 'secret',
}
request = self.factory.post(user=user, data=data)
djoser.utils.login_user(request, user)
response = self.view(request)
self.assert_status_equal(response, status.HTTP_204_NO_CONTENT)
is_logged = authtoken.models.Token.objects.filter(user=user).exists()
self.assertTrue(is_logged)
class SetUsernameViewTest(restframework.APIViewTestCase,
assertions.StatusCodeAssertionsMixin):
view_class = djoser.views.SetUsernameView
def test_post_should_set_new_username(self):
user = create_user()
data = {
'new_username': 'ringo',
'current_password': 'secret',
}
request = self.factory.post(user=user, data=data)
response = self.view(request)
self.assert_status_equal(response, status.HTTP_204_NO_CONTENT)
user = utils.refresh(user)
self.assertEqual(data['new_username'], user.username)
user = create_user()
data = {
'new_password': 'new password',
'current_password': 'secret',
}
request = self.factory.post(user=user, data=data)
djoser.utils.login_user(request, user)
response = self.view(request)
self.assert_status_equal(response, status.HTTP_204_NO_CONTENT)
is_logged = authtoken.models.Token.objects.filter(user=user).exists()
self.assertTrue(is_logged)
class SetUsernameViewTest(restframework.APIViewTestCase,
assertions.StatusCodeAssertionsMixin):
view_class = djoser.views.SetUsernameView
def test_post_should_set_new_username(self):
user = create_user()
data = {
'new_username': 'ringo',
'current_password': 'secret',
}
request = self.factory.post(user=user, data=data)
response = self.view(request)
self.assert_status_equal(response, status.HTTP_204_NO_CONTENT)
user = utils.refresh(user)
self.assertEqual(data['new_username'], user.username)
user.save()
djoser.signals.user_activated.connect(self.signal_receiver)
data = {
'uid': djoser.utils.encode_uid(user.pk),
'token': default_token_generator.make_token(user),
}
request = self.factory.post(data=data)
response = self.view(request)
self.assert_status_equal(response, status.HTTP_204_NO_CONTENT)
self.assert_emails_in_mailbox(1)
self.assert_email_exists(to=[user.email])
class SetPasswordViewTest(restframework.APIViewTestCase,
assertions.StatusCodeAssertionsMixin):
view_class = djoser.views.SetPasswordView
def test_post_should_set_new_password(self):
user = create_user()
data = {
'new_password': 'new password',
'current_password': 'secret',
}
request = self.factory.post(user=user, data=data)
response = self.view(request)
self.assert_status_equal(response, status.HTTP_204_NO_CONTENT)
user = utils.refresh(user)
self.assertTrue(user.check_password(data['new_password']))
class RootViewTest(restframework.APIViewTestCase,
assertions.StatusCodeAssertionsMixin):
view_class = djoser.views.RootView
def test_get_should_return_urls_mapping(self):
request = self.factory.get()
view_object = self.create_view_object(request)
response = view_object.dispatch(request)
self.assert_status_equal(response, status.HTTP_200_OK)
for key in view_object.get_urls_mapping().keys():
self.assertIn(key, response.data)
class RegistrationViewTest(restframework.APIViewTestCase,
assertions.StatusCodeAssertionsMixin,
assertions.EmailAssertionsMixin,
assertions.InstanceAssertionsMixin):
view_class = djoser.views.RegistrationView
def test_post_should_create_user_without_login(self):
data = {
'username': 'john',
'password': 'secret',
'csrftoken': 'asdf',
}
request = self.factory.post(data=data)
response = self.view(request)
self.assert_status_equal(response, status.HTTP_201_CREATED)
data = {
'username': 'john',
'email': 'john@beatles.com',
'password': 'secret',
}
request = self.factory.post(data=data)
response = self.view(request)
self.assert_status_equal(response, status.HTTP_400_BAD_REQUEST)
self.assertEqual(
response.data, [djoser.constants.CANNOT_CREATE_USER_ERROR]
)
class LoginViewTest(restframework.APIViewTestCase,
assertions.StatusCodeAssertionsMixin,
assertions.InstanceAssertionsMixin):
view_class = djoser.views.LoginView
def setUp(self):
self.signal_sent = False
def signal_receiver(self, *args, **kwargs):
self.signal_sent = True
def test_post_should_login_user(self):
user = create_user()
data = {
'username': user.username,
'password': user.raw_password,
}
def _get_view(self, request):
if self.viewset:
actions = request.META.pop('actions')
return self.viewset.as_view(actions=actions, **self.get_view_kwargs())
return super(APIViewTestCase, self)._get_view(request)