[英]Unit testing Django Rest API with JWT Authorization fails
我有以下問題:每當我運行單元測試來測試我的 Django REST API 時,我都會收到 401 Unauthorized,即使我為我在測試期間創建的用戶對象粘貼了正確的令牌。 但是,我希望響應是 200..
這是代碼:
class TestWebApi(APITestCase):
def setUp(self):
self.factory = APIRequestFactory()
self.client = Client()
self.user = User.objects.create_user('testuser', None, '12345a')
Employee.objects.create(name='Test', surname='Employee1', role="frontend", account=User.objects.get(username='testuser'))
def test_api_employee(self):
user = self.user
token = json.loads(self.client.post('/api/get_jwt_token/', data={'username': 'testuser', 'password': '12345a'}).content)['token']
response = self.client.get('/api/v2/employees/', HTTP_Authorization="JWT {0}".format(token))
employees = Employee.objects.all()
serializer = EmployeeSerializer(employees, many=True)
self.assertEqual(response.status_code, status.HTTP_200_OK)
json_response = response.json()
self.assertEqual(json_response, serializer.data)
提前致謝!
我也為此苦苦掙扎。 我發現這樣的東西對我有用:
from mymodels.models import User
from rest_framework_simplejwt.tokens import RefreshToken
class Test(TestCase):
def test_1(self):
user = User.objects.get(username="test-user")
refresh = RefreshToken.for_user(user)
access_token = str(refresh.access_token)
response = self.client.get('/url-to-test/',
HTTP_AUTHORIZATION="Bearer " + access_token)
...
因此,基本上,您的 HTTP_AUTHORIZATION 標頭應該使用“Bearer”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.