Home > Back-end >  How to authorize user in Django testing REST framework APIClient post method
How to authorize user in Django testing REST framework APIClient post method

Time:02-04

can somebody help me. I can't authorize my test user in unittests

class APIGameTestCase(APITestCase):
    def setUp(self):
        self.user = User.objects.create_user(username='testuser', password='123')
        self.token = Token.objects.get(user=self.user)
        self.api_authentication()

    def api_authentication(self):
        self.client.credentials(HTTP_AUTHORIZATION='Token '   self.token.key)

    def test_create_game(self):
        url = reverse('game-list')
        payload = {
            'name': 'testgame',
            'game_category': 'testgamecategory',
            'played': False,
            'release_date': '2016-06-21T03:02:00.776594Z',
        }
        response = self.client.post(url, payload)
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)

Assert error

AssertionError: 401 != 201

models.py

@receiver(post_save, sender=settings.AUTH_USER_MODEL)
def create_auth_token(sender, instance=None, created=False, **kwargs):
    if created:
        Token.objects.create(user=instance)

CodePudding user response:

There is better way to do that. You can use client.force_authenticate. This is included in DRF Base test class. Bacause that, you can focus on testing

class APIGameTestCase(APITestCase):
    def setUp(self):
        self.user = User.objects.create_user(username='testuser', password='123')
        self.client.force_authenticate(self.user)

    def test_create_game(self):
        url = reverse('game-list')
        payload = {
            'name': 'testgame',
            'game_category': 'testgamecategory',
            'played': False,
            'release_date': '2016-06-21T03:02:00.776594Z',
        }
        response = self.client.post(url, payload)
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)

You can read more about that here: https://www.django-rest-framework.org/api-guide/testing/#forcing-authentication

  •  Tags:  
  • Related