簡體   English   中英

使用 JWT 授權對 Django Rest API 進行單元測試失敗

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM