diff options
Diffstat (limited to 'test/web/ostatus')
| -rw-r--r-- | test/web/ostatus/activity_representer_test.exs | 21 | ||||
| -rw-r--r-- | test/web/ostatus/incoming_documents/delete_handling_test.exs | 28 | ||||
| -rw-r--r-- | test/web/ostatus/ostatus_test.exs | 11 |
3 files changed, 58 insertions, 2 deletions
diff --git a/test/web/ostatus/activity_representer_test.exs b/test/web/ostatus/activity_representer_test.exs index b9fa4ccfb..0129e3758 100644 --- a/test/web/ostatus/activity_representer_test.exs +++ b/test/web/ostatus/activity_representer_test.exs @@ -4,9 +4,23 @@ defmodule Pleroma.Web.OStatus.ActivityRepresenterTest do alias Pleroma.Web.OStatus.ActivityRepresenter alias Pleroma.{User, Activity, Object} alias Pleroma.Web.ActivityPub.ActivityPub + alias Pleroma.Web.OStatus import Pleroma.Factory + test "an external note activity" do + incoming = File.read!("test/fixtures/mastodon-note-cw.xml") + {:ok, [activity]} = OStatus.handle_incoming(incoming) + + user = User.get_cached_by_ap_id(activity.data["actor"]) + + tuple = ActivityRepresenter.to_simple_form(activity, user) + + res = :xmerl.export_simple_content(tuple, :xmerl_xml) |> IO.iodata_to_binary + + assert String.contains?(res, ~s{<link type="text/html" href="https://mastodon.social/users/lambadalambda/updates/2314748" rel="alternate"/>}) + end + test "a note activity" do note_activity = insert(:note_activity) @@ -23,6 +37,7 @@ defmodule Pleroma.Web.OStatus.ActivityRepresenterTest do <ostatus:conversation>#{note_activity.data["context"]}</ostatus:conversation> <link ref="#{note_activity.data["context"]}" rel="ostatus:conversation" /> <link type="application/atom+xml" href="#{note_activity.data["object"]["id"]}" rel="self" /> + <link type="text/html" href="#{note_activity.data["object"]["id"]}" rel="alternate" /> <category term="2hu"/> <link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/> """ @@ -43,6 +58,9 @@ defmodule Pleroma.Web.OStatus.ActivityRepresenterTest do data = %{answer.data | "object" => object} answer = %{answer | data: data} + note_object = Object.get_by_ap_id(note.data["object"]["id"]) + Repo.update!(Object.change(note_object, %{ data: Map.put(note_object.data, "external_url", "someurl") })) + user = User.get_cached_by_ap_id(answer.data["actor"]) expected = """ @@ -56,8 +74,9 @@ defmodule Pleroma.Web.OStatus.ActivityRepresenterTest do <ostatus:conversation>#{answer.data["context"]}</ostatus:conversation> <link ref="#{answer.data["context"]}" rel="ostatus:conversation" /> <link type="application/atom+xml" href="#{answer.data["object"]["id"]}" rel="self" /> + <link type="text/html" href="#{answer.data["object"]["id"]}" rel="alternate" /> <category term="2hu"/> - <thr:in-reply-to ref="#{note.data["object"]["id"]}" /> + <thr:in-reply-to ref="#{note.data["object"]["id"]}" href="someurl" /> <link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/> """ diff --git a/test/web/ostatus/incoming_documents/delete_handling_test.exs b/test/web/ostatus/incoming_documents/delete_handling_test.exs new file mode 100644 index 000000000..989c87afa --- /dev/null +++ b/test/web/ostatus/incoming_documents/delete_handling_test.exs @@ -0,0 +1,28 @@ +defmodule Pleroma.Web.OStatus.DeleteHandlingTest do + use Pleroma.DataCase + + import Pleroma.Factory + alias Pleroma.{Repo, Activity, Object} + alias Pleroma.Web.OStatus + + describe "deletions" do + test "it removes the mentioned activity" do + note = insert(:note_activity) + second_note = insert(:note_activity) + user = insert(:user) + object = Object.get_by_ap_id(note.data["object"]["id"]) + + {:ok, like, object} = Pleroma.Web.ActivityPub.ActivityPub.like(user, object) + + incoming = File.read!("test/fixtures/delete.xml") + |> String.replace("tag:mastodon.sdf.org,2017-06-10:objectId=310513:objectType=Status", note.data["object"]["id"]) + {:ok, []} = OStatus.handle_incoming(incoming) + + refute Repo.get(Activity, note.id) + refute Repo.get(Activity, like.id) + refute Object.get_by_ap_id(note.data["object"]["id"]) + assert Repo.get(Activity, second_note.id) + assert Object.get_by_ap_id(second_note.data["object"]["id"]) + end + end +end diff --git a/test/web/ostatus/ostatus_test.exs b/test/web/ostatus/ostatus_test.exs index 34bfaa005..44d687d8e 100644 --- a/test/web/ostatus/ostatus_test.exs +++ b/test/web/ostatus/ostatus_test.exs @@ -15,6 +15,8 @@ defmodule Pleroma.Web.OStatusTest do incoming = File.read!("test/fixtures/incoming_note_activity.xml") {:ok, [activity]} = OStatus.handle_incoming(incoming) + user = User.get_by_ap_id(activity.data["actor"]) + assert user.info["note_count"] == 1 assert activity.data["type"] == "Create" assert activity.data["object"]["type"] == "Note" assert activity.data["object"]["id"] == "tag:gs.example.org:4040,2017-04-23:noticeId=29:objectType=note" @@ -324,11 +326,18 @@ defmodule Pleroma.Web.OStatusTest do describe "fetching a status by it's HTML url" do test "it builds a missing status from an html url" do url = "https://shitposter.club/notice/2827873" - {:ok, [activity] } = OStatus.fetch_activity_from_html_url(url) + {:ok, [activity] } = OStatus.fetch_activity_from_url(url) assert activity.data["actor"] == "https://shitposter.club/user/1" assert activity.data["object"]["id"] == "tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment" end + + test "it works for atom notes, too" do + url = "https://social.sakamoto.gq/objects/0ccc1a2c-66b0-4305-b23a-7f7f2b040056" + {:ok, [activity] } = OStatus.fetch_activity_from_url(url) + assert activity.data["actor"] == "https://social.sakamoto.gq/users/eal" + assert activity.data["object"]["id"] == url + end end test "insert or update a user from given data" do |
