test_registration_processors.py 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. from flask import get_flashed_messages
  2. from flask_login import current_user
  3. from flaskbb.auth.services.registration import (
  4. AutoActivateUserPostProcessor,
  5. AutologinPostProcessor,
  6. SendActivationPostProcessor,
  7. )
  8. from flaskbb.core.auth.activation import AccountActivator
  9. from flaskbb.utils.settings import flaskbb_config
  10. class TestAutoActivateUserPostProcessor(object):
  11. def test_activates_when_user_activation_isnt_required(
  12. self, unactivated_user, database
  13. ):
  14. config = {"ACTIVATE_ACCOUNT": False}
  15. processor = AutoActivateUserPostProcessor(database, config)
  16. processor.post_process(unactivated_user)
  17. assert unactivated_user.activated
  18. def test_doesnt_activate_when_user_activation_is_required(
  19. self, database, unactivated_user
  20. ):
  21. config = {"ACTIVATE_ACCOUNT": True}
  22. processor = AutoActivateUserPostProcessor(database, config)
  23. processor.post_process(unactivated_user)
  24. assert not unactivated_user.activated
  25. class TestAutologinPostProcessor(object):
  26. def test_sets_user_as_current_user(
  27. self, Fred, request_context, default_settings
  28. ):
  29. flaskbb_config["ACTIVATE_ACCOUNT"] = False
  30. processor = AutologinPostProcessor()
  31. processor.post_process(Fred)
  32. expected_message = ("success", "Thanks for registering.")
  33. assert current_user.username == Fred.username
  34. assert (
  35. get_flashed_messages(with_categories=True)[0] == expected_message
  36. )
  37. class TestSendActivationPostProcessor(object):
  38. class SpyingActivator(AccountActivator):
  39. def __init__(self):
  40. self.called = False
  41. self.user = None
  42. def initiate_account_activation(self, user):
  43. self.called = True
  44. self.user = user
  45. def activate_account(self, token):
  46. pass
  47. def test_sends_activation_notice(
  48. self, request_context, unactivated_user, default_settings
  49. ):
  50. activator = self.SpyingActivator()
  51. processor = SendActivationPostProcessor(activator)
  52. processor.post_process(unactivated_user)
  53. expected_message = (
  54. "success",
  55. "An account activation email has been sent to notactive@example.com", # noqa
  56. )
  57. assert activator.called
  58. assert activator.user == unactivated_user.email
  59. assert (
  60. get_flashed_messages(with_categories=True)[0] == expected_message
  61. )