tests: add regression tests
authorWilliam Pitcock <nenolod@dereferenced.org>
Sat, 1 Sep 2018 23:33:10 +0000 (23:33 +0000)
committerWilliam Pitcock <nenolod@dereferenced.org>
Sat, 1 Sep 2018 23:33:10 +0000 (23:33 +0000)
test/fixtures/httpoison_mock/https__info.pleroma.site_activity.json [new file with mode: 0644]
test/support/httpoison_mock.ex
test/web/activity_pub/transmogrifier_test.exs

diff --git a/test/fixtures/httpoison_mock/https__info.pleroma.site_activity.json b/test/fixtures/httpoison_mock/https__info.pleroma.site_activity.json
new file mode 100644 (file)
index 0000000..eab0341
--- /dev/null
@@ -0,0 +1,14 @@
+{
+        "@context": "https://www.w3.org/ns/activitystreams",
+        "actor": "https://mastodon.example.org/users/admin",
+        "attachment": [],
+        "attributedTo": "https://mastodon.example.org/users/admin",
+        "content": "<p>this post was not actually written by Haelwenn</p>",
+        "id": "https://info.pleroma.site/activity.json",
+        "published": "2018-09-01T22:15:00Z",
+        "tag": [],
+        "to": [
+            "https://www.w3.org/ns/activitystreams#Public"
+        ],
+        "type": "Note"
+}
index 4ee2feb9572bceb32f6ec52b167a561536a6b369..7057f30fb5e20b148799b6dce730e77bbefedf3d 100644 (file)
@@ -3,6 +3,14 @@ defmodule HTTPoisonMock do
 
   def get(url, body \\ [], headers \\ [])
 
+  def get("https://info.pleroma.site/activity.json", _, _) do
+    {:ok,
+     %Response{
+       status_code: 200,
+       body: File.read!("test/fixtures/httpoison_mock/https__info.pleroma.site_activity.json")
+     }}
+  end
+
   def get("https://puckipedia.com/", [Accept: "application/activity+json"], _) do
     {:ok,
      %Response{
index e2926d49535ba07480311f0a0212790717d268d7..afa25bb600288751f5b4e48999fb131449898630 100644 (file)
@@ -798,4 +798,25 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do
       assert rewritten["url"] == "http://example.com"
     end
   end
+
+  describe "actor origin containment" do
+    test "it rejects objects with a bogus origin" do
+      {:error, _} = ActivityPub.fetch_object_from_id("https://info.pleroma.site/activity.json")
+    end
+
+    test "it rejects activities which reference objects with bogus origins" do
+      user = insert(:user, %{local: false})
+
+      data = %{
+        "@context" => "https://www.w3.org/ns/activitystreams",
+        "id" => user.ap_id <> "/activities/1234",
+        "actor" => user.ap_id,
+        "to" => ["https://www.w3.org/ns/activitystreams#Public"],
+        "object" => "https://info.pleroma.site/activity.json",
+        "type" => "Announce"
+      }
+
+      :error = Transmogrifier.handle_incoming(data)
+    end
+  end
 end