简体   繁体   English

DRF 测试中 jwt 令牌的身份验证错误 401

[英]Authentication error 401 for jwt token in DRF tests

I have a problem getting jwt authorization for get method in test.我在测试中获取 get 方法的 jwt 授权时遇到问题。 my tests:我的测试:

class ImageViewsTests(APITestCase):
def setUp(self):
    self.test_user = User.objects.create_user(**TEST_USER)
    TEST_IMAGE['created_by'] = self.test_user
    self.temp_image = Image.objects.create(**TEST_IMAGE)
    self.token = RefreshToken.for_user(self.test_user)
    
    
def test_images_list(self):
    url = reverse('jwt-create')

    client = APIClient()
    client.credentials(HTTP_AUTHORIZATION=f'JWT {self.token.access_token}')
    response = self.client.get('/image/', data={'format': 'json'})
    
    self.assertEqual(response.status_code, status.HTTP_200_OK)
    self.assertEqual(response.data, TEST_IMAGE)

Tests return AssertionError: 401 != 200. Token is returned correctly but does not work in header.测试返回 AssertionError: 401 != 200。令牌正确返回,但在标头中不起作用。 For example everything is fine in Postman.例如,在 Postman 中一切都很好。 postman邮差

I did something else like this and I also get no authorization我做了其他类似的事情,我也没有得到授权

def test_images_list(self):
    url = reverse('jwt-create')

    client = APIClient()
    resp = self.client.post(url, {'email':TEST_USER['email'], 'password':TEST_USER['password']}, format='json')
    
    self.assertEqual(resp.status_code, status.HTTP_200_OK)
    
    client.credentials(AUTHORIZATION=f'JWT {resp.data["access"]}')
    
    response = self.client.get('/image/', data={'format': 'json'})
    
    self.assertEqual(response.status_code, status.HTTP_200_OK)
    self.assertEqual(response.data, TEST_IMAGE)

Im using Djoser, jwt, DRF.我正在使用 Djoser、jwt、DRF。 Where am I making a mistake?我在哪里犯错?

Try this for setting the credentials:试试这个来设置凭据:

self.token = RefreshToken.for_user(self.test_user)
client.credentials(HTTP_AUTHORIZATION=f'Bearer {self.token.access_token}')

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM