test_providers.py 3.0 KB

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