X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=test%2Fweb%2Factivity_pub%2Factivity_pub_test.exs;h=2c6f67621d23a6220e4c494e65bbf9d3284e1da5;hb=65ef18a7157f8cfcc494ad7a72ce083e79e38d26;hp=d640bfa2bf9fc0c6fb3df342f01b5dc9c33499b2;hpb=d4cf273f289168c6555624717a4060e0c15b7197;p=akkoma diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index d640bfa2b..2c6f67621 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -1,17 +1,64 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do use Pleroma.DataCase alias Pleroma.Web.ActivityPub.ActivityPub - alias Pleroma.Activity + alias Pleroma.{Activity, Object} alias Pleroma.Builders.ActivityBuilder describe "insertion" do - test "inserts a given map into the activity database" do + test "inserts a given map into the activity database, giving it an id if it has none." do data = %{ - ok: true + "ok" => true } {:ok, %Activity{} = activity} = ActivityPub.insert(data) - assert activity.data == data + assert activity.data["ok"] == data["ok"] + assert is_binary(activity.data["id"]) + + given_id = "bla" + data = %{ + "ok" => true, + "id" => given_id + } + + {:ok, %Activity{} = activity} = ActivityPub.insert(data) + assert activity.data["ok"] == data["ok"] + assert activity.data["id"] == given_id + end + + test "adds an id to a given object if it lacks one and inserts it to the object database" do + data = %{ + "object" => %{ + "ok" => true + } + } + + {:ok, %Activity{} = activity} = ActivityPub.insert(data) + assert is_binary(activity.data["object"]["id"]) + assert %Object{} = Object.get_by_ap_id(activity.data["object"]["id"]) + end + end + + describe "fetch activities for recipients" do + test "retrieve the activities for certain recipients" do + {:ok, activity_one} = ActivityBuilder.insert(%{"to" => ["someone"]}) + {:ok, activity_two} = ActivityBuilder.insert(%{"to" => ["someone_else"]}) + {:ok, _activity_three} = ActivityBuilder.insert(%{"to" => ["noone"]}) + + activities = ActivityPub.fetch_activities(["someone", "someone_else"]) + assert length(activities) == 2 + assert activities == [activity_one, activity_two] + end + end + + describe "fetch activities in context" do + test "retrieves activities that have a given context" do + {:ok, activity} = ActivityBuilder.insert(%{"context" => "2hu"}) + {:ok, activity_two} = ActivityBuilder.insert(%{"context" => "2hu"}) + {:ok, _activity_three} = ActivityBuilder.insert(%{"context" => "3hu"}) + + activities = ActivityPub.fetch_activities_for_context("2hu") + + assert activities == [activity, activity_two] end end @@ -34,5 +81,27 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do assert length(activities) == 20 assert last == last_expected end + + test "retrieves ids starting from a since_id" do + activities = ActivityBuilder.insert_list(30) + later_activities = ActivityBuilder.insert_list(10) + since_id = List.last(activities).id + last_expected = List.last(later_activities) + + activities = ActivityPub.fetch_public_activities(%{"since_id" => since_id}) + last = List.last(activities) + + assert length(activities) == 10 + assert last == last_expected + end + end + + describe "uploading files" do + test "copies the file to the configured folder" do + file = %Plug.Upload{content_type: "image/jpg", path: Path.absname("test/fixtures/image.jpg"), filename: "an_image.jpg"} + + {:ok, %Object{} = object} = ActivityPub.upload(file) + assert object.data["name"] == "an_image.jpg" + end end end