X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=test%2Fweb%2Factivity_pub%2Factivity_pub_test.exs;h=5701204840330f70076729e2dcd47b17c9a7ee7a;hb=fa0c279139f384f6c97bce217be4131b255f00b1;hp=6a5138012bb7712e2a7d86c251b91d182324277e;hpb=74112ef99e84f9f19d278faaa8e231b9ea867b2b;p=akkoma diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index 6a5138012..570120484 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -1,9 +1,11 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do use Pleroma.DataCase alias Pleroma.Web.ActivityPub.ActivityPub - alias Pleroma.Activity + alias Pleroma.{Activity, Object, User} alias Pleroma.Builders.ActivityBuilder + import Pleroma.Factory + describe "insertion" do test "inserts a given map into the activity database, giving it an id if it has none." do data = %{ @@ -25,7 +27,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do assert activity.data["id"] == given_id end - test "adds an id to a given object if it lacks one" do + test "adds an id to a given object if it lacks one and inserts it to the object database" do data = %{ "object" => %{ "ok" => true @@ -34,6 +36,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do {: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 @@ -49,6 +52,18 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do 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 + describe "public fetch activities" do test "retrieves public activities" do %{public: public} = ActivityBuilder.public_and_non_public @@ -81,5 +96,58 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do assert length(activities) == 10 assert last == last_expected end + + test "retrieves ids up to max_id" do + _first_activities = ActivityBuilder.insert_list(10) + activities = ActivityBuilder.insert_list(20) + later_activities = ActivityBuilder.insert_list(10) + max_id = List.first(later_activities).id + last_expected = List.last(activities) + + activities = ActivityPub.fetch_public_activities(%{"max_id" => max_id}) + last = List.last(activities) + + assert length(activities) == 20 + assert last == last_expected + end + end + + describe "like an object" do + test "adds a like activity to the db" do + note_activity = insert(:note_activity) + object = Object.get_by_ap_id(note_activity.data["object"]["id"]) + user = insert(:user) + user_two = insert(:user) + + {:ok, like_activity, object} = ActivityPub.like(user, object) + + assert like_activity.data["actor"] == user.ap_id + assert like_activity.data["type"] == "Like" + assert like_activity.data["object"] == object.data["id"] + assert like_activity.data["to"] == [User.ap_followers(user)] + assert object.data["like_count"] == 1 + assert object.data["likes"] == [user.ap_id] + + # Just return the original activity if the user already liked it. + {:ok, same_like_activity, object} = ActivityPub.like(user, object) + + assert like_activity == same_like_activity + assert object.data["likes"] == [user.ap_id] + + [note_activity] = Activity.all_by_object_ap_id(object.data["id"]) + assert note_activity.data["object"]["like_count"] == 1 + + {:ok, _like_activity, object} = ActivityPub.like(user_two, object) + assert object.data["like_count"] == 2 + 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