Fork of Pleroma with site-specific changes and feature branches https://git.pleroma.social/pleroma/pleroma
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

97 lines
2.8KB

  1. defmodule Pleroma.UserInviteTokenTest do
  2. use ExUnit.Case, async: true
  3. use Pleroma.DataCase
  4. alias Pleroma.UserInviteToken
  5. describe "valid_invite?/1 one time invites" do
  6. setup do
  7. invite = %UserInviteToken{invite_type: "one_time"}
  8. {:ok, invite: invite}
  9. end
  10. test "not used returns true", %{invite: invite} do
  11. invite = %{invite | used: false}
  12. assert UserInviteToken.valid_invite?(invite)
  13. end
  14. test "used returns false", %{invite: invite} do
  15. invite = %{invite | used: true}
  16. refute UserInviteToken.valid_invite?(invite)
  17. end
  18. end
  19. describe "valid_invite?/1 reusable invites" do
  20. setup do
  21. invite = %UserInviteToken{
  22. invite_type: "reusable",
  23. max_use: 5
  24. }
  25. {:ok, invite: invite}
  26. end
  27. test "with less uses then max use returns true", %{invite: invite} do
  28. invite = %{invite | uses: 4}
  29. assert UserInviteToken.valid_invite?(invite)
  30. end
  31. test "with equal or more uses then max use returns false", %{invite: invite} do
  32. invite = %{invite | uses: 5}
  33. refute UserInviteToken.valid_invite?(invite)
  34. invite = %{invite | uses: 6}
  35. refute UserInviteToken.valid_invite?(invite)
  36. end
  37. end
  38. describe "valid_token?/1 date limited invites" do
  39. setup do
  40. invite = %UserInviteToken{invite_type: "date_limited"}
  41. {:ok, invite: invite}
  42. end
  43. test "expires today returns true", %{invite: invite} do
  44. invite = %{invite | expires_at: Date.utc_today()}
  45. assert UserInviteToken.valid_invite?(invite)
  46. end
  47. test "expires yesterday returns false", %{invite: invite} do
  48. invite = %{invite | expires_at: Date.add(Date.utc_today(), -1)}
  49. invite = Repo.insert!(invite)
  50. refute UserInviteToken.valid_invite?(invite)
  51. end
  52. end
  53. describe "valid_token?/1 reusable date limited invites" do
  54. setup do
  55. invite = %UserInviteToken{invite_type: "reusable_date_limited", max_use: 5}
  56. {:ok, invite: invite}
  57. end
  58. test "not overdue date and less uses returns true", %{invite: invite} do
  59. invite = %{invite | expires_at: Date.utc_today(), uses: 4}
  60. assert UserInviteToken.valid_invite?(invite)
  61. end
  62. test "overdue date and less uses returns false", %{invite: invite} do
  63. invite = %{invite | expires_at: Date.add(Date.utc_today(), -1)}
  64. invite = Repo.insert!(invite)
  65. refute UserInviteToken.valid_invite?(invite)
  66. end
  67. test "not overdue date with more uses returns false", %{invite: invite} do
  68. invite = %{invite | expires_at: Date.utc_today(), uses: 5}
  69. refute UserInviteToken.valid_invite?(invite)
  70. end
  71. test "overdue date with more uses returns false", %{invite: invite} do
  72. invite = %{invite | expires_at: Date.add(Date.utc_today(), -1), uses: 5}
  73. invite = Repo.insert!(invite)
  74. refute UserInviteToken.valid_invite?(invite)
  75. end
  76. end
  77. end