123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- from unittest.mock import Mock
- import pytest
- from .. import SOCIALAUTH_CACHE
- from ..enabledproviders import get_enabled_providers, get_provider_settings
- from ..models import SocialAuthProvider
- @pytest.fixture
- def provider(db):
- return SocialAuthProvider.objects.create(
- provider="facebook", is_active=True, order=0
- )
- def test_enabled_providers_are_read_from_db_if_cache_is_not_available(
- db, mocker, cache_versions, django_assert_num_queries
- ):
- mocker.patch("django.core.cache.cache.get", return_value=None)
- with django_assert_num_queries(1):
- get_enabled_providers(cache_versions)
- def test_enabled_providers_are_loaded_from_cache_if_it_is_set(
- db, mocker, cache_versions, django_assert_num_queries
- ):
- cache_get = mocker.patch("django.core.cache.cache.get", return_value={})
- with django_assert_num_queries(0):
- get_enabled_providers(cache_versions)
- cache_get.assert_called_once()
- def test_enabled_providers_cache_is_set_if_none_exists(db, mocker, cache_versions):
- cache_set = mocker.patch("django.core.cache.cache.set")
- mocker.patch("django.core.cache.cache.get", return_value=None)
- get_enabled_providers(cache_versions)
- cache_set.assert_called_once()
- def test_enabled_providers_cache_is_not_set_if_it_already_exists(
- db, mocker, cache_versions, django_assert_num_queries
- ):
- cache_set = mocker.patch("django.core.cache.cache.set")
- mocker.patch("django.core.cache.cache.get", return_value={})
- with django_assert_num_queries(0):
- get_enabled_providers(cache_versions)
- cache_set.assert_not_called()
- def test_enabled_providers_cache_key_includes_cache_name_and_version(
- db, mocker, cache_versions
- ):
- cache_set = mocker.patch("django.core.cache.cache.set")
- mocker.patch("django.core.cache.cache.get", return_value=None)
- get_enabled_providers(cache_versions)
- cache_key = cache_set.call_args[0][0]
- assert SOCIALAUTH_CACHE in cache_key
- assert cache_versions[SOCIALAUTH_CACHE] in cache_key
- def test_enabled_providers_are_returned_as_dict(provider, mocker, cache_versions):
- mocker.patch("django.core.cache.cache.set")
- mocker.patch("django.core.cache.cache.get", return_value=None)
- providers = get_enabled_providers(cache_versions)
- assert provider.pk in providers
- def test_enabled_providers_dict_includes_settings(provider, mocker, cache_versions):
- mocker.patch("django.core.cache.cache.set")
- mocker.patch("django.core.cache.cache.get", return_value=None)
- providers = get_enabled_providers(cache_versions)
- assert providers[provider.pk]["settings"]
- def test_enabled_providers_dict_includes_auth_backend(provider, mocker, cache_versions):
- mocker.patch("django.core.cache.cache.set")
- mocker.patch("django.core.cache.cache.get", return_value=None)
- providers = get_enabled_providers(cache_versions)
- assert providers[provider.pk]["auth_backend"]
- def test_provider_settings_keys_are_capitalized():
- provider = Mock(pk="google-oauth2", settings={"key": "text-key"})
- settings = get_provider_settings(provider)
- assert settings == {"KEY": "text-key"}
- def test_provider_settings_are_merged_from_model_and_defaults():
- provider = Mock(pk="facebook", settings={"key": "text-key"})
- settings = get_provider_settings(provider)
- assert settings == {"SCOPE": ["email"], "KEY": "text-key"}
|