test_forum_utils.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435
  1. from flask import _request_ctx_stack, url_for
  2. from flaskbb.forum import utils
  3. from flaskbb.forum.models import Forum
  4. from flaskbb.user.models import Group
  5. class TestForceLoginHelpers(object):
  6. def test_would_not_force_login_for_authed_user(self, user, forum):
  7. assert not utils.should_force_login(user, forum)
  8. def test_would_not_force_login_for_anon_in_guest_allowed(self, forum, guest):
  9. assert not utils.should_force_login(guest, forum)
  10. def test_would_force_login_for_anon_in_guest_unallowed(self, database, guest, category):
  11. with database.session.no_autoflush:
  12. forum = Forum(title="no guest", category=category)
  13. forum.groups = Group.query.filter(Group.guest == False).all()
  14. forum.save()
  15. assert utils.should_force_login(guest, forum)
  16. def test_redirects_to_login_with_anon(
  17. self, database, guest, category, request_context, application
  18. ):
  19. with database.session.no_autoflush:
  20. forum = Forum(title="no guest", category=category)
  21. forum.groups = Group.query.filter(Group.guest == False).all()
  22. forum.save()
  23. # sets current_forum
  24. _request_ctx_stack.top.forum = forum
  25. result = utils.force_login_if_needed()
  26. # use in rather than == because it can contain query params as well
  27. assert url_for(application.config["LOGIN_VIEW"]) in result.headers["Location"]