test_requirements.py 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. import pytest
  2. from flask import _request_ctx_stack, request
  3. from flaskbb.utils import requirements as r
  4. def push_onto_request_context(**kw):
  5. for name, value in kw.items():
  6. setattr(_request_ctx_stack.top, name, value)
  7. @pytest.yield_fixture
  8. def request_context(application):
  9. with application.test_request_context():
  10. yield
  11. def test_Fred_IsNotAdmin(Fred):
  12. assert not r.IsAdmin(Fred, None)
  13. def test_IsAdmin_with_admin(admin_user):
  14. assert r.IsAdmin(admin_user, None)
  15. def test_IsAtleastModerator_with_mod(moderator_user):
  16. assert r.IsAtleastModerator(moderator_user, None)
  17. def test_IsAtleastModerator_with_supermod(super_moderator_user):
  18. assert r.IsAtleastModerator(super_moderator_user, None)
  19. def test_IsAtleastModerator_with_admin(admin_user):
  20. assert r.IsAtleastModerator(admin_user, None)
  21. def test_IsAtleastSuperModerator_with_not_smod(moderator_user):
  22. assert not r.IsAtleastSuperModerator(moderator_user, None)
  23. def test_CanBanUser_with_admin(admin_user):
  24. assert r.CanBanUser(admin_user, None)
  25. def test_CanBanUser_with_smod(super_moderator_user):
  26. assert r.CanBanUser(super_moderator_user, None)
  27. def test_CanBanUser_with_mod(moderator_user):
  28. assert r.CanBanUser(moderator_user, None)
  29. def test_Fred_CannotBanUser(Fred):
  30. assert not r.CanBanUser(Fred, None)
  31. def test_CanEditTopic_with_member(user, topic, request_context):
  32. push_onto_request_context(topic=topic)
  33. assert r.CanEditPost(user, request)
  34. def test_Fred_cannot_edit_other_members_post(user, Fred, topic, request_context):
  35. push_onto_request_context(topic=topic)
  36. assert not r.CanEditPost(Fred, request)
  37. def test_Fred_CannotEditLockedTopic(Fred, topic_locked, request_context):
  38. push_onto_request_context(topic=topic_locked)
  39. assert not r.CanEditPost(Fred, request)
  40. def test_Moderator_in_Forum_CanEditLockedTopic(moderator_user, topic_locked, request_context):
  41. push_onto_request_context(topic=topic_locked)
  42. assert r.CanEditPost(moderator_user, request)
  43. def test_FredIsAMod_but_still_cant_edit_topic_in_locked_forum(Fred, topic_locked, default_groups, request_context):
  44. Fred.primary_group = default_groups[2]
  45. push_onto_request_context(topic=topic_locked)
  46. assert not r.CanEditPost(Fred, request)
  47. def test_Fred_cannot_reply_to_locked_topic(Fred, topic_locked, request_context):
  48. push_onto_request_context(topic=topic_locked)
  49. assert not r.CanPostReply(Fred, request)
  50. def test_Fred_cannot_delete_others_post(Fred, topic, request_context):
  51. push_onto_request_context(post=topic.first_post)
  52. assert not r.CanDeletePost(Fred, request)
  53. def test_Mod_can_delete_others_post(moderator_user, topic, request_context):
  54. push_onto_request_context(post=topic.first_post)
  55. assert r.CanDeletePost(moderator_user, request)