test_user_syncing.py 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. from unittest.mock import Mock
  2. import pytest
  3. from ..user import get_or_create_user, user_needs_updating
  4. SSO_ID = 1
  5. @pytest.fixture
  6. def sso_user(user):
  7. user.sso_id = SSO_ID
  8. user.save()
  9. return user
  10. def test_new_user_is_created_if_user_with_given_sso_id_doesnt_exist(dynamic_settings):
  11. user = get_or_create_user(
  12. Mock(settings=dynamic_settings),
  13. {
  14. "id": SSO_ID,
  15. "username": "SsoUser",
  16. "email": "ssouser@example.com",
  17. "is_active": False,
  18. },
  19. )
  20. assert user.sso_id == SSO_ID
  21. assert user.username == "SsoUser"
  22. assert user.email == "ssouser@example.com"
  23. assert user.is_active is False
  24. def test_user_with_sso_id_is_returned_if_they_exist(dynamic_settings, sso_user):
  25. user = get_or_create_user(
  26. Mock(settings=dynamic_settings),
  27. {"id": SSO_ID, "username": "SsoUser", "email": "ssouser@example.com"},
  28. )
  29. assert user == sso_user
  30. def test_user_with_sso_id_is_updated_using_provider_data(dynamic_settings, sso_user):
  31. user = get_or_create_user(
  32. Mock(settings=dynamic_settings),
  33. {
  34. "id": SSO_ID,
  35. "username": "SsoUser",
  36. "email": "ssouser@example.com",
  37. "is_active": False,
  38. },
  39. )
  40. sso_user.refresh_from_db()
  41. assert sso_user.username == "SsoUser"
  42. assert sso_user.email == "ssouser@example.com"
  43. assert sso_user.is_active is False
  44. def test_user_needs_updating_if_their_username_changed(user):
  45. assert user_needs_updating(user, {"username": "Changed", "email": user.email})
  46. def test_user_needs_updating_if_their_email_changed(user):
  47. assert user_needs_updating(
  48. user, {"username": user.username, "email": "changed@example.com"}
  49. )
  50. def test_user_needs_updating_if_their_active_status_changed(user):
  51. assert user_needs_updating(
  52. user,
  53. {
  54. "username": user.username,
  55. "email": user.email,
  56. "is_active": not user.is_active,
  57. },
  58. )
  59. def test_user_doesnt_need_updating_if_their_data_is_same(user):
  60. assert not user_needs_updating(
  61. user,
  62. {"username": user.username, "email": user.email, "is_active": user.is_active},
  63. )