Generate ids for activities.
[akkoma] / test / web / activity_pub / activity_pub_test.exs
1 defmodule Pleroma.Web.ActivityPub.ActivityPubTest do
2 use Pleroma.DataCase
3 alias Pleroma.Web.ActivityPub.ActivityPub
4 alias Pleroma.Activity
5 alias Pleroma.Builders.ActivityBuilder
6
7 describe "insertion" do
8 test "inserts a given map into the activity database, giving it an id if it has none." do
9 data = %{
10 "ok" => true
11 }
12
13 {:ok, %Activity{} = activity} = ActivityPub.insert(data)
14 assert activity.data["ok"] == data["ok"]
15 assert is_binary(activity.data["id"])
16
17 given_id = "bla"
18 data = %{
19 "ok" => true,
20 "id" => given_id
21 }
22
23 {:ok, %Activity{} = activity} = ActivityPub.insert(data)
24 assert activity.data["ok"] == data["ok"]
25 assert activity.data["id"] == given_id
26 end
27 end
28
29 describe "fetch activities for recipients" do
30 test "retrieve the activities for certain recipients" do
31 {:ok, activity_one} = ActivityBuilder.insert(%{"to" => ["someone"]})
32 {:ok, activity_two} = ActivityBuilder.insert(%{"to" => ["someone_else"]})
33 {:ok, _activity_three} = ActivityBuilder.insert(%{"to" => ["noone"]})
34
35 activities = ActivityPub.fetch_activities(["someone", "someone_else"])
36 assert length(activities) == 2
37 assert activities == [activity_one, activity_two]
38 end
39 end
40
41 describe "public fetch activities" do
42 test "retrieves public activities" do
43 %{public: public} = ActivityBuilder.public_and_non_public
44
45 activities = ActivityPub.fetch_public_activities
46 assert length(activities) == 1
47 assert Enum.at(activities, 0) == public
48 end
49
50 test "retrieves a maximum of 20 activities" do
51 activities = ActivityBuilder.insert_list(30)
52 last_expected = List.last(activities)
53
54 activities = ActivityPub.fetch_public_activities
55 last = List.last(activities)
56
57 assert length(activities) == 20
58 assert last == last_expected
59 end
60
61 test "retrieves ids starting from a since_id" do
62 activities = ActivityBuilder.insert_list(30)
63 later_activities = ActivityBuilder.insert_list(10)
64 since_id = List.last(activities).id
65 last_expected = List.last(later_activities)
66
67 activities = ActivityPub.fetch_public_activities(%{"since_id" => since_id})
68 last = List.last(activities)
69
70 assert length(activities) == 10
71 assert last == last_expected
72 end
73 end
74 end