Merge branch 'fix/put-repeats-at-activitypub-outbox' into 'develop'

Fix: Output repeats at ActivityPub outbox

Closes #191

See merge request pleroma/pleroma!175
This commit is contained in:
kaniini 2018-08-16 15:19:46 +00:00
commit 38361e7b5e
3 changed files with 48 additions and 7 deletions

View file

@ -98,9 +98,6 @@ def render("outbox.json", %{user: user, max_id: max_qid}) do
info = User.user_info(user)
params = %{
"type" => ["Create", "Announce"],
"actor_id" => user.ap_id,
"whole_db" => true,
"limit" => "10"
}
@ -111,10 +108,8 @@ def render("outbox.json", %{user: user, max_id: max_qid}) 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 =

View file

@ -92,6 +92,26 @@ def note_activity_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)

View file

@ -62,6 +62,32 @@ test "it inserts an incoming activity into the database", %{conn: conn} 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)