Совет: тестирование 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 моего проекта. Но, надеюсь, это даст вам представление о том, как вы можете тестировать.
- Установить макет бэкенда.
- Тест перенаправления на сторонний сайт.
- Имитируйте успешный возврат и проверяйте учетная запись создана и / или вошла в систему.
Примечание: поскольку мы используем фиктивный бэкэнд,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 Обов`язково оперативно відповімо на усі запитіння
Поділіться в соцмережах
Подобные статьи: