WEBYK WEBYK Індивідуальні OnLine уроки з web технологій
+38 093 766 39 11
oleggpann@gmail.com

Совет: тестирование Python Social Auth

Python Social Auth - отличная библиотека для интеграции сторонних логинов в ваше веб-приложение. Он поддерживает несколько платформ и несколько сторонних логинов. Это также здорово, потому что, если сторонняя организация не поддерживается, добавить новую довольно легко. Я недавно создал пользовательскую интеграцию и поэтому хотел провести дополнительное автоматизированное тестирование интеграции. Вот быстрый способ тестирования без необходимости имитировать HTTP-вызовы или использовать внешние внешние конечные точки.

# 1 Создание Mock Backend

Я основал свой тест на Github, поэтому вам может потребоваться переопределить больше методов для других backends , В основном вам нужно переопределить 2 метода. Первый переопределяет проверку состояния, поэтому мы можем использовать составленные токены, а второй перехватывает выборку данных о пользователе, поэтому нам не нужно совершать внешние вызовы.from social_core.backends.github import GithubOAuth2   class GithubFake(GithubOAuth2):     def validate_state(self):         return 'good'      def get_json(self, url, *args, **kwargs):         return {             "id": 12345,             "login": "pizzapanther",             "expires": None,             "auth_time": 1565736030,             "token_type": "bearer",             "access_token": "narf-token",             "email": "narf@aol.com",         } 

# 2 Напишите свой тест

Этот фрагмент кода будет немного менее полезным, поскольку он использует некоторые настраиваемые элементы в среде pytest моего проекта. Но, надеюсь, это даст вам представление о том, как вы можете тестировать. 

  1. Установить макет бэкенда.
  2. Тест перенаправления на сторонний сайт.
  3. Имитируйте успешный возврат и проверяйте учетная запись создана и / или вошла в систему.

Примечание: поскольку мы используем фиктивный бэкэнд,codeа такжеstateпараметры теперь могут быть недействительными.import pytest import requests  GITHUB_CONFIG = {   'backends': ['myapp.backends.github.GithubFake'],   'settings': {     'github_secret': 'super-long-secret',     'github_key': 'super-short-secret',   } }   @pytest.mark.app_config(config=GITHUB_CONFIG, key='auth_backends') def test_psa_login_flow(base_url):     # test login init     response = requests.get(         f'{base_url}/auth/login/github',         allow_redirects=False     )     assert response.status_code == 302     assert response.headers['Location'].startswith(         'https://github.com/login/oauth/authorize'     )      # test login return     response = requests.get(         f'{base_url}/auth/complete/github?code=TEST&state=TEST',         allow_redirects=False     )     assert response.status_code == 302     assert 'Set-Cookie' in response.headers     assert 'login_token=' in response.headers['Set-Cookie'] Веселого тестирования!

Теги

Программирование на Python Coding Последние технические истории Python Social Auth Создание тестового бэкэнда Перенаправление Моделирование успешного возврата Продолжить обсуждение
Источник: https://hackernoon.com/quick-tip-testing-python-social-auth-paegk40oh

Якщо у вас виникли питання, вбо ви бажаєте записатися на індивідуальний урок, замовити статтю (інструкцію) або придбати відеоурок, пишіть нам на:
скайп: olegg.pann
telegram, viber - +380937663911
додавайтесь у телеграм-канал: t.me/webyk
email: oleggpann@gmail.com
ми у fb: www.facebook.com/webprograming24
Обов`язково оперативно відповімо на усі запитіння


Поділіться в соцмережах



Подобные статьи:


facebook
×
Підришіться на цікаві пости.
Підписатись