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.

101 lines
3.0KB

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