diff options
| author | rinpatch <rinpatch@sdf.org> | 2019-06-03 11:14:52 +0300 | 
|---|---|---|
| committer | rinpatch <rinpatch@sdf.org> | 2019-06-03 11:14:52 +0300 | 
| commit | 026b245dbc2900d90a737f024b87453bf552b62b (patch) | |
| tree | 8bab0696129f9ba0154879f831cb7543b508a9f2 /test/web/activity_pub | |
| parent | 5bd41fef8b5aeff53ed6b096e04507d51c93a83a (diff) | |
| parent | 1236c5dbf55d631b10ad0e73836a2a9cd43ddaa8 (diff) | |
| download | pleroma-026b245dbc2900d90a737f024b87453bf552b62b.tar.gz pleroma-026b245dbc2900d90a737f024b87453bf552b62b.zip  | |
Merge branch 'develop' into feature/polls-2-electric-boogalo
Diffstat (limited to 'test/web/activity_pub')
| -rw-r--r-- | test/web/activity_pub/activity_pub_controller_test.exs | 71 | ||||
| -rw-r--r-- | test/web/activity_pub/transmogrifier_test.exs | 25 | ||||
| -rw-r--r-- | test/web/activity_pub/visibilty_test.exs | 4 | 
3 files changed, 81 insertions, 19 deletions
diff --git a/test/web/activity_pub/activity_pub_controller_test.exs b/test/web/activity_pub/activity_pub_controller_test.exs index 30adfda36..8b3233729 100644 --- a/test/web/activity_pub/activity_pub_controller_test.exs +++ b/test/web/activity_pub/activity_pub_controller_test.exs @@ -11,6 +11,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do    alias Pleroma.User    alias Pleroma.Web.ActivityPub.ObjectView    alias Pleroma.Web.ActivityPub.UserView +  alias Pleroma.Web.ActivityPub.Utils    setup_all do      Tesla.Mock.mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end) @@ -234,13 +235,17 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do    end    describe "/users/:nickname/inbox" do -    test "it inserts an incoming activity into the database", %{conn: conn} do -      user = insert(:user) - +    setup do        data =          File.read!("test/fixtures/mastodon-post-activity.json")          |> Poison.decode!() -        |> Map.put("bcc", [user.ap_id]) + +      [data: data] +    end + +    test "it inserts an incoming activity into the database", %{conn: conn, data: data} do +      user = insert(:user) +      data = Map.put(data, "bcc", [user.ap_id])        conn =          conn @@ -253,16 +258,15 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do        assert Activity.get_by_ap_id(data["id"])      end -    test "it accepts messages from actors that are followed by the user", %{conn: conn} do +    test "it accepts messages from actors that are followed by the user", %{ +      conn: conn, +      data: data +    } do        recipient = insert(:user)        actor = insert(:user, %{ap_id: "http://mastodon.example.org/users/actor"})        {:ok, recipient} = User.follow(recipient, actor) -      data = -        File.read!("test/fixtures/mastodon-post-activity.json") -        |> Poison.decode!() -        object =          data["object"]          |> Map.put("attributedTo", actor.ap_id) @@ -309,13 +313,9 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do        assert response(conn, 200) =~ note_activity.data["object"]["content"]      end -    test "it clears `unreachable` federation status of the sender", %{conn: conn} do +    test "it clears `unreachable` federation status of the sender", %{conn: conn, data: data} do        user = insert(:user) - -      data = -        File.read!("test/fixtures/mastodon-post-activity.json") -        |> Poison.decode!() -        |> Map.put("bcc", [user.ap_id]) +      data = Map.put(data, "bcc", [user.ap_id])        sender_host = URI.parse(data["actor"]).host        Instances.set_consistently_unreachable(sender_host) @@ -330,6 +330,47 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do        assert "ok" == json_response(conn, 200)        assert Instances.reachable?(sender_host)      end + +    test "it removes all follower collections but actor's", %{conn: conn} do +      [actor, recipient] = insert_pair(:user) + +      data = +        File.read!("test/fixtures/activitypub-client-post-activity.json") +        |> Poison.decode!() + +      object = Map.put(data["object"], "attributedTo", actor.ap_id) + +      data = +        data +        |> Map.put("id", Utils.generate_object_id()) +        |> Map.put("actor", actor.ap_id) +        |> Map.put("object", object) +        |> Map.put("cc", [ +          recipient.follower_address, +          actor.follower_address +        ]) +        |> Map.put("to", [ +          recipient.ap_id, +          recipient.follower_address, +          "https://www.w3.org/ns/activitystreams#Public" +        ]) + +      conn +      |> assign(:valid_signature, true) +      |> put_req_header("content-type", "application/activity+json") +      |> post("/users/#{recipient.nickname}/inbox", data) +      |> json_response(200) + +      activity = Activity.get_by_ap_id(data["id"]) + +      assert activity.id +      assert actor.follower_address in activity.recipients +      assert actor.follower_address in activity.data["cc"] + +      refute recipient.follower_address in activity.recipients +      refute recipient.follower_address in activity.data["cc"] +      refute recipient.follower_address in activity.data["to"] +    end    end    describe "/users/:nickname/outbox" do diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs index 80832d1d8..89c8f79c9 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -1284,9 +1284,12 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do    end    describe "fix_explicit_addressing" do -    test "moves non-explicitly mentioned actors to cc" do +    setup do        user = insert(:user) +      [user: user] +    end +    test "moves non-explicitly mentioned actors to cc", %{user: user} do        explicitly_mentioned_actors = [          "https://pleroma.gold/users/user1",          "https://pleroma.gold/user2" @@ -1308,9 +1311,7 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do        assert "https://social.beepboop.ga/users/dirb" in fixed_object["cc"]      end -    test "does not move actor's follower collection to cc" do -      user = insert(:user) - +    test "does not move actor's follower collection to cc", %{user: user} do        object = %{          "actor" => user.ap_id,          "to" => [user.follower_address], @@ -1321,5 +1322,21 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do        assert user.follower_address in fixed_object["to"]        refute user.follower_address in fixed_object["cc"]      end + +    test "removes recipient's follower collection from cc", %{user: user} do +      recipient = insert(:user) + +      object = %{ +        "actor" => user.ap_id, +        "to" => [recipient.ap_id, "https://www.w3.org/ns/activitystreams#Public"], +        "cc" => [user.follower_address, recipient.follower_address] +      } + +      fixed_object = Transmogrifier.fix_explicit_addressing(object) + +      assert user.follower_address in fixed_object["cc"] +      refute recipient.follower_address in fixed_object["cc"] +      refute recipient.follower_address in fixed_object["to"] +    end    end  end diff --git a/test/web/activity_pub/visibilty_test.exs b/test/web/activity_pub/visibilty_test.exs index e2584f635..466d980dc 100644 --- a/test/web/activity_pub/visibilty_test.exs +++ b/test/web/activity_pub/visibilty_test.exs @@ -117,4 +117,8 @@ defmodule Pleroma.Web.ActivityPub.VisibilityTest do      assert Visibility.get_visibility(direct) == "direct"      assert Visibility.get_visibility(unlisted) == "unlisted"    end + +  test "get_visibility with directMessage flag" do +    assert Visibility.get_visibility(%{data: %{"directMessage" => true}}) == "direct" +  end  end  | 
