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.

56 lines
1.6KB

  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.ActivityExpirationTest do
  5. use Pleroma.DataCase
  6. alias Pleroma.ActivityExpiration
  7. import Pleroma.Factory
  8. setup do: clear_config([ActivityExpiration, :enabled])
  9. test "finds activities due to be deleted only" do
  10. activity = insert(:note_activity)
  11. expiration_due =
  12. insert(:expiration_in_the_past, %{activity_id: activity.id}) |> Repo.preload(:activity)
  13. activity2 = insert(:note_activity)
  14. insert(:expiration_in_the_future, %{activity_id: activity2.id})
  15. expirations = ActivityExpiration.due_expirations()
  16. assert length(expirations) == 1
  17. assert hd(expirations) == expiration_due
  18. end
  19. test "denies expirations that don't live long enough" do
  20. activity = insert(:note_activity)
  21. now = NaiveDateTime.utc_now()
  22. assert {:error, _} = ActivityExpiration.create(activity, now)
  23. end
  24. test "deletes an expiration activity" do
  25. Pleroma.Config.put([ActivityExpiration, :enabled], true)
  26. activity = insert(:note_activity)
  27. naive_datetime =
  28. NaiveDateTime.add(
  29. NaiveDateTime.utc_now(),
  30. -:timer.minutes(2),
  31. :millisecond
  32. )
  33. expiration =
  34. insert(
  35. :expiration_in_the_past,
  36. %{activity_id: activity.id, scheduled_at: naive_datetime}
  37. )
  38. Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker.perform(%Oban.Job{})
  39. refute Pleroma.Repo.get(Pleroma.Activity, activity.id)
  40. refute Pleroma.Repo.get(Pleroma.ActivityExpiration, expiration.id)
  41. end
  42. end