test_providers.py 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. import pytest
  2. from ..providers import Providers
  3. class Mock:
  4. def __init__(self, name):
  5. self.name = name
  6. @pytest.fixture
  7. def auth_backend():
  8. return Mock(name="facebook")
  9. @pytest.fixture
  10. def providers(auth_backend):
  11. obj = Providers()
  12. obj.add(
  13. provider="facebook",
  14. name="Facebook",
  15. auth_backend=auth_backend,
  16. settings={"scope": ["email"]},
  17. admin_form=True,
  18. admin_template="form.html",
  19. )
  20. return obj
  21. def test_provider_can_be_added_to_providers(auth_backend):
  22. providers = Providers()
  23. providers.add(
  24. provider="facebook",
  25. name="Facebook",
  26. auth_backend=auth_backend,
  27. settings={"scope": ["email"]},
  28. admin_form=True,
  29. admin_template="form.html",
  30. )
  31. assert providers.dict() == {
  32. "facebook": {
  33. "provider": "facebook",
  34. "name": "Facebook",
  35. "auth_backend": auth_backend,
  36. "settings": {"scope": ["email"]},
  37. "admin_form": True,
  38. "admin_template": "form.html",
  39. }
  40. }
  41. assert providers.list() == [
  42. {
  43. "provider": "facebook",
  44. "name": "Facebook",
  45. "auth_backend": auth_backend,
  46. "settings": {"scope": ["email"]},
  47. "admin_form": True,
  48. "admin_template": "form.html",
  49. }
  50. ]
  51. def test_adding_provider_fails_if_provider_key_is_different_from_backend_name(
  52. auth_backend,
  53. ):
  54. providers = Providers()
  55. with pytest.raises(ValueError):
  56. providers.add(
  57. provider="facebook-oauth",
  58. name="Facebook",
  59. auth_backend=auth_backend,
  60. settings={"scope": ["email"]},
  61. admin_form=True,
  62. admin_template="form.html",
  63. )
  64. assert providers.dict() == {}
  65. assert providers.list() == []
  66. def test_providers_list_is_resorted_when_new_provider_is_added(providers, auth_backend):
  67. other_auth_backend = Mock(name="auth")
  68. providers.add(
  69. provider="auth",
  70. name="Auth",
  71. auth_backend=other_auth_backend,
  72. admin_form=True,
  73. admin_template="form.html",
  74. )
  75. assert providers.list() == [
  76. {
  77. "provider": "auth",
  78. "name": "Auth",
  79. "auth_backend": other_auth_backend,
  80. "settings": {},
  81. "admin_form": True,
  82. "admin_template": "form.html",
  83. },
  84. {
  85. "provider": "facebook",
  86. "name": "Facebook",
  87. "auth_backend": auth_backend,
  88. "settings": {"scope": ["email"]},
  89. "admin_form": True,
  90. "admin_template": "form.html",
  91. },
  92. ]
  93. def test_util_returns_true_for_existing_provider(providers):
  94. assert providers.is_registered("facebook") is True
  95. def test_util_returns_false_for_nonexisting_provider(providers):
  96. assert providers.is_registered("github") is False
  97. def test_getter_returns_given_provider_name(providers):
  98. assert providers.get_name("facebook") == "Facebook"
  99. def test_getter_returns_given_provider_auth_backend(providers, auth_backend):
  100. assert providers.get_auth_backend("facebook") is auth_backend
  101. def test_getter_returns_given_provider_settings(providers):
  102. assert providers.get_settings("facebook") == {"scope": ["email"]}
  103. def test_getter_returns_given_provider_admin_form_class(providers):
  104. assert providers.get_admin_form_class("facebook") is True
  105. def test_getter_returns_given_provider_admin_template_name(providers):
  106. assert providers.get_admin_template_name("facebook") == "form.html"