I am trying to make a test case for authentication using JWT, in this case django-rest-framework-jwt , then curl I get the following, so:
curl -X POST -d " email=testuser@test.com &password=testing" http://localhost:8000/api/auth/token/
Receive:
{"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjo0LCJlbWFpbCI6InRlc3R1c2VyQHRlc3QuY29tIiwiZXhwIjoxNDIyNTkxMTQ5LCJ1c2VybmFtZSI6InRlc3R1c2VyQHRlc3QuY29tIn0.OT8ggcZYWxcbSy0Vv8u5PA3QISIdarNXTVuvu4QQjnw"}
But when I run my test case:
class BaseTestCase(TestCase): def setUp(self): self.csrf_client = APIClient(enforce_csrf_checks=True) self.email = ' testuser@test.com ' self.name = 'test user' self.password = 'testing' user = Usuario.objects.create_user(email=self.email, name=self.name, password=self.password) user.save() self.data = { 'email': self.email, 'password': self.password } self.url = '/api/auth/token/' class ObtainJSONWebTokenTests(BaseTestCase): def test_jwt_login_json(self): """ Ensure JWT login view using JSON POST works. """ client = APIClient(enforce_csrf_checks=True) response = client.post(self.url, self.data, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK, response.data) def test_jwt_login_json_incomplete_creds(self): """ Ensure JWT login view using JSON POST fails if incomplete credentials are used. """ client = APIClient(enforce_csrf_checks=True) self.data = { 'email': self.email } response = client.post(self.url, self.data, format='json') self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST, response.data)
I got it:
Creating test database for alias 'default'... F. ====================================================================== FAIL: test_jwt_login_json (user.tests.ObtainJSONWebTokenTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/rizotas/Proyects/django/src/rescue/user/tests.py", line 34, in test_jwt_login_json self.assertEqual(response.status_code, status.HTTP_200_OK, response.data) AssertionError: 400 != 200 : ReturnDict([('non_field_errors', ['Unable to login with provided credentials.'])]) ---------------------------------------------------------------------- Ran 2 tests in 0.374s FAILED (failures=1) Destroying test database for alias 'default'...
any idea?
Many thanks!
Update:
my settings
INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', #'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', 'debug_toolbar', 'debug_panel', ...) REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': ( 'rest_framework.permissions.IsAuthenticated', ), 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework.authentication.SessionAuthentication', 'rest_framework.authentication.BasicAuthentication', 'rest_framework_jwt.authentication.JSONWebTokenAuthentication', ), 'TEST_REQUEST_DEFAULT_FORMAT': 'json', 'TEST_REQUEST_RENDERER_CLASSES': ( 'rest_framework.renderers.MultiPartRenderer', 'rest_framework.renderers.JSONRenderer', #'rest_framework.renderers.YAMLRenderer' ) }