diff options
author | lain <lain@soykaf.club> | 2018-03-30 15:01:53 +0200 |
---|---|---|
committer | lain <lain@soykaf.club> | 2018-03-30 15:01:53 +0200 |
commit | 4afbef39f49948ddd3b1cd1bbda58ff7e3ac2785 (patch) | |
tree | 6959e12d9058c981f3b69c77b8b0290049651cd6 /test/web/activity_pub | |
parent | 480932c8e524e1a80c9c8ef1a1aa23379f633afe (diff) | |
download | pleroma-4afbef39f49948ddd3b1cd1bbda58ff7e3ac2785.tar.gz pleroma-4afbef39f49948ddd3b1cd1bbda58ff7e3ac2785.zip |
Format the code.
Diffstat (limited to 'test/web/activity_pub')
-rw-r--r-- | test/web/activity_pub/activity_pub_controller_test.exs | 27 | ||||
-rw-r--r-- | test/web/activity_pub/activity_pub_test.exs | 52 | ||||
-rw-r--r-- | test/web/activity_pub/transmogrifier_test.exs | 192 |
3 files changed, 191 insertions, 80 deletions
diff --git a/test/web/activity_pub/activity_pub_controller_test.exs b/test/web/activity_pub/activity_pub_controller_test.exs index c8082cd03..28d765d83 100644 --- a/test/web/activity_pub/activity_pub_controller_test.exs +++ b/test/web/activity_pub/activity_pub_controller_test.exs @@ -9,9 +9,10 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do test "it returns a json representation of the user", %{conn: conn} do user = insert(:user) - conn = conn - |> put_req_header("accept", "application/activity+json") - |> get("/users/#{user.nickname}") + conn = + conn + |> put_req_header("accept", "application/activity+json") + |> get("/users/#{user.nickname}") user = Repo.get(User, user.id) @@ -22,11 +23,12 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do describe "/object/:uuid" do test "it returns a json representation of the object", %{conn: conn} do note = insert(:note) - uuid = String.split(note.data["id"], "/") |> List.last + uuid = String.split(note.data["id"], "/") |> List.last() - conn = conn - |> put_req_header("accept", "application/activity+json") - |> get("/objects/#{uuid}") + conn = + conn + |> put_req_header("accept", "application/activity+json") + |> get("/objects/#{uuid}") assert json_response(conn, 200) == ObjectView.render("object.json", %{object: note}) end @@ -34,12 +36,13 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do describe "/users/:nickname/inbox" do test "it inserts an incoming activity into the database", %{conn: conn} do - data = File.read!("test/fixtures/mastodon-post-activity.json") |> Poison.decode! + data = File.read!("test/fixtures/mastodon-post-activity.json") |> Poison.decode!() - conn = conn - |> assign(:valid_signature, true) - |> put_req_header("content-type", "application/activity+json") - |> post("/inbox", data) + conn = + conn + |> assign(:valid_signature, true) + |> put_req_header("content-type", "application/activity+json") + |> post("/inbox", data) assert "ok" == json_response(conn, 200) :timer.sleep(500) diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index 96792bca5..cf25abfc1 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -22,7 +22,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do describe "insertion" do test "returns the activity if one with the same id is already in" do activity = insert(:note_activity) - {:ok, new_activity}= ActivityPub.insert(activity.data) + {:ok, new_activity} = ActivityPub.insert(activity.data) assert activity == new_activity end @@ -37,6 +37,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do assert is_binary(activity.data["id"]) given_id = "bla" + data = %{ "ok" => true, "id" => given_id @@ -63,7 +64,14 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do describe "create activities" do test "removes doubled 'to' recipients" do - {:ok, activity} = ActivityPub.create(%{to: ["user1", "user1", "user2"], actor: %User{ap_id: "1"}, context: "", object: %{}}) + {:ok, activity} = + ActivityPub.create(%{ + to: ["user1", "user1", "user2"], + actor: %User{ap_id: "1"}, + context: "", + object: %{} + }) + assert activity.data["to"] == ["user1", "user2"] assert activity.actor == "1" assert activity.recipients == ["user1", "user2"] @@ -124,11 +132,11 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do describe "public fetch activities" do test "retrieves public activities" do - _activities = ActivityPub.fetch_public_activities + _activities = ActivityPub.fetch_public_activities() - %{public: public} = ActivityBuilder.public_and_non_public + %{public: public} = ActivityBuilder.public_and_non_public() - activities = ActivityPub.fetch_public_activities + activities = ActivityPub.fetch_public_activities() assert length(activities) == 1 assert Enum.at(activities, 0) == public end @@ -137,7 +145,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do activities = ActivityBuilder.insert_list(30) last_expected = List.last(activities) - activities = ActivityPub.fetch_public_activities + activities = ActivityPub.fetch_public_activities() last = List.last(activities) assert length(activities) == 20 @@ -232,7 +240,12 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do {:ok, announce_activity, object} = ActivityPub.announce(user, object) assert object.data["announcement_count"] == 1 assert object.data["announcements"] == [user.ap_id] - assert announce_activity.data["to"] == [User.ap_followers(user), note_activity.data["actor"]] + + assert announce_activity.data["to"] == [ + User.ap_followers(user), + note_activity.data["actor"] + ] + assert announce_activity.data["object"] == object.data["id"] assert announce_activity.data["actor"] == user.ap_id assert announce_activity.data["context"] == object.data["context"] @@ -241,7 +254,11 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do 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"} + 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" @@ -268,11 +285,14 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do describe "fetching an object" do test "it fetches an object" do - {:ok, object} = ActivityPub.fetch_object_from_id("http://mastodon.example.org/@admin/99541947525187367") + {:ok, object} = + ActivityPub.fetch_object_from_id("http://mastodon.example.org/@admin/99541947525187367") + assert activity = Activity.get_create_activity_by_object_ap_id(object.data["id"]) assert activity.data["id"] - {:ok, object_again} = ActivityPub.fetch_object_from_id("http://mastodon.example.org/@admin/99541947525187367") + {:ok, object_again} = + ActivityPub.fetch_object_from_id("http://mastodon.example.org/@admin/99541947525187367") assert [attachment] = object.data["attachment"] assert is_list(attachment["url"]) @@ -285,7 +305,8 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do assert activity = Activity.get_create_activity_by_object_ap_id(object.data["id"]) assert activity.data["id"] - {:ok, object_again} = ActivityPub.fetch_object_from_id("https://shitposter.club/notice/2827873") + {:ok, object_again} = + ActivityPub.fetch_object_from_id("https://shitposter.club/notice/2827873") assert object == object_again end @@ -344,7 +365,14 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do user = insert(:user) {:ok, user} = Pleroma.Web.WebFinger.ensure_keys_present(user) user_data = Pleroma.Web.ActivityPub.UserView.render("user.json", %{user: user}) - {:ok, update} = ActivityPub.update(%{actor: user_data["id"], to: [user.follower_address], cc: [], object: user_data}) + + {:ok, update} = + ActivityPub.update(%{ + actor: user_data["id"], + to: [user.follower_address], + cc: [], + object: user_data + }) assert update.data["actor"] == user.ap_id assert update.data["to"] == [user.follower_address] diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs index 375e74ad9..060ebe9f1 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -16,9 +16,10 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do test "it ignores an incoming notice if we already have it" do activity = insert(:note_activity) - data = File.read!("test/fixtures/mastodon-post-activity.json") - |> Poison.decode! - |> Map.put("object", activity.data["object"]) + data = + File.read!("test/fixtures/mastodon-post-activity.json") + |> Poison.decode!() + |> Map.put("object", activity.data["object"]) {:ok, returned_activity} = Transmogrifier.handle_incoming(data) @@ -26,51 +27,72 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do end test "it fetches replied-to activities if we don't have them" do - data = File.read!("test/fixtures/mastodon-post-activity.json") - |> Poison.decode! + data = + File.read!("test/fixtures/mastodon-post-activity.json") + |> Poison.decode!() - object = data["object"] - |> Map.put("inReplyTo", "https://shitposter.club/notice/2827873") + object = + data["object"] + |> Map.put("inReplyTo", "https://shitposter.club/notice/2827873") - data = data - |> Map.put("object", object) + data = + data + |> Map.put("object", object) {:ok, returned_activity} = Transmogrifier.handle_incoming(data) - assert activity = Activity.get_create_activity_by_object_ap_id("tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment") - assert returned_activity.data["object"]["inReplyToAtomUri"] == "https://shitposter.club/notice/2827873" + assert activity = + Activity.get_create_activity_by_object_ap_id( + "tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment" + ) + + assert returned_activity.data["object"]["inReplyToAtomUri"] == + "https://shitposter.club/notice/2827873" + assert returned_activity.data["object"]["inReplyToStatusId"] == activity.id end test "it works for incoming notices" do - data = File.read!("test/fixtures/mastodon-post-activity.json") |> Poison.decode! + data = File.read!("test/fixtures/mastodon-post-activity.json") |> Poison.decode!() {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) - assert data["id"] == "http://mastodon.example.org/users/admin/statuses/99512778738411822/activity" - assert data["context"] == "tag:mastodon.example.org,2018-02-12:objectId=20:objectType=Conversation" + + assert data["id"] == + "http://mastodon.example.org/users/admin/statuses/99512778738411822/activity" + + assert data["context"] == + "tag:mastodon.example.org,2018-02-12:objectId=20:objectType=Conversation" + assert data["to"] == ["https://www.w3.org/ns/activitystreams#Public"] + assert data["cc"] == [ - "http://mastodon.example.org/users/admin/followers", - "http://localtesting.pleroma.lol/users/lain" - ] + "http://mastodon.example.org/users/admin/followers", + "http://localtesting.pleroma.lol/users/lain" + ] + assert data["actor"] == "http://mastodon.example.org/users/admin" object = data["object"] assert object["id"] == "http://mastodon.example.org/users/admin/statuses/99512778738411822" assert object["to"] == ["https://www.w3.org/ns/activitystreams#Public"] + assert object["cc"] == [ - "http://mastodon.example.org/users/admin/followers", - "http://localtesting.pleroma.lol/users/lain" - ] + "http://mastodon.example.org/users/admin/followers", + "http://localtesting.pleroma.lol/users/lain" + ] + assert object["actor"] == "http://mastodon.example.org/users/admin" assert object["attributedTo"] == "http://mastodon.example.org/users/admin" - assert object["context"] == "tag:mastodon.example.org,2018-02-12:objectId=20:objectType=Conversation" + + assert object["context"] == + "tag:mastodon.example.org,2018-02-12:objectId=20:objectType=Conversation" + assert object["sensitive"] == true end test "it works for incoming notices with hashtags" do - data = File.read!("test/fixtures/mastodon-post-activity-hashtag.json") |> Poison.decode! + data = File.read!("test/fixtures/mastodon-post-activity-hashtag.json") |> Poison.decode!() {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) assert Enum.at(data["object"]["tag"], 2) == "moo" @@ -78,8 +100,10 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do test "it works for incoming follow requests" do user = insert(:user) - data = File.read!("test/fixtures/mastodon-follow-activity.json") |> Poison.decode! - |> Map.put("object", user.ap_id) + + data = + File.read!("test/fixtures/mastodon-follow-activity.json") |> Poison.decode!() + |> Map.put("object", user.ap_id) {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) @@ -93,8 +117,9 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do user = insert(:user) {:ok, activity} = CommonAPI.post(user, %{"status" => "hello"}) - data = File.read!("test/fixtures/mastodon-like.json") |> Poison.decode! - |> Map.put("object", activity.data["object"]["id"]) + data = + File.read!("test/fixtures/mastodon-like.json") |> Poison.decode!() + |> Map.put("object", activity.data["object"]["id"]) {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) @@ -105,14 +130,18 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do end test "it works for incoming announces" do - data = File.read!("test/fixtures/mastodon-announce.json") |> Poison.decode! + data = File.read!("test/fixtures/mastodon-announce.json") |> Poison.decode!() {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) assert data["actor"] == "http://mastodon.example.org/users/admin" assert data["type"] == "Announce" - assert data["id"] == "http://mastodon.example.org/users/admin/statuses/99542391527669785/activity" - assert data["object"] == "http://mastodon.example.org/users/admin/statuses/99541947525187367" + + assert data["id"] == + "http://mastodon.example.org/users/admin/statuses/99542391527669785/activity" + + assert data["object"] == + "http://mastodon.example.org/users/admin/statuses/99541947525187367" assert Activity.get_create_activity_by_object_ap_id(data["object"]) end @@ -121,53 +150,77 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do user = insert(:user) {:ok, activity} = CommonAPI.post(user, %{"status" => "hey"}) - data = File.read!("test/fixtures/mastodon-announce.json") - |> Poison.decode! - |> Map.put("object", activity.data["object"]["id"]) + data = + File.read!("test/fixtures/mastodon-announce.json") + |> Poison.decode!() + |> Map.put("object", activity.data["object"]["id"]) {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) assert data["actor"] == "http://mastodon.example.org/users/admin" assert data["type"] == "Announce" - assert data["id"] == "http://mastodon.example.org/users/admin/statuses/99542391527669785/activity" + + assert data["id"] == + "http://mastodon.example.org/users/admin/statuses/99542391527669785/activity" + assert data["object"] == activity.data["object"]["id"] assert Activity.get_create_activity_by_object_ap_id(data["object"]).id == activity.id end test "it works for incoming update activities" do - data = File.read!("test/fixtures/mastodon-post-activity.json") |> Poison.decode! + data = File.read!("test/fixtures/mastodon-post-activity.json") |> Poison.decode!() {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) - update_data = File.read!("test/fixtures/mastodon-update.json") |> Poison.decode! - object = update_data["object"] - |> Map.put("actor", data["actor"]) - |> Map.put("id", data["actor"]) + update_data = File.read!("test/fixtures/mastodon-update.json") |> Poison.decode!() + + object = + update_data["object"] + |> Map.put("actor", data["actor"]) + |> Map.put("id", data["actor"]) - update_data = update_data - |> Map.put("actor", data["actor"]) - |> Map.put("object", object) + update_data = + update_data + |> Map.put("actor", data["actor"]) + |> Map.put("object", object) {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(update_data) user = User.get_cached_by_ap_id(data["actor"]) assert user.name == "gargle" - assert user.avatar["url"] == [%{"href" => "https://cd.niu.moe/accounts/avatars/000/033/323/original/fd7f8ae0b3ffedc9.jpeg"}] - assert user.info["banner"]["url"] == [%{"href" => "https://cd.niu.moe/accounts/headers/000/033/323/original/850b3448fa5fd477.png"}] + + assert user.avatar["url"] == [ + %{ + "href" => + "https://cd.niu.moe/accounts/avatars/000/033/323/original/fd7f8ae0b3ffedc9.jpeg" + } + ] + + assert user.info["banner"]["url"] == [ + %{ + "href" => + "https://cd.niu.moe/accounts/headers/000/033/323/original/850b3448fa5fd477.png" + } + ] + assert user.bio == "<p>Some bio</p>" end test "it works for incoming deletes" do activity = insert(:note_activity) - data = File.read!("test/fixtures/mastodon-delete.json") - |> Poison.decode! - object = data["object"] - |> Map.put("id", activity.data["object"]["id"]) + data = + File.read!("test/fixtures/mastodon-delete.json") + |> Poison.decode!() + + object = + data["object"] + |> Map.put("id", activity.data["object"]["id"]) - data = data - |> Map.put("object", object) - |> Map.put("actor", activity.data["actor"]) + data = + data + |> Map.put("object", object) + |> Map.put("actor", activity.data["actor"]) {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) @@ -180,7 +233,8 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do user = insert(:user) other_user = insert(:user) - {:ok, activity} = CommonAPI.post(user, %{"status" => "hey, @#{other_user.nickname}, how are ya? #2hu"}) + {:ok, activity} = + CommonAPI.post(user, %{"status" => "hey, @#{other_user.nickname}, how are ya? #2hu"}) {:ok, modified} = Transmogrifier.prepare_outgoing(activity.data) object = modified["object"] @@ -192,7 +246,7 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do } expected_tag = %{ - "href" => Pleroma.Web.Endpoint.url <> "/tags/2hu", + "href" => Pleroma.Web.Endpoint.url() <> "/tags/2hu", "type" => "Hashtag", "name" => "#2hu" } @@ -247,7 +301,9 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do user = insert(:user) - {:ok, activity} = CommonAPI.post(user, %{"status" => "HI!", "in_reply_to_status_id" => referred_activity.id}) + {:ok, activity} = + CommonAPI.post(user, %{"status" => "HI!", "in_reply_to_status_id" => referred_activity.id}) + {:ok, modified} = Transmogrifier.prepare_outgoing(activity.data) assert modified["object"]["inReplyTo"] == "http://gs.example.org:4040/index.php/notice/29" @@ -256,7 +312,14 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do describe "user upgrade" do test "it upgrades a user to activitypub" do - user = insert(:user, %{nickname: "rye@niu.moe", local: false, ap_id: "https://niu.moe/users/rye", follower_address: User.ap_followers(%User{nickname: "rye@niu.moe"})}) + user = + insert(:user, %{ + nickname: "rye@niu.moe", + local: false, + ap_id: "https://niu.moe/users/rye", + follower_address: User.ap_followers(%User{nickname: "rye@niu.moe"}) + }) + user_two = insert(:user, %{following: [user.follower_address]}) {:ok, activity} = CommonAPI.post(user, %{"status" => "test"}) @@ -279,8 +342,25 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do activity = Repo.get(Activity, activity.id) assert user.follower_address in activity.recipients - assert %{"url" => [%{"href" => "https://cdn.niu.moe/accounts/avatars/000/033/323/original/fd7f8ae0b3ffedc9.jpeg"}]} = user.avatar - assert %{"url" => [%{"href" => "https://cdn.niu.moe/accounts/headers/000/033/323/original/850b3448fa5fd477.png"}]} = user.info["banner"] + + assert %{ + "url" => [ + %{ + "href" => + "https://cdn.niu.moe/accounts/avatars/000/033/323/original/fd7f8ae0b3ffedc9.jpeg" + } + ] + } = user.avatar + + assert %{ + "url" => [ + %{ + "href" => + "https://cdn.niu.moe/accounts/headers/000/033/323/original/850b3448fa5fd477.png" + } + ] + } = user.info["banner"] + refute "..." in activity.recipients unrelated_activity = Repo.get(Activity, unrelated_activity.id) |