2014-09-30 2 views
0

Я пытаюсь запустить некоторые тесты для Django Rest Framework (ссылок на тестирование) и воспроизводить этот локон вызов:Тестирование в Django Rest Framework, воспроизвести этот запрос на завивание?

curl -X POST -d "grant_type=password&username=<user_name>&password=<password>" 
http://<client_id>:<client_secret>@127.0.0.1:8000/v1/token/ 

Это то, что я пробовал:

def test_oauth2_token_for_user(self): 
     """ 
     Test Django OAuth Toolkit and make a request for am access token. 
     """ 
     self.client.credentials(HTTP_AUTHORIZATION='grant_type ' + "password&username=<user_name>&password=<password") 
     response = self.client.post('/api/token/') 

Может кто-нибудь сказать мне, с чего начать , Я не уверен, как отправить заголовок grant_type=password&username=<user_name>&password=<password> и отформатировать URL с именем пользователя и паролем.

ответ

2

Это не заголовок. Это абсолютно нормальные данные POST, которые - как показывает test client documentation - вы можете просто передать словарь в качестве второго параметра в post.

response = self.client.post('/api/token/', 
     {'grant_type': 'password', 'username': username, 'password': password}) 
0

Я не мог найти способ опубликовать этот api, отправив данные сообщения и данные авторизации с помощью тестового клиента django.

Мое решение было установлено испытание с LiveServerTestCase (https://docs.djangoproject.com/en/1.10/topics/testing/tools/#liveservertestcase) и пост с использованием библиотеки запросов:

class AuthTest(LiveServerTestCase): 

    def test_auth(self): 
     # ... 
     requests.post(
      http://localhost:8082/o/token/, 
      dict(username="myuser", 
       password="mypass", 
       grant_type="password" 
       ), 
      auth=(MYAPP.client_id, MYAPP.client_secret) 
     ) 
Смежные вопросы