MastoAPI: Add Announce and EmojiReact attribution tests
Introduces a new EmojiReact Activity factory
This commit is contained in:
parent
01ffaba3d2
commit
b9601ae11a
2 changed files with 88 additions and 0 deletions
|
|
@ -815,6 +815,28 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do
|
||||||
%{locals: [id1, id2], remote: remote_activity.id, context: context}
|
%{locals: [id1, id2], remote: remote_activity.id, context: context}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
defp local_interactions_to_remote do
|
||||||
|
interacted_user = insert(:user, local: false, domain: "example.com")
|
||||||
|
interacting_user = insert(:user)
|
||||||
|
|
||||||
|
announced_post =
|
||||||
|
insert(:note_activity, local: false, object_local: false, user: interacted_user)
|
||||||
|
|
||||||
|
emoji_reacted_post =
|
||||||
|
insert(:note_activity, local: false, object_local: false, user: interacted_user)
|
||||||
|
|
||||||
|
announce = insert(:announce_activity, note_activity: announced_post, user: interacting_user)
|
||||||
|
|
||||||
|
emoji_react =
|
||||||
|
insert(:emoji_react_activity, note_activity: emoji_reacted_post, user: interacting_user)
|
||||||
|
|
||||||
|
{:ok,
|
||||||
|
announce: announce,
|
||||||
|
emoji_react: emoji_react,
|
||||||
|
interacted: interacted_user,
|
||||||
|
interacter: interacting_user}
|
||||||
|
end
|
||||||
|
|
||||||
describe "status with restrict unauthenticated activities for local and remote" do
|
describe "status with restrict unauthenticated activities for local and remote" do
|
||||||
setup do: local_and_remote_activities()
|
setup do: local_and_remote_activities()
|
||||||
|
|
||||||
|
|
@ -952,6 +974,50 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Rest of Activities like Create,Like,Flag,Add,Remove,... return 404.
|
||||||
|
describe "status has correct attribution when fetching as" do
|
||||||
|
setup do: local_interactions_to_remote()
|
||||||
|
|
||||||
|
test "Announce activity", %{
|
||||||
|
conn: conn,
|
||||||
|
announce: activity,
|
||||||
|
interacter: interacter,
|
||||||
|
interacted: user
|
||||||
|
} do
|
||||||
|
announce_id = activity.id
|
||||||
|
announced_activity = Pleroma.Activity.get_create_by_object_ap_id(activity.data["object"])
|
||||||
|
announced_id = announced_activity.id
|
||||||
|
interacter_ap_id = interacter.id
|
||||||
|
user_ap_id = user.id
|
||||||
|
|
||||||
|
result =
|
||||||
|
conn
|
||||||
|
|> get("/api/v1/statuses/#{activity.id}")
|
||||||
|
|> json_response_and_validate_schema(200)
|
||||||
|
|
||||||
|
assert match?(
|
||||||
|
%{
|
||||||
|
"id" => ^announce_id,
|
||||||
|
"account" => %{"id" => ^interacter_ap_id},
|
||||||
|
"reblog" => %{"account" => %{"id" => ^user_ap_id}, "id" => ^announced_id}
|
||||||
|
},
|
||||||
|
result
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
test "EmojiReact activity", %{conn: conn, emoji_react: activity, interacted: user} do
|
||||||
|
emoji_react_id = activity.id
|
||||||
|
user_ap_id = user.id
|
||||||
|
|
||||||
|
result =
|
||||||
|
conn
|
||||||
|
|> get("/api/v1/statuses/#{emoji_react_id}")
|
||||||
|
|> json_response_and_validate_schema(200)
|
||||||
|
|
||||||
|
assert match?(%{"id" => ^emoji_react_id, "account" => %{"id" => ^user_ap_id}}, result)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
test "getting a status that doesn't exist returns 404" do
|
test "getting a status that doesn't exist returns 404" do
|
||||||
%{conn: conn} = oauth_access(["read:statuses"])
|
%{conn: conn} = oauth_access(["read:statuses"])
|
||||||
activity = insert(:note_activity)
|
activity = insert(:note_activity)
|
||||||
|
|
|
||||||
|
|
@ -445,6 +445,28 @@ defmodule Pleroma.Factory do
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def emoji_react_activity_factory(attrs \\ %{}) do
|
||||||
|
note_activity = attrs[:note_activity] || insert(:note_activity)
|
||||||
|
object = Object.normalize(note_activity, fetch: false)
|
||||||
|
user = attrs[:user] || insert(:user)
|
||||||
|
|
||||||
|
data = %{
|
||||||
|
"id" => Pleroma.Web.ActivityPub.Utils.generate_activity_id(),
|
||||||
|
"actor" => user.ap_id,
|
||||||
|
"type" => "EmojiReact",
|
||||||
|
"object" => object.data["id"],
|
||||||
|
"to" => [user.follower_address, object.data["actor"]],
|
||||||
|
"cc" => ["https://www.w3.org/ns/activitystreams#Public"],
|
||||||
|
"published_at" => DateTime.utc_now() |> DateTime.to_iso8601(),
|
||||||
|
"context" => object.data["context"],
|
||||||
|
"content" => "😀"
|
||||||
|
}
|
||||||
|
|
||||||
|
%Pleroma.Activity{
|
||||||
|
data: data
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
def like_activity_factory(attrs \\ %{}) do
|
def like_activity_factory(attrs \\ %{}) do
|
||||||
note_activity = attrs[:note_activity] || insert(:note_activity)
|
note_activity = attrs[:note_activity] || insert(:note_activity)
|
||||||
object = Object.normalize(note_activity, fetch: false)
|
object = Object.normalize(note_activity, fetch: false)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue