diff options
Diffstat (limited to 'test/web/activity_pub')
| -rw-r--r-- | test/web/activity_pub/activity_pub_test.exs | 33 | ||||
| -rw-r--r-- | test/web/activity_pub/transmogrifier_test.exs | 39 | 
2 files changed, 72 insertions, 0 deletions
| diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index 5a6464350..8c9c2c89e 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -887,6 +887,39 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do      end    end +  describe "announcing a private object" do +    test "adds an announce activity to the db if the audience is not widened" do +      user = insert(:user) +      {:ok, note_activity} = CommonAPI.post(user, %{"status" => ".", "visibility" => "private"}) +      object = Object.normalize(note_activity) + +      {:ok, announce_activity, object} = ActivityPub.announce(user, object, nil, true, false) + +      assert announce_activity.data["to"] == [User.ap_followers(user)] + +      assert announce_activity.data["object"] == object.data["id"] +      assert announce_activity.data["actor"] == user.ap_id +      assert announce_activity.data["context"] == object.data["context"] +    end + +    test "does not add an announce activity to the db if the audience is widened" do +      user = insert(:user) +      {:ok, note_activity} = CommonAPI.post(user, %{"status" => ".", "visibility" => "private"}) +      object = Object.normalize(note_activity) + +      assert {:error, _} = ActivityPub.announce(user, object, nil, true, true) +    end + +    test "does not add an announce activity to the db if the announcer is not the author" do +      user = insert(:user) +      announcer = insert(:user) +      {:ok, note_activity} = CommonAPI.post(user, %{"status" => ".", "visibility" => "private"}) +      object = Object.normalize(note_activity) + +      assert {:error, _} = ActivityPub.announce(announcer, object, nil, true, false) +    end +  end +    describe "unannouncing an object" do      test "unannouncing a previously announced object" do        note_activity = insert(:note_activity) diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs index f1ceb20d2..5bb435457 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -396,6 +396,31 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do        assert data["object"]["id"] == "http://mastodon.example.org/users/admin#likes/2"      end +    test "it works for incoming unlikes with an existing like activity and a compact object" do +      user = insert(:user) +      {:ok, activity} = CommonAPI.post(user, %{"status" => "leave a like pls"}) + +      like_data = +        File.read!("test/fixtures/mastodon-like.json") +        |> Poison.decode!() +        |> Map.put("object", activity.data["object"]) + +      {:ok, %Activity{data: like_data, local: false}} = Transmogrifier.handle_incoming(like_data) + +      data = +        File.read!("test/fixtures/mastodon-undo-like.json") +        |> Poison.decode!() +        |> Map.put("object", like_data["id"]) +        |> Map.put("actor", like_data["actor"]) + +      {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) + +      assert data["actor"] == "http://mastodon.example.org/users/admin" +      assert data["type"] == "Undo" +      assert data["id"] == "http://mastodon.example.org/users/admin#likes/2/undo" +      assert data["object"]["id"] == "http://mastodon.example.org/users/admin#likes/2" +    end +      test "it works for incoming announces" do        data = File.read!("test/fixtures/mastodon-announce.json") |> Poison.decode!() @@ -1083,6 +1108,20 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do    end    describe "prepare outgoing" do +    test "it inlines private announced objects" do +      user = insert(:user) + +      {:ok, activity} = CommonAPI.post(user, %{"status" => "hey", "visibility" => "private"}) + +      {:ok, announce_activity, _} = CommonAPI.repeat(activity.id, user) + +      {:ok, modified} = Transmogrifier.prepare_outgoing(announce_activity.data) +      object = modified["object"] + +      assert modified["object"]["content"] == "hey" +      assert modified["object"]["actor"] == modified["object"]["attributedTo"] +    end +      test "it turns mentions into tags" do        user = insert(:user)        other_user = insert(:user) | 
