Test Relay, switch to runtime configuration.
[akkoma] / test / web / federator_test.exs
1 defmodule Pleroma.Web.FederatorTest do
2 alias Pleroma.Web.Federator
3 alias Pleroma.Web.CommonAPI
4 alias Pleroma.Config
5 use Pleroma.DataCase
6 import Pleroma.Factory
7 import Mock
8
9 test "enqueues an element according to priority" do
10 queue = [%{item: 1, priority: 2}]
11
12 new_queue = Federator.enqueue_sorted(queue, 2, 1)
13 assert new_queue == [%{item: 2, priority: 1}, %{item: 1, priority: 2}]
14
15 new_queue = Federator.enqueue_sorted(queue, 2, 3)
16 assert new_queue == [%{item: 1, priority: 2}, %{item: 2, priority: 3}]
17 end
18
19 test "pop first item" do
20 queue = [%{item: 2, priority: 1}, %{item: 1, priority: 2}]
21
22 assert {2, [%{item: 1, priority: 2}]} = Federator.queue_pop(queue)
23 end
24
25 describe "Publish an activity" do
26 setup do
27 user = insert(:user)
28 {:ok, activity} = CommonAPI.post(user, %{"status" => "HI"})
29
30 relay_mock = {
31 Pleroma.Web.ActivityPub.Relay,
32 [],
33 [publish: fn _activity -> send(self(), :relay_publish) end]
34 }
35
36 %{activity: activity, relay_mock: relay_mock}
37 end
38
39 test "with relays active, it publishes to the relay", %{
40 activity: activity,
41 relay_mock: relay_mock
42 } do
43 Config.put([:instance, :allow_relay], true)
44
45 with_mocks([relay_mock]) do
46 Federator.handle(:publish, activity)
47 end
48
49 assert_received :relay_publish
50 end
51
52 test "with relays deactivated, it does not publish to the relay", %{
53 activity: activity,
54 relay_mock: relay_mock
55 } do
56 Config.put([:instance, :allow_relay], false)
57
58 with_mocks([relay_mock]) do
59 Federator.handle(:publish, activity)
60 end
61
62 refute_received :relay_publish
63 end
64 end
65 end