diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/activity_expiration_test.exs | 25 | ||||
| -rw-r--r-- | test/daemons/activity_expiration_daemon_test.exs | 17 | ||||
| -rw-r--r-- | test/daemons/scheduled_activity_daemon_test.exs | 19 | ||||
| -rw-r--r-- | test/scheduled_activity_test.exs | 41 | ||||
| -rw-r--r-- | test/support/helpers.ex | 6 | ||||
| -rw-r--r-- | test/web/mastodon_api/controllers/scheduled_activity_controller_test.exs | 46 | ||||
| -rw-r--r-- | test/web/node_info_test.exs | 1 | ||||
| -rw-r--r-- | test/workers/cron/clear_oauth_token_worker_test.exs | 22 | ||||
| -rw-r--r-- | test/workers/cron/digest_emails_worker_test.exs (renamed from test/daemons/digest_email_daemon_test.exs) | 15 | ||||
| -rw-r--r-- | test/workers/cron/purge_expired_activities_worker_test.exs | 56 | ||||
| -rw-r--r-- | test/workers/scheduled_activity_worker_test.exs | 52 | 
11 files changed, 255 insertions, 45 deletions
| diff --git a/test/activity_expiration_test.exs b/test/activity_expiration_test.exs index 4948fae16..2fc593b8c 100644 --- a/test/activity_expiration_test.exs +++ b/test/activity_expiration_test.exs @@ -7,6 +7,8 @@ defmodule Pleroma.ActivityExpirationTest do    alias Pleroma.ActivityExpiration    import Pleroma.Factory +  clear_config([ActivityExpiration, :enabled]) +    test "finds activities due to be deleted only" do      activity = insert(:note_activity)      expiration_due = insert(:expiration_in_the_past, %{activity_id: activity.id}) @@ -24,4 +26,27 @@ defmodule Pleroma.ActivityExpirationTest do      now = NaiveDateTime.utc_now()      assert {:error, _} = ActivityExpiration.create(activity, now)    end + +  test "deletes an expiration activity" do +    Pleroma.Config.put([ActivityExpiration, :enabled], true) +    activity = insert(:note_activity) + +    naive_datetime = +      NaiveDateTime.add( +        NaiveDateTime.utc_now(), +        -:timer.minutes(2), +        :millisecond +      ) + +    expiration = +      insert( +        :expiration_in_the_past, +        %{activity_id: activity.id, scheduled_at: naive_datetime} +      ) + +    Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker.perform(:ops, :pid) + +    refute Pleroma.Repo.get(Pleroma.Activity, activity.id) +    refute Pleroma.Repo.get(Pleroma.ActivityExpiration, expiration.id) +  end  end diff --git a/test/daemons/activity_expiration_daemon_test.exs b/test/daemons/activity_expiration_daemon_test.exs deleted file mode 100644 index b51132fb0..000000000 --- a/test/daemons/activity_expiration_daemon_test.exs +++ /dev/null @@ -1,17 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/> -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.ActivityExpirationWorkerTest do -  use Pleroma.DataCase -  alias Pleroma.Activity -  import Pleroma.Factory - -  test "deletes an activity" do -    activity = insert(:note_activity) -    expiration = insert(:expiration_in_the_past, %{activity_id: activity.id}) -    Pleroma.Daemons.ActivityExpirationDaemon.perform(:execute, expiration.id) - -    refute Repo.get(Activity, activity.id) -  end -end diff --git a/test/daemons/scheduled_activity_daemon_test.exs b/test/daemons/scheduled_activity_daemon_test.exs deleted file mode 100644 index c8e464491..000000000 --- a/test/daemons/scheduled_activity_daemon_test.exs +++ /dev/null @@ -1,19 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/> -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.ScheduledActivityDaemonTest do -  use Pleroma.DataCase -  alias Pleroma.ScheduledActivity -  import Pleroma.Factory - -  test "creates a status from the scheduled activity" do -    user = insert(:user) -    scheduled_activity = insert(:scheduled_activity, user: user, params: %{status: "hi"}) -    Pleroma.Daemons.ScheduledActivityDaemon.perform(:execute, scheduled_activity.id) - -    refute Repo.get(ScheduledActivity, scheduled_activity.id) -    activity = Repo.all(Pleroma.Activity) |> Enum.find(&(&1.actor == user.ap_id)) -    assert Pleroma.Object.normalize(activity).data["content"] == "hi" -  end -end diff --git a/test/scheduled_activity_test.exs b/test/scheduled_activity_test.exs index dcf12fb49..6c13d300a 100644 --- a/test/scheduled_activity_test.exs +++ b/test/scheduled_activity_test.exs @@ -8,11 +8,51 @@ defmodule Pleroma.ScheduledActivityTest do    alias Pleroma.ScheduledActivity    import Pleroma.Factory +  clear_config([ScheduledActivity, :enabled]) +    setup context do      DataCase.ensure_local_uploader(context)    end    describe "creation" do +    test "scheduled activities with jobs when ScheduledActivity enabled" do +      Pleroma.Config.put([ScheduledActivity, :enabled], true) +      user = insert(:user) + +      today = +        NaiveDateTime.utc_now() +        |> NaiveDateTime.add(:timer.minutes(6), :millisecond) +        |> NaiveDateTime.to_iso8601() + +      attrs = %{params: %{}, scheduled_at: today} +      {:ok, sa1} = ScheduledActivity.create(user, attrs) +      {:ok, sa2} = ScheduledActivity.create(user, attrs) + +      jobs = +        Repo.all(from(j in Oban.Job, where: j.queue == "scheduled_activities", select: j.args)) + +      assert jobs == [%{"activity_id" => sa1.id}, %{"activity_id" => sa2.id}] +    end + +    test "scheduled activities without jobs when ScheduledActivity disabled" do +      Pleroma.Config.put([ScheduledActivity, :enabled], false) +      user = insert(:user) + +      today = +        NaiveDateTime.utc_now() +        |> NaiveDateTime.add(:timer.minutes(6), :millisecond) +        |> NaiveDateTime.to_iso8601() + +      attrs = %{params: %{}, scheduled_at: today} +      {:ok, _sa1} = ScheduledActivity.create(user, attrs) +      {:ok, _sa2} = ScheduledActivity.create(user, attrs) + +      jobs = +        Repo.all(from(j in Oban.Job, where: j.queue == "scheduled_activities", select: j.args)) + +      assert jobs == [] +    end +      test "when daily user limit is exceeded" do        user = insert(:user) @@ -24,6 +64,7 @@ defmodule Pleroma.ScheduledActivityTest do        attrs = %{params: %{}, scheduled_at: today}        {:ok, _} = ScheduledActivity.create(user, attrs)        {:ok, _} = ScheduledActivity.create(user, attrs) +        {:error, changeset} = ScheduledActivity.create(user, attrs)        assert changeset.errors == [scheduled_at: {"daily limit exceeded", []}]      end diff --git a/test/support/helpers.ex b/test/support/helpers.ex index 9f817622d..d36c29cef 100644 --- a/test/support/helpers.ex +++ b/test/support/helpers.ex @@ -54,6 +54,12 @@ defmodule Pleroma.Tests.Helpers do            clear_config_all: 2          ] +      def to_datetime(naive_datetime) do +        naive_datetime +        |> DateTime.from_naive!("Etc/UTC") +        |> DateTime.truncate(:second) +      end +        def collect_ids(collection) do          collection          |> Enum.map(& &1.id) diff --git a/test/web/mastodon_api/controllers/scheduled_activity_controller_test.exs b/test/web/mastodon_api/controllers/scheduled_activity_controller_test.exs index 9666a7f2e..6317d1b47 100644 --- a/test/web/mastodon_api/controllers/scheduled_activity_controller_test.exs +++ b/test/web/mastodon_api/controllers/scheduled_activity_controller_test.exs @@ -9,6 +9,9 @@ defmodule Pleroma.Web.MastodonAPI.ScheduledActivityControllerTest do    alias Pleroma.ScheduledActivity    import Pleroma.Factory +  import Ecto.Query + +  clear_config([ScheduledActivity, :enabled])    test "shows scheduled activities" do      %{user: user, conn: conn} = oauth_access(["read:statuses"]) @@ -52,11 +55,26 @@ defmodule Pleroma.Web.MastodonAPI.ScheduledActivityControllerTest do    end    test "updates a scheduled activity" do +    Pleroma.Config.put([ScheduledActivity, :enabled], true)      %{user: user, conn: conn} = oauth_access(["write:statuses"]) -    scheduled_activity = insert(:scheduled_activity, user: user) -    new_scheduled_at = -      NaiveDateTime.add(NaiveDateTime.utc_now(), :timer.minutes(120), :millisecond) +    scheduled_at = Timex.shift(NaiveDateTime.utc_now(), minutes: 60) + +    {:ok, scheduled_activity} = +      ScheduledActivity.create( +        user, +        %{ +          scheduled_at: scheduled_at, +          params: build(:note).data +        } +      ) + +    job = Repo.one(from(j in Oban.Job, where: j.queue == "scheduled_activities")) + +    assert job.args == %{"activity_id" => scheduled_activity.id} +    assert DateTime.truncate(job.scheduled_at, :second) == to_datetime(scheduled_at) + +    new_scheduled_at = Timex.shift(NaiveDateTime.utc_now(), minutes: 120)      res_conn =        put(conn, "/api/v1/scheduled_statuses/#{scheduled_activity.id}", %{ @@ -65,6 +83,9 @@ defmodule Pleroma.Web.MastodonAPI.ScheduledActivityControllerTest do      assert %{"scheduled_at" => expected_scheduled_at} = json_response(res_conn, 200)      assert expected_scheduled_at == Pleroma.Web.CommonAPI.Utils.to_masto_date(new_scheduled_at) +    job = refresh_record(job) + +    assert DateTime.truncate(job.scheduled_at, :second) == to_datetime(new_scheduled_at)      res_conn = put(conn, "/api/v1/scheduled_statuses/404", %{scheduled_at: new_scheduled_at}) @@ -72,8 +93,22 @@ defmodule Pleroma.Web.MastodonAPI.ScheduledActivityControllerTest do    end    test "deletes a scheduled activity" do +    Pleroma.Config.put([ScheduledActivity, :enabled], true)      %{user: user, conn: conn} = oauth_access(["write:statuses"]) -    scheduled_activity = insert(:scheduled_activity, user: user) +    scheduled_at = Timex.shift(NaiveDateTime.utc_now(), minutes: 60) + +    {:ok, scheduled_activity} = +      ScheduledActivity.create( +        user, +        %{ +          scheduled_at: scheduled_at, +          params: build(:note).data +        } +      ) + +    job = Repo.one(from(j in Oban.Job, where: j.queue == "scheduled_activities")) + +    assert job.args == %{"activity_id" => scheduled_activity.id}      res_conn =        conn @@ -81,7 +116,8 @@ defmodule Pleroma.Web.MastodonAPI.ScheduledActivityControllerTest do        |> delete("/api/v1/scheduled_statuses/#{scheduled_activity.id}")      assert %{} = json_response(res_conn, 200) -    assert nil == Repo.get(ScheduledActivity, scheduled_activity.id) +    refute Repo.get(ScheduledActivity, scheduled_activity.id) +    refute Repo.get(Oban.Job, job.id)      res_conn =        conn diff --git a/test/web/node_info_test.exs b/test/web/node_info_test.exs index 9a574a38d..39dd72cec 100644 --- a/test/web/node_info_test.exs +++ b/test/web/node_info_test.exs @@ -6,6 +6,7 @@ defmodule Pleroma.Web.NodeInfoTest do    use Pleroma.Web.ConnCase    import Pleroma.Factory +  clear_config([:mrf_simple])    test "GET /.well-known/nodeinfo", %{conn: conn} do      links = diff --git a/test/workers/cron/clear_oauth_token_worker_test.exs b/test/workers/cron/clear_oauth_token_worker_test.exs new file mode 100644 index 000000000..adea47326 --- /dev/null +++ b/test/workers/cron/clear_oauth_token_worker_test.exs @@ -0,0 +1,22 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Workers.Cron.ClearOauthTokenWorkerTest do +  use Pleroma.DataCase + +  import Pleroma.Factory +  alias Pleroma.Workers.Cron.ClearOauthTokenWorker + +  clear_config([:oauth2, :clean_expired_tokens]) + +  test "deletes expired tokens" do +    insert(:oauth_token, +      valid_until: NaiveDateTime.add(NaiveDateTime.utc_now(), -60 * 10) +    ) + +    Pleroma.Config.put([:oauth2, :clean_expired_tokens], true) +    ClearOauthTokenWorker.perform(:opts, :job) +    assert Pleroma.Repo.all(Pleroma.Web.OAuth.Token) == [] +  end +end diff --git a/test/daemons/digest_email_daemon_test.exs b/test/workers/cron/digest_emails_worker_test.exs index faf592d5f..073615d9e 100644 --- a/test/daemons/digest_email_daemon_test.exs +++ b/test/workers/cron/digest_emails_worker_test.exs @@ -2,16 +2,24 @@  # Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.DigestEmailDaemonTest do +defmodule Pleroma.Workers.Cron.DigestEmailsWorkerTest do    use Pleroma.DataCase +    import Pleroma.Factory -  alias Pleroma.Daemons.DigestEmailDaemon    alias Pleroma.Tests.ObanHelpers    alias Pleroma.User    alias Pleroma.Web.CommonAPI +  clear_config([:email_notifications, :digest]) +    test "it sends digest emails" do +    Pleroma.Config.put([:email_notifications, :digest], %{ +      active: true, +      inactivity_threshold: 7, +      interval: 7 +    }) +      user = insert(:user)      date = @@ -23,8 +31,7 @@ defmodule Pleroma.DigestEmailDaemonTest do      {:ok, _} = User.switch_email_notifications(user2, "digest", true)      CommonAPI.post(user, %{"status" => "hey @#{user2.nickname}!"}) -    DigestEmailDaemon.perform() -    ObanHelpers.perform_all() +    Pleroma.Workers.Cron.DigestEmailsWorker.perform(:opts, :pid)      # Performing job(s) enqueued at previous step      ObanHelpers.perform_all() diff --git a/test/workers/cron/purge_expired_activities_worker_test.exs b/test/workers/cron/purge_expired_activities_worker_test.exs new file mode 100644 index 000000000..c2561683e --- /dev/null +++ b/test/workers/cron/purge_expired_activities_worker_test.exs @@ -0,0 +1,56 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Workers.Cron.PurgeExpiredActivitiesWorkerTest do +  use Pleroma.DataCase + +  alias Pleroma.ActivityExpiration +  alias Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker + +  import Pleroma.Factory +  import ExUnit.CaptureLog + +  clear_config([ActivityExpiration, :enabled]) + +  test "deletes an expiration activity" do +    Pleroma.Config.put([ActivityExpiration, :enabled], true) +    activity = insert(:note_activity) + +    naive_datetime = +      NaiveDateTime.add( +        NaiveDateTime.utc_now(), +        -:timer.minutes(2), +        :millisecond +      ) + +    expiration = +      insert( +        :expiration_in_the_past, +        %{activity_id: activity.id, scheduled_at: naive_datetime} +      ) + +    Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker.perform(:ops, :pid) + +    refute Pleroma.Repo.get(Pleroma.Activity, activity.id) +    refute Pleroma.Repo.get(Pleroma.ActivityExpiration, expiration.id) +  end + +  describe "delete_activity/1" do +    test "adds log message if activity isn't find" do +      assert capture_log([level: :error], fn -> +               PurgeExpiredActivitiesWorker.delete_activity(%ActivityExpiration{ +                 activity_id: "test-activity" +               }) +             end) =~ "Couldn't delete expired activity: not found activity" +    end + +    test "adds log message if actor isn't find" do +      assert capture_log([level: :error], fn -> +               PurgeExpiredActivitiesWorker.delete_activity(%ActivityExpiration{ +                 activity_id: "test-activity" +               }) +             end) =~ "Couldn't delete expired activity: not found activity" +    end +  end +end diff --git a/test/workers/scheduled_activity_worker_test.exs b/test/workers/scheduled_activity_worker_test.exs new file mode 100644 index 000000000..1405d7142 --- /dev/null +++ b/test/workers/scheduled_activity_worker_test.exs @@ -0,0 +1,52 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Workers.ScheduledActivityWorkerTest do +  use Pleroma.DataCase + +  alias Pleroma.ScheduledActivity +  alias Pleroma.Workers.ScheduledActivityWorker + +  import Pleroma.Factory +  import ExUnit.CaptureLog + +  clear_config([ScheduledActivity, :enabled]) + +  test "creates a status from the scheduled activity" do +    Pleroma.Config.put([ScheduledActivity, :enabled], true) +    user = insert(:user) + +    naive_datetime = +      NaiveDateTime.add( +        NaiveDateTime.utc_now(), +        -:timer.minutes(2), +        :millisecond +      ) + +    scheduled_activity = +      insert( +        :scheduled_activity, +        scheduled_at: naive_datetime, +        user: user, +        params: %{status: "hi"} +      ) + +    ScheduledActivityWorker.perform( +      %{"activity_id" => scheduled_activity.id}, +      :pid +    ) + +    refute Repo.get(ScheduledActivity, scheduled_activity.id) +    activity = Repo.all(Pleroma.Activity) |> Enum.find(&(&1.actor == user.ap_id)) +    assert Pleroma.Object.normalize(activity).data["content"] == "hi" +  end + +  test "adds log message if ScheduledActivity isn't find" do +    Pleroma.Config.put([ScheduledActivity, :enabled], true) + +    assert capture_log([level: :error], fn -> +             ScheduledActivityWorker.perform(%{"activity_id" => 42}, :pid) +           end) =~ "Couldn't find scheduled activity" +  end +end | 
