जेडब्ल्यूटी आधारित प्रमाणीकरण मोबाइल से भेजे गए POST अनुरोधों और "उन्नत आराम क्लाइंट" का उपयोग करके अच्छी तरह से काम करता है, हालांकि यह Django परीक्षण क्लाइंट का उपयोग करते समय विफल रहता है। ग्राहक अनुरोध करते समय सफलतापूर्वक टोकन प्राप्त करता है, लेकिन उस टोकन का उपयोग करके प्रतिबंधित दृश्य तक पहुंचने का प्रयास करते समय इसे निम्न प्रतिक्रिया मिलती है।आरईएसटी फ्रेमवर्क जेडब्ल्यूटी का उपयोग कर प्रमाणीकरण का परीक्षण कैसे करें?
"प्रमाणीकरण प्रमाण-पत्र प्रदान नहीं किए गए थे।"
परीक्षण का मामला: परीक्षण ग्राहक से
def test_get_token(self):
response = self.client.post("/auth/api/get_token/", {"username": "Heffalumps", "password": "Woozles"})
self.assertEqual(response.status_code, 200, "The token should be successfully returned.")
response_content = json.loads(response.content.decode('utf-8'))
token = response_content["token"]
# The following request fails
response = self.client.post("/auth/api/authenticated/", {}, Authorization='JWT ' + token)
response_content = json.loads(response.content.decode('utf-8'))
self.assertEqual(response_content["authenticated"], "mooh", "The user should be able to access this endpoint.")
प्रतिबंधित दृश्य:
class RestrictedView(APIView):
permission_classes = (permissions.IsAuthenticated,)
authentication_classes = (JSONWebTokenAuthentication,)
def post(self, request):
response_data = json.dumps({"authenticated": "mooh"})
return HttpResponse(response_data, content_type='application/json')
मैं परीक्षण का मामला में कुछ कमी है?
बजाय::
response = self.client.post("/auth/api/authenticated/", {}, HTTP_AUTHORIZATION='JWT {}'.format(token))
प्रमाणीकरण Django परीक्षण ग्राहक के रूप में के माध्यम से अब काम करता है:
response = self.client.post("/auth/api/authenticated/", {}, Authorization='JWT ' + token)
मैं लिखना पड़ा
धन्यवाद! मेरा दिन बचाया –
मैं टोकन प्रमाणीकरण के साथ Django Rest API का उपयोग कर रहा था और इसे बदलने के लिए आवश्यक था: प्रतिक्रिया = self.client.get ('/ api/someurl', {}, HTTP_AUTHORIZATION = 'टोकन {}'। प्रारूप (self.token)) –