如何在 `django rest_framework test` 的 `APIClient` 的 header 中添加身份验证令牌
How to add authentication token in header of `APIClient` in `django rest_framework test`
我正在为我的 rest_framework
使用 oauth2_provider
。我正在尝试为我的 api 编写测试用例。我已获得访问令牌。但是我无法使用 APIClient
中的 access token
对用户进行身份验证
我希望这个 curl 命令可以与 APIClient
.
一起使用
curl -H "Authorization: Bearer <your_access_token>" http://localhost:8000/api/v1/users/current/
我试过了
client.get('/api/v1/users/current/', headers={'Authorization': 'Bearer {}'.format(self.access_token)})
和
client.credentials(HTTP_AUTHORIZATION='Token ' + self.access_token)
这是片段的一部分
from rest_framework.test import APIClient
from rest_framework.test import APITestCase
....
class APITest(APITestCase):
def setUp(self):
...
self.client = APIClient()
...
response = self.client.post('/api/v1/oauth2/token/', post_data)
self.access_token = response.json()['access_token']
def test_get_current_user(self):
client.get('/api/v1/users/current/', headers={'Authorization': 'Bearer {}'.format(self.access_token)})
我正在收到回复
<HttpResponseForbidden status_code=403, "text/html; charset=utf-8">
由于您在 curl 中使用 Authorization: Bearer
,因此您还应该使用带有 Bearer
字词的 client.credentials
而不是 Token
:
client.credentials(HTTP_AUTHORIZATION='Bearer ' + self.access_token)
我正在为我的 rest_framework
使用 oauth2_provider
。我正在尝试为我的 api 编写测试用例。我已获得访问令牌。但是我无法使用 APIClient
中的 access token
对用户进行身份验证
我希望这个 curl 命令可以与 APIClient
.
curl -H "Authorization: Bearer <your_access_token>" http://localhost:8000/api/v1/users/current/
我试过了
client.get('/api/v1/users/current/', headers={'Authorization': 'Bearer {}'.format(self.access_token)})
和
client.credentials(HTTP_AUTHORIZATION='Token ' + self.access_token)
这是片段的一部分
from rest_framework.test import APIClient
from rest_framework.test import APITestCase
....
class APITest(APITestCase):
def setUp(self):
...
self.client = APIClient()
...
response = self.client.post('/api/v1/oauth2/token/', post_data)
self.access_token = response.json()['access_token']
def test_get_current_user(self):
client.get('/api/v1/users/current/', headers={'Authorization': 'Bearer {}'.format(self.access_token)})
我正在收到回复
<HttpResponseForbidden status_code=403, "text/html; charset=utf-8">
由于您在 curl 中使用 Authorization: Bearer
,因此您还应该使用带有 Bearer
字词的 client.credentials
而不是 Token
:
client.credentials(HTTP_AUTHORIZATION='Bearer ' + self.access_token)