logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma git clone https://anongit.hacktivis.me/git/pleroma.git/

scheduled_activity_test.exs (3855B)


  1. # Pleroma: A lightweight social networking server
  2. # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
  3. # SPDX-License-Identifier: AGPL-3.0-only
  4. defmodule Pleroma.ScheduledActivityTest do
  5. use Pleroma.DataCase, async: true
  6. alias Pleroma.ScheduledActivity
  7. alias Pleroma.Test.StaticConfig
  8. alias Pleroma.UnstubbedConfigMock, as: ConfigMock
  9. import Mox
  10. import Pleroma.Factory
  11. describe "creation" do
  12. test "scheduled activities with jobs when ScheduledActivity enabled" do
  13. ConfigMock
  14. |> stub(:get, fn
  15. [ScheduledActivity, :enabled] -> true
  16. path -> StaticConfig.get(path)
  17. end)
  18. user = insert(:user)
  19. today =
  20. NaiveDateTime.utc_now()
  21. |> NaiveDateTime.add(:timer.minutes(6), :millisecond)
  22. |> NaiveDateTime.to_iso8601()
  23. attrs = %{params: %{}, scheduled_at: today}
  24. {:ok, sa1} = ScheduledActivity.create(user, attrs)
  25. {:ok, sa2} = ScheduledActivity.create(user, attrs)
  26. jobs = Repo.all(from(j in Oban.Job, where: j.queue == "federator_outgoing", select: j.args))
  27. assert jobs == [%{"activity_id" => sa1.id}, %{"activity_id" => sa2.id}]
  28. end
  29. test "scheduled activities without jobs when ScheduledActivity disabled" do
  30. ConfigMock
  31. |> stub(:get, fn
  32. [ScheduledActivity, :enabled] -> false
  33. path -> StaticConfig.get(path)
  34. end)
  35. user = insert(:user)
  36. today =
  37. NaiveDateTime.utc_now()
  38. |> NaiveDateTime.add(:timer.minutes(6), :millisecond)
  39. |> NaiveDateTime.to_iso8601()
  40. attrs = %{params: %{}, scheduled_at: today}
  41. {:ok, _sa1} = ScheduledActivity.create(user, attrs)
  42. {:ok, _sa2} = ScheduledActivity.create(user, attrs)
  43. jobs =
  44. Repo.all(from(j in Oban.Job, where: j.queue == "scheduled_activities", select: j.args))
  45. assert jobs == []
  46. end
  47. test "when daily user limit is exceeded" do
  48. ConfigMock
  49. |> stub_with(StaticConfig)
  50. user = insert(:user)
  51. today =
  52. NaiveDateTime.utc_now()
  53. |> NaiveDateTime.add(:timer.minutes(6), :millisecond)
  54. |> NaiveDateTime.to_iso8601()
  55. attrs = %{params: %{}, scheduled_at: today}
  56. {:ok, _} = ScheduledActivity.create(user, attrs)
  57. {:ok, _} = ScheduledActivity.create(user, attrs)
  58. {:error, changeset} = ScheduledActivity.create(user, attrs)
  59. assert changeset.errors == [scheduled_at: {"daily limit exceeded", []}]
  60. end
  61. test "when total user limit is exceeded" do
  62. ConfigMock
  63. |> stub_with(StaticConfig)
  64. user = insert(:user)
  65. today =
  66. NaiveDateTime.utc_now()
  67. |> NaiveDateTime.add(:timer.minutes(6), :millisecond)
  68. |> NaiveDateTime.to_iso8601()
  69. tomorrow =
  70. NaiveDateTime.utc_now()
  71. |> NaiveDateTime.add(:timer.hours(36), :millisecond)
  72. |> NaiveDateTime.to_iso8601()
  73. {:ok, _} = ScheduledActivity.create(user, %{params: %{}, scheduled_at: today})
  74. {:ok, _} = ScheduledActivity.create(user, %{params: %{}, scheduled_at: today})
  75. {:ok, _} = ScheduledActivity.create(user, %{params: %{}, scheduled_at: tomorrow})
  76. {:error, changeset} = ScheduledActivity.create(user, %{params: %{}, scheduled_at: tomorrow})
  77. assert changeset.errors == [scheduled_at: {"total limit exceeded", []}]
  78. end
  79. test "when scheduled_at is earlier than 5 minute from now" do
  80. ConfigMock
  81. |> stub_with(StaticConfig)
  82. user = insert(:user)
  83. scheduled_at =
  84. NaiveDateTime.utc_now()
  85. |> NaiveDateTime.add(:timer.minutes(4), :millisecond)
  86. |> NaiveDateTime.to_iso8601()
  87. attrs = %{params: %{}, scheduled_at: scheduled_at}
  88. {:error, changeset} = ScheduledActivity.create(user, attrs)
  89. assert changeset.errors == [scheduled_at: {"must be at least 5 minutes from now", []}]
  90. end
  91. end
  92. end