commit: 38361e7b5e24cbbd4654bd76fce4b3c66562ab59
parent: 8dc715b30bf310d040f72c0c01a5c668c3696b2a
Author: kaniini <nenolod@gmail.com>
Date: Thu, 16 Aug 2018 15:19:46 +0000
Merge branch 'fix/put-repeats-at-activitypub-outbox' into 'develop'
Fix: Output repeats at ActivityPub outbox
Closes #191
See merge request pleroma/pleroma!175
Diffstat:
3 files changed, 48 insertions(+), 7 deletions(-)
diff --git a/lib/pleroma/web/activity_pub/views/user_view.ex b/lib/pleroma/web/activity_pub/views/user_view.ex
@@ -98,9 +98,6 @@ defmodule Pleroma.Web.ActivityPub.UserView do
info = User.user_info(user)
params = %{
- "type" => ["Create", "Announce"],
- "actor_id" => user.ap_id,
- "whole_db" => true,
"limit" => "10"
}
@@ -111,10 +108,8 @@ defmodule Pleroma.Web.ActivityPub.UserView do
params
end
- activities = ActivityPub.fetch_public_activities(params)
- min_id = Enum.at(activities, 0).id
-
- activities = Enum.reverse(activities)
+ activities = ActivityPub.fetch_user_activities(user, nil, params)
+ min_id = Enum.at(Enum.reverse(activities), 0).id
max_id = Enum.at(activities, 0).id
collection =
diff --git a/test/support/factory.ex b/test/support/factory.ex
@@ -92,6 +92,26 @@ defmodule Pleroma.Factory do
}
end
+ def announce_activity_factory do
+ note_activity = insert(:note_activity)
+ user = insert(:user)
+
+ data = %{
+ "type" => "Announce",
+ "actor" => note_activity.actor,
+ "object" => note_activity.data["id"],
+ "to" => [user.follower_address, note_activity.data["actor"]],
+ "cc" => ["https://www.w3.org/ns/activitystreams#Public"],
+ "context" => note_activity.data["context"]
+ }
+
+ %Pleroma.Activity{
+ data: data,
+ actor: user.ap_id,
+ recipients: data["to"]
+ }
+ end
+
def like_activity_factory do
note_activity = insert(:note_activity)
user = insert(:user)
diff --git a/test/web/activity_pub/activity_pub_controller_test.exs b/test/web/activity_pub/activity_pub_controller_test.exs
@@ -62,6 +62,32 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do
end
end
+ describe "/users/:nickname/outbox" do
+ test "it returns a note activity in a collection", %{conn: conn} do
+ note_activity = insert(:note_activity)
+ user = User.get_cached_by_ap_id(note_activity.data["actor"])
+
+ conn =
+ conn
+ |> put_req_header("accept", "application/activity+json")
+ |> get("/users/#{user.nickname}/outbox")
+
+ assert response(conn, 200) =~ note_activity.data["object"]["content"]
+ end
+
+ test "it returns an announce activity in a collection", %{conn: conn} do
+ announce_activity = insert(:announce_activity)
+ user = User.get_cached_by_ap_id(announce_activity.data["actor"])
+
+ conn =
+ conn
+ |> put_req_header("accept", "application/activity+json")
+ |> get("/users/#{user.nickname}/outbox")
+
+ assert response(conn, 200) =~ announce_activity.data["object"]
+ end
+ end
+
describe "/users/:nickname/followers" do
test "it returns the followers in a collection", %{conn: conn} do
user = insert(:user)