diff options
Diffstat (limited to 'test/web')
18 files changed, 581 insertions, 178 deletions
diff --git a/test/web/activity_pub/activity_pub_controller_test.exs b/test/web/activity_pub/activity_pub_controller_test.exs index 1aa73d75c..ba2ce1dd9 100644 --- a/test/web/activity_pub/activity_pub_controller_test.exs +++ b/test/web/activity_pub/activity_pub_controller_test.exs @@ -298,7 +298,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do        assert json_response(conn1, :ok)        assert Enum.any?(conn1.resp_headers, &(&1 == {"x-cache", "MISS from Pleroma"})) -      Activity.delete_by_ap_id(activity.object.data["id"]) +      Activity.delete_all_by_object_ap_id(activity.object.data["id"])        conn2 =          conn diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index 8cfc4ba2d..ad1fb6d02 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -487,7 +487,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do        activity_five = insert(:note_activity)        user = insert(:user) -      {:ok, user} = User.block(user, %{ap_id: activity_five.data["actor"]}) +      {:ok, _user_relationship} = User.block(user, %{ap_id: activity_five.data["actor"]})        activities = ActivityPub.fetch_activities_for_context("2hu", %{"blocking_user" => user})        assert activities == [activity_two, activity] @@ -500,7 +500,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do      activity_three = insert(:note_activity)      user = insert(:user)      booster = insert(:user) -    {:ok, user} = User.block(user, %{ap_id: activity_one.data["actor"]}) +    {:ok, _user_relationship} = User.block(user, %{ap_id: activity_one.data["actor"]})      activities =        ActivityPub.fetch_activities([], %{"blocking_user" => user, "skip_preload" => true}) @@ -509,7 +509,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do      assert Enum.member?(activities, activity_three)      refute Enum.member?(activities, activity_one) -    {:ok, user} = User.unblock(user, %{ap_id: activity_one.data["actor"]}) +    {:ok, _user_block} = User.unblock(user, %{ap_id: activity_one.data["actor"]})      activities =        ActivityPub.fetch_activities([], %{"blocking_user" => user, "skip_preload" => true}) @@ -518,7 +518,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do      assert Enum.member?(activities, activity_three)      assert Enum.member?(activities, activity_one) -    {:ok, user} = User.block(user, %{ap_id: activity_three.data["actor"]}) +    {:ok, _user_relationship} = User.block(user, %{ap_id: activity_three.data["actor"]})      {:ok, _announce, %{data: %{"id" => id}}} = CommonAPI.repeat(activity_three.id, booster)      %Activity{} = boost_activity = Activity.get_create_by_object_ap_id(id)      activity_three = Activity.get_by_id(activity_three.id) @@ -545,7 +545,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do      blockee = insert(:user)      friend = insert(:user) -    {:ok, blocker} = User.block(blocker, blockee) +    {:ok, _user_relationship} = User.block(blocker, blockee)      {:ok, activity_one} = CommonAPI.post(friend, %{"status" => "hey!"}) @@ -568,7 +568,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do      blockee = insert(:user)      friend = insert(:user) -    {:ok, blocker} = User.block(blocker, blockee) +    {:ok, _user_relationship} = User.block(blocker, blockee)      {:ok, activity_one} = CommonAPI.post(friend, %{"status" => "hey!"}) @@ -608,13 +608,48 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do      refute repeat_activity in activities    end +  test "does return activities from followed users on blocked domains" do +    domain = "meanies.social" +    domain_user = insert(:user, %{ap_id: "https://#{domain}/@pundit"}) +    blocker = insert(:user) + +    {:ok, blocker} = User.follow(blocker, domain_user) +    {:ok, blocker} = User.block_domain(blocker, domain) + +    assert User.following?(blocker, domain_user) +    assert User.blocks_domain?(blocker, domain_user) +    refute User.blocks?(blocker, domain_user) + +    note = insert(:note, %{data: %{"actor" => domain_user.ap_id}}) +    activity = insert(:note_activity, %{note: note}) + +    activities = +      ActivityPub.fetch_activities([], %{"blocking_user" => blocker, "skip_preload" => true}) + +    assert activity in activities + +    # And check that if the guy we DO follow boosts someone else from their domain, +    # that should be hidden +    another_user = insert(:user, %{ap_id: "https://#{domain}/@meanie2"}) +    bad_note = insert(:note, %{data: %{"actor" => another_user.ap_id}}) +    bad_activity = insert(:note_activity, %{note: bad_note}) +    {:ok, repeat_activity, _} = CommonAPI.repeat(bad_activity.id, domain_user) + +    activities = +      ActivityPub.fetch_activities([], %{"blocking_user" => blocker, "skip_preload" => true}) + +    refute repeat_activity in activities +  end +    test "doesn't return muted activities" do      activity_one = insert(:note_activity)      activity_two = insert(:note_activity)      activity_three = insert(:note_activity)      user = insert(:user)      booster = insert(:user) -    {:ok, user} = User.mute(user, %User{ap_id: activity_one.data["actor"]}) + +    activity_one_actor = User.get_by_ap_id(activity_one.data["actor"]) +    {:ok, _user_relationships} = User.mute(user, activity_one_actor)      activities =        ActivityPub.fetch_activities([], %{"muting_user" => user, "skip_preload" => true}) @@ -635,7 +670,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do      assert Enum.member?(activities, activity_three)      assert Enum.member?(activities, activity_one) -    {:ok, user} = User.unmute(user, %User{ap_id: activity_one.data["actor"]}) +    {:ok, _user_mute} = User.unmute(user, activity_one_actor)      activities =        ActivityPub.fetch_activities([], %{"muting_user" => user, "skip_preload" => true}) @@ -644,7 +679,8 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do      assert Enum.member?(activities, activity_three)      assert Enum.member?(activities, activity_one) -    {:ok, user} = User.mute(user, %User{ap_id: activity_three.data["actor"]}) +    activity_three_actor = User.get_by_ap_id(activity_three.data["actor"]) +    {:ok, _user_relationships} = User.mute(user, activity_three_actor)      {:ok, _announce, %{data: %{"id" => id}}} = CommonAPI.repeat(activity_three.id, booster)      %Activity{} = boost_activity = Activity.get_create_by_object_ap_id(id)      activity_three = Activity.get_by_id(activity_three.id) @@ -791,7 +827,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do        activity = insert(:note_activity)        user = insert(:user)        booster = insert(:user) -      {:ok, user} = CommonAPI.hide_reblogs(user, booster) +      {:ok, _reblog_mute} = CommonAPI.hide_reblogs(user, booster)        {:ok, activity, _} = CommonAPI.repeat(activity.id, booster) @@ -804,8 +840,8 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do        activity = insert(:note_activity)        user = insert(:user)        booster = insert(:user) -      {:ok, user} = CommonAPI.hide_reblogs(user, booster) -      {:ok, user} = CommonAPI.show_reblogs(user, booster) +      {:ok, _reblog_mute} = CommonAPI.hide_reblogs(user, booster) +      {:ok, _reblog_mute} = CommonAPI.show_reblogs(user, booster)        {:ok, activity, _} = CommonAPI.repeat(activity.id, booster) @@ -1256,6 +1292,21 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do        assert %{data: data, object: object} = Activity.get_by_ap_id_with_object(ap_id)        assert object.data["repliesCount"] == 0      end + +    test "it passes delete activity through MRF before deleting the object" do +      rewrite_policy = Pleroma.Config.get([:instance, :rewrite_policy]) +      Pleroma.Config.put([:instance, :rewrite_policy], Pleroma.Web.ActivityPub.MRF.DropPolicy) + +      on_exit(fn -> Pleroma.Config.put([:instance, :rewrite_policy], rewrite_policy) end) + +      note = insert(:note_activity) +      object = Object.normalize(note) + +      {:error, {:reject, _}} = ActivityPub.delete(object) + +      assert Activity.get_by_id(note.id) +      assert Repo.get(Object, object.id).data["type"] == object.data["type"] +    end    end    describe "timeline post-processing" do @@ -1651,10 +1702,10 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do        activity = %Activity{activity | object: nil}        assert [%Notification{activity: ^activity}] = -               Notification.for_user_since(follower, ~N[2019-04-13 11:22:33]) +               Notification.for_user(follower, %{with_move: true})        assert [%Notification{activity: ^activity}] = -               Notification.for_user_since(follower_move_opted_out, ~N[2019-04-13 11:22:33]) +               Notification.for_user(follower_move_opted_out, %{with_move: true})      end      test "old user must be in the new user's `also_known_as` list" do diff --git a/test/web/activity_pub/transmogrifier/follow_handling_test.exs b/test/web/activity_pub/transmogrifier/follow_handling_test.exs index 75cfbea2e..7d6d0814d 100644 --- a/test/web/activity_pub/transmogrifier/follow_handling_test.exs +++ b/test/web/activity_pub/transmogrifier/follow_handling_test.exs @@ -128,7 +128,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier.FollowHandlingTest do        user = insert(:user)        {:ok, target} = User.get_or_fetch("http://mastodon.example.org/users/admin") -      {:ok, user} = User.block(user, target) +      {:ok, _user_relationship} = User.block(user, target)        data =          File.read!("test/fixtures/mastodon-follow-activity.json") diff --git a/test/web/activity_pub/utils_test.exs b/test/web/activity_pub/utils_test.exs index 1feb076ba..586eb1d2f 100644 --- a/test/web/activity_pub/utils_test.exs +++ b/test/web/activity_pub/utils_test.exs @@ -636,47 +636,4 @@ defmodule Pleroma.Web.ActivityPub.UtilsTest do        assert updated_object.data["announcement_count"] == 1      end    end - -  describe "get_reports_grouped_by_status/1" do -    setup do -      [reporter, target_user] = insert_pair(:user) -      first_status = insert(:note_activity, user: target_user) -      second_status = insert(:note_activity, user: target_user) - -      CommonAPI.report(reporter, %{ -        "account_id" => target_user.id, -        "comment" => "I feel offended", -        "status_ids" => [first_status.id] -      }) - -      CommonAPI.report(reporter, %{ -        "account_id" => target_user.id, -        "comment" => "I feel offended2", -        "status_ids" => [second_status.id] -      }) - -      data = [%{activity: first_status.data["id"]}, %{activity: second_status.data["id"]}] - -      {:ok, -       %{ -         first_status: first_status, -         second_status: second_status, -         data: data -       }} -    end - -    test "works for deprecated reports format", %{ -      first_status: first_status, -      second_status: second_status, -      data: data -    } do -      groups = Utils.get_reports_grouped_by_status(data).groups - -      first_group = Enum.find(groups, &(&1.status.id == first_status.data["id"])) -      second_group = Enum.find(groups, &(&1.status.id == second_status.data["id"])) - -      assert first_group.status.id == first_status.data["id"] -      assert second_group.status.id == second_status.data["id"] -    end -  end  end diff --git a/test/web/admin_api/admin_api_controller_test.exs b/test/web/admin_api/admin_api_controller_test.exs index 32577afee..23ca7f110 100644 --- a/test/web/admin_api/admin_api_controller_test.exs +++ b/test/web/admin_api/admin_api_controller_test.exs @@ -15,6 +15,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do    alias Pleroma.UserInviteToken    alias Pleroma.Web.ActivityPub.Relay    alias Pleroma.Web.CommonAPI +  alias Pleroma.Web.MastodonAPI.StatusView    alias Pleroma.Web.MediaProxy    import Pleroma.Factory @@ -24,6 +25,60 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do      :ok    end +  clear_config([:auth, :enforce_oauth_admin_scope_usage]) do +    Pleroma.Config.put([:auth, :enforce_oauth_admin_scope_usage], false) +  end + +  describe "with [:auth, :enforce_oauth_admin_scope_usage]," do +    clear_config([:auth, :enforce_oauth_admin_scope_usage]) do +      Pleroma.Config.put([:auth, :enforce_oauth_admin_scope_usage], true) +    end + +    test "GET /api/pleroma/admin/users/:nickname requires admin:read:accounts or broader scope" do +      user = insert(:user) +      admin = insert(:user, is_admin: true) +      url = "/api/pleroma/admin/users/#{user.nickname}" + +      good_token1 = insert(:oauth_token, user: admin, scopes: ["admin"]) +      good_token2 = insert(:oauth_token, user: admin, scopes: ["admin:read"]) +      good_token3 = insert(:oauth_token, user: admin, scopes: ["admin:read:accounts"]) + +      bad_token1 = insert(:oauth_token, user: admin, scopes: ["read:accounts"]) +      bad_token2 = insert(:oauth_token, user: admin, scopes: ["admin:read:accounts:partial"]) +      bad_token3 = nil + +      for good_token <- [good_token1, good_token2, good_token3] do +        conn = +          build_conn() +          |> assign(:user, admin) +          |> assign(:token, good_token) +          |> get(url) + +        assert json_response(conn, 200) +      end + +      for good_token <- [good_token1, good_token2, good_token3] do +        conn = +          build_conn() +          |> assign(:user, nil) +          |> assign(:token, good_token) +          |> get(url) + +        assert json_response(conn, :forbidden) +      end + +      for bad_token <- [bad_token1, bad_token2, bad_token3] do +        conn = +          build_conn() +          |> assign(:user, admin) +          |> assign(:token, bad_token) +          |> get(url) + +        assert json_response(conn, :forbidden) +      end +    end +  end +    describe "DELETE /api/pleroma/admin/users" do      test "single user" do        admin = insert(:user, is_admin: true) @@ -97,7 +152,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do        assert ["lain", "lain2"] -- Enum.map(log_entry.data["subjects"], & &1["nickname"]) == []      end -    test "Cannot create user with exisiting email" do +    test "Cannot create user with existing email" do        admin = insert(:user, is_admin: true)        user = insert(:user) @@ -128,7 +183,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do               ]      end -    test "Cannot create user with exisiting nickname" do +    test "Cannot create user with existing nickname" do        admin = insert(:user, is_admin: true)        user = insert(:user) @@ -1559,7 +1614,8 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do          |> assign(:user, user)          |> get("/api/pleroma/admin/reports") -      assert json_response(conn, :forbidden) == %{"error" => "User is not admin."} +      assert json_response(conn, :forbidden) == +               %{"error" => "User is not an admin or OAuth admin scope is not granted."}      end      test "returns 403 when requested by anonymous" do @@ -1612,6 +1668,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do          first_status: Activity.get_by_ap_id_with_object(first_status.data["id"]),          second_status: Activity.get_by_ap_id_with_object(second_status.data["id"]),          third_status: Activity.get_by_ap_id_with_object(third_status.data["id"]), +        first_report: first_report,          first_status_reports: [first_report, second_report, third_report],          second_status_reports: [first_report, second_report],          third_status_reports: [first_report], @@ -1638,14 +1695,11 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do        assert length(response["reports"]) == 3 -      first_group = -        Enum.find(response["reports"], &(&1["status"]["id"] == first_status.data["id"])) +      first_group = Enum.find(response["reports"], &(&1["status"]["id"] == first_status.id)) -      second_group = -        Enum.find(response["reports"], &(&1["status"]["id"] == second_status.data["id"])) +      second_group = Enum.find(response["reports"], &(&1["status"]["id"] == second_status.id)) -      third_group = -        Enum.find(response["reports"], &(&1["status"]["id"] == third_status.data["id"])) +      third_group = Enum.find(response["reports"], &(&1["status"]["id"] == third_status.id))        assert length(first_group["reports"]) == 3        assert length(second_group["reports"]) == 2 @@ -1656,13 +1710,14 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do                   NaiveDateTime.from_iso8601!(act.data["published"])                 end).data["published"] -      assert first_group["status"] == %{ -               "id" => first_status.data["id"], -               "content" => first_status.object.data["content"], -               "published" => first_status.object.data["published"] -             } +      assert first_group["status"] == +               Map.put( +                 stringify_keys(StatusView.render("show.json", %{activity: first_status})), +                 "deleted", +                 false +               ) -      assert first_group["account"]["id"] == target_user.id +      assert(first_group["account"]["id"] == target_user.id)        assert length(first_group["actors"]) == 1        assert hd(first_group["actors"])["id"] == reporter.id @@ -1675,11 +1730,12 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do                   NaiveDateTime.from_iso8601!(act.data["published"])                 end).data["published"] -      assert second_group["status"] == %{ -               "id" => second_status.data["id"], -               "content" => second_status.object.data["content"], -               "published" => second_status.object.data["published"] -             } +      assert second_group["status"] == +               Map.put( +                 stringify_keys(StatusView.render("show.json", %{activity: second_status})), +                 "deleted", +                 false +               )        assert second_group["account"]["id"] == target_user.id @@ -1694,11 +1750,12 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do                   NaiveDateTime.from_iso8601!(act.data["published"])                 end).data["published"] -      assert third_group["status"] == %{ -               "id" => third_status.data["id"], -               "content" => third_status.object.data["content"], -               "published" => third_status.object.data["published"] -             } +      assert third_group["status"] == +               Map.put( +                 stringify_keys(StatusView.render("show.json", %{activity: third_status})), +                 "deleted", +                 false +               )        assert third_group["account"]["id"] == target_user.id @@ -1708,6 +1765,70 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do        assert Enum.map(third_group["reports"], & &1["id"]) --                 Enum.map(third_status_reports, & &1.id) == []      end + +    test "reopened report renders status data", %{ +      conn: conn, +      first_report: first_report, +      first_status: first_status +    } do +      {:ok, _} = CommonAPI.update_report_state(first_report.id, "resolved") + +      response = +        conn +        |> get("/api/pleroma/admin/grouped_reports") +        |> json_response(:ok) + +      first_group = Enum.find(response["reports"], &(&1["status"]["id"] == first_status.id)) + +      assert first_group["status"] == +               Map.put( +                 stringify_keys(StatusView.render("show.json", %{activity: first_status})), +                 "deleted", +                 false +               ) +    end + +    test "reopened report does not render status data if status has been deleted", %{ +      conn: conn, +      first_report: first_report, +      first_status: first_status, +      target_user: target_user +    } do +      {:ok, _} = CommonAPI.update_report_state(first_report.id, "resolved") +      {:ok, _} = CommonAPI.delete(first_status.id, target_user) + +      refute Activity.get_by_ap_id(first_status.id) + +      response = +        conn +        |> get("/api/pleroma/admin/grouped_reports") +        |> json_response(:ok) + +      assert Enum.find(response["reports"], &(&1["status"]["deleted"] == true))["status"][ +               "deleted" +             ] == true + +      assert length(Enum.filter(response["reports"], &(&1["status"]["deleted"] == false))) == 2 +    end + +    test "account not empty if status was deleted", %{ +      conn: conn, +      first_report: first_report, +      first_status: first_status, +      target_user: target_user +    } do +      {:ok, _} = CommonAPI.update_report_state(first_report.id, "resolved") +      {:ok, _} = CommonAPI.delete(first_status.id, target_user) + +      refute Activity.get_by_ap_id(first_status.id) + +      response = +        conn +        |> get("/api/pleroma/admin/grouped_reports") +        |> json_response(:ok) + +      assert Enum.find(response["reports"], &(&1["status"]["deleted"] == true))["account"] +    end    end    describe "POST /api/pleroma/admin/reports/:id/respond" do diff --git a/test/web/chat_channel_test.exs b/test/web/chat_channel_test.exs new file mode 100644 index 000000000..68c24a9f9 --- /dev/null +++ b/test/web/chat_channel_test.exs @@ -0,0 +1,37 @@ +defmodule Pleroma.Web.ChatChannelTest do +  use Pleroma.Web.ChannelCase +  alias Pleroma.Web.ChatChannel +  alias Pleroma.Web.UserSocket + +  import Pleroma.Factory + +  setup do +    user = insert(:user) + +    {:ok, _, socket} = +      socket(UserSocket, "", %{user_name: user.nickname}) +      |> subscribe_and_join(ChatChannel, "chat:public") + +    {:ok, socket: socket} +  end + +  test "it broadcasts a message", %{socket: socket} do +    push(socket, "new_msg", %{"text" => "why is tenshi eating a corndog so cute?"}) +    assert_broadcast("new_msg", %{text: "why is tenshi eating a corndog so cute?"}) +  end + +  describe "message lengths" do +    clear_config([:instance, :chat_limit]) + +    test "it ignores messages of length zero", %{socket: socket} do +      push(socket, "new_msg", %{"text" => ""}) +      refute_broadcast("new_msg", %{text: ""}) +    end + +    test "it ignores messages above a certain length", %{socket: socket} do +      Pleroma.Config.put([:instance, :chat_limit], 2) +      push(socket, "new_msg", %{"text" => "123"}) +      refute_broadcast("new_msg", %{text: "123"}) +    end +  end +end diff --git a/test/web/common_api/common_api_test.exs b/test/web/common_api/common_api_test.exs index 138488d44..b5d6d4055 100644 --- a/test/web/common_api/common_api_test.exs +++ b/test/web/common_api/common_api_test.exs @@ -509,14 +509,14 @@ defmodule Pleroma.Web.CommonAPITest do      end      test "add a reblog mute", %{muter: muter, muted: muted} do -      {:ok, muter} = CommonAPI.hide_reblogs(muter, muted) +      {:ok, _reblog_mute} = CommonAPI.hide_reblogs(muter, muted)        assert User.showing_reblogs?(muter, muted) == false      end      test "remove a reblog mute", %{muter: muter, muted: muted} do -      {:ok, muter} = CommonAPI.hide_reblogs(muter, muted) -      {:ok, muter} = CommonAPI.show_reblogs(muter, muted) +      {:ok, _reblog_mute} = CommonAPI.hide_reblogs(muter, muted) +      {:ok, _reblog_mute} = CommonAPI.show_reblogs(muter, muted)        assert User.showing_reblogs?(muter, muted) == true      end @@ -526,7 +526,7 @@ defmodule Pleroma.Web.CommonAPITest do      test "also unsubscribes a user" do        [follower, followed] = insert_pair(:user)        {:ok, follower, followed, _} = CommonAPI.follow(follower, followed) -      {:ok, followed} = User.subscribe(follower, followed) +      {:ok, _subscription} = User.subscribe(follower, followed)        assert User.subscribed_to?(follower, followed) diff --git a/test/web/mastodon_api/controllers/account_controller_test.exs b/test/web/mastodon_api/controllers/account_controller_test.exs index 585cb8a9e..fa08ae4df 100644 --- a/test/web/mastodon_api/controllers/account_controller_test.exs +++ b/test/web/mastodon_api/controllers/account_controller_test.exs @@ -144,6 +144,50 @@ defmodule Pleroma.Web.MastodonAPI.AccountControllerTest do    end    describe "user timelines" do +    test "respects blocks", %{conn: conn} do +      user_one = insert(:user) +      user_two = insert(:user) +      user_three = insert(:user) + +      User.block(user_one, user_two) + +      {:ok, activity} = CommonAPI.post(user_two, %{"status" => "User one sux0rz"}) +      {:ok, repeat, _} = CommonAPI.repeat(activity.id, user_three) + +      resp = +        conn +        |> get("/api/v1/accounts/#{user_two.id}/statuses") + +      assert [%{"id" => id}] = json_response(resp, 200) +      assert id == activity.id + +      # Even a blocked user will deliver the full user timeline, there would be +      # no point in looking at a blocked users timeline otherwise +      resp = +        conn +        |> assign(:user, user_one) +        |> get("/api/v1/accounts/#{user_two.id}/statuses") + +      assert [%{"id" => id}] = json_response(resp, 200) +      assert id == activity.id + +      resp = +        conn +        |> get("/api/v1/accounts/#{user_three.id}/statuses") + +      assert [%{"id" => id}] = json_response(resp, 200) +      assert id == repeat.id + +      # When viewing a third user's timeline, the blocked users will NOT be +      # shown. +      resp = +        conn +        |> assign(:user, user_one) +        |> get("/api/v1/accounts/#{user_three.id}/statuses") + +      assert [] = json_response(resp, 200) +    end +      test "gets a users statuses", %{conn: conn} do        user_one = insert(:user)        user_two = insert(:user) @@ -891,7 +935,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountControllerTest do      user = insert(:user)      other_user = insert(:user) -    {:ok, user} = User.mute(user, other_user) +    {:ok, _user_relationships} = User.mute(user, other_user)      conn =        conn @@ -906,7 +950,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountControllerTest do      user = insert(:user)      other_user = insert(:user) -    {:ok, user} = User.block(user, other_user) +    {:ok, _user_relationship} = User.block(user, other_user)      conn =        conn diff --git a/test/web/mastodon_api/controllers/notification_controller_test.exs b/test/web/mastodon_api/controllers/notification_controller_test.exs index fa55a7cf9..6635ea7a2 100644 --- a/test/web/mastodon_api/controllers/notification_controller_test.exs +++ b/test/web/mastodon_api/controllers/notification_controller_test.exs @@ -137,55 +137,151 @@ defmodule Pleroma.Web.MastodonAPI.NotificationControllerTest do      assert [%{"id" => ^notification3_id}, %{"id" => ^notification2_id}] = result    end -  test "filters notifications using exclude_visibilities", %{conn: conn} do -    user = insert(:user) -    other_user = insert(:user) - -    {:ok, public_activity} = -      CommonAPI.post(other_user, %{"status" => "@#{user.nickname}", "visibility" => "public"}) - -    {:ok, direct_activity} = -      CommonAPI.post(other_user, %{"status" => "@#{user.nickname}", "visibility" => "direct"}) - -    {:ok, unlisted_activity} = -      CommonAPI.post(other_user, %{"status" => "@#{user.nickname}", "visibility" => "unlisted"}) - -    {:ok, private_activity} = -      CommonAPI.post(other_user, %{"status" => "@#{user.nickname}", "visibility" => "private"}) - -    conn = assign(conn, :user, user) - -    conn_res = -      get(conn, "/api/v1/notifications", %{ -        exclude_visibilities: ["public", "unlisted", "private"] -      }) - -    assert [%{"status" => %{"id" => id}}] = json_response(conn_res, 200) -    assert id == direct_activity.id - -    conn_res = -      get(conn, "/api/v1/notifications", %{ -        exclude_visibilities: ["public", "unlisted", "direct"] -      }) - -    assert [%{"status" => %{"id" => id}}] = json_response(conn_res, 200) -    assert id == private_activity.id - -    conn_res = -      get(conn, "/api/v1/notifications", %{ -        exclude_visibilities: ["public", "private", "direct"] -      }) - -    assert [%{"status" => %{"id" => id}}] = json_response(conn_res, 200) -    assert id == unlisted_activity.id - -    conn_res = -      get(conn, "/api/v1/notifications", %{ -        exclude_visibilities: ["unlisted", "private", "direct"] -      }) - -    assert [%{"status" => %{"id" => id}}] = json_response(conn_res, 200) -    assert id == public_activity.id +  describe "exclude_visibilities" do +    test "filters notifications for mentions", %{conn: conn} do +      user = insert(:user) +      other_user = insert(:user) + +      {:ok, public_activity} = +        CommonAPI.post(other_user, %{"status" => "@#{user.nickname}", "visibility" => "public"}) + +      {:ok, direct_activity} = +        CommonAPI.post(other_user, %{"status" => "@#{user.nickname}", "visibility" => "direct"}) + +      {:ok, unlisted_activity} = +        CommonAPI.post(other_user, %{"status" => "@#{user.nickname}", "visibility" => "unlisted"}) + +      {:ok, private_activity} = +        CommonAPI.post(other_user, %{"status" => "@#{user.nickname}", "visibility" => "private"}) + +      conn = assign(conn, :user, user) + +      conn_res = +        get(conn, "/api/v1/notifications", %{ +          exclude_visibilities: ["public", "unlisted", "private"] +        }) + +      assert [%{"status" => %{"id" => id}}] = json_response(conn_res, 200) +      assert id == direct_activity.id + +      conn_res = +        get(conn, "/api/v1/notifications", %{ +          exclude_visibilities: ["public", "unlisted", "direct"] +        }) + +      assert [%{"status" => %{"id" => id}}] = json_response(conn_res, 200) +      assert id == private_activity.id + +      conn_res = +        get(conn, "/api/v1/notifications", %{ +          exclude_visibilities: ["public", "private", "direct"] +        }) + +      assert [%{"status" => %{"id" => id}}] = json_response(conn_res, 200) +      assert id == unlisted_activity.id + +      conn_res = +        get(conn, "/api/v1/notifications", %{ +          exclude_visibilities: ["unlisted", "private", "direct"] +        }) + +      assert [%{"status" => %{"id" => id}}] = json_response(conn_res, 200) +      assert id == public_activity.id +    end + +    test "filters notifications for Like activities", %{conn: conn} do +      user = insert(:user) +      other_user = insert(:user) + +      {:ok, public_activity} = +        CommonAPI.post(other_user, %{"status" => ".", "visibility" => "public"}) + +      {:ok, direct_activity} = +        CommonAPI.post(other_user, %{"status" => "@#{user.nickname}", "visibility" => "direct"}) + +      {:ok, unlisted_activity} = +        CommonAPI.post(other_user, %{"status" => ".", "visibility" => "unlisted"}) + +      {:ok, private_activity} = +        CommonAPI.post(other_user, %{"status" => ".", "visibility" => "private"}) + +      {:ok, _, _} = CommonAPI.favorite(public_activity.id, user) +      {:ok, _, _} = CommonAPI.favorite(direct_activity.id, user) +      {:ok, _, _} = CommonAPI.favorite(unlisted_activity.id, user) +      {:ok, _, _} = CommonAPI.favorite(private_activity.id, user) + +      activity_ids = +        conn +        |> assign(:user, other_user) +        |> get("/api/v1/notifications", %{exclude_visibilities: ["direct"]}) +        |> json_response(200) +        |> Enum.map(& &1["status"]["id"]) + +      assert public_activity.id in activity_ids +      assert unlisted_activity.id in activity_ids +      assert private_activity.id in activity_ids +      refute direct_activity.id in activity_ids + +      activity_ids = +        conn +        |> assign(:user, other_user) +        |> get("/api/v1/notifications", %{exclude_visibilities: ["unlisted"]}) +        |> json_response(200) +        |> Enum.map(& &1["status"]["id"]) + +      assert public_activity.id in activity_ids +      refute unlisted_activity.id in activity_ids +      assert private_activity.id in activity_ids +      assert direct_activity.id in activity_ids + +      activity_ids = +        conn +        |> assign(:user, other_user) +        |> get("/api/v1/notifications", %{exclude_visibilities: ["private"]}) +        |> json_response(200) +        |> Enum.map(& &1["status"]["id"]) + +      assert public_activity.id in activity_ids +      assert unlisted_activity.id in activity_ids +      refute private_activity.id in activity_ids +      assert direct_activity.id in activity_ids + +      activity_ids = +        conn +        |> assign(:user, other_user) +        |> get("/api/v1/notifications", %{exclude_visibilities: ["public"]}) +        |> json_response(200) +        |> Enum.map(& &1["status"]["id"]) + +      refute public_activity.id in activity_ids +      assert unlisted_activity.id in activity_ids +      assert private_activity.id in activity_ids +      assert direct_activity.id in activity_ids +    end + +    test "filters notifications for Announce activities", %{conn: conn} do +      user = insert(:user) +      other_user = insert(:user) + +      {:ok, public_activity} = +        CommonAPI.post(other_user, %{"status" => ".", "visibility" => "public"}) + +      {:ok, unlisted_activity} = +        CommonAPI.post(other_user, %{"status" => ".", "visibility" => "unlisted"}) + +      {:ok, _, _} = CommonAPI.repeat(public_activity.id, user) +      {:ok, _, _} = CommonAPI.repeat(unlisted_activity.id, user) + +      activity_ids = +        conn +        |> assign(:user, other_user) +        |> get("/api/v1/notifications", %{exclude_visibilities: ["unlisted"]}) +        |> json_response(200) +        |> Enum.map(& &1["status"]["id"]) + +      assert public_activity.id in activity_ids +      refute unlisted_activity.id in activity_ids +    end    end    test "filters notifications using exclude_types", %{conn: conn} do @@ -289,7 +385,7 @@ defmodule Pleroma.Web.MastodonAPI.NotificationControllerTest do      assert length(json_response(conn, 200)) == 1 -    {:ok, user} = User.mute(user, user2) +    {:ok, _user_relationships} = User.mute(user, user2)      conn = assign(build_conn(), :user, user)      conn = get(conn, "/api/v1/notifications") @@ -310,7 +406,7 @@ defmodule Pleroma.Web.MastodonAPI.NotificationControllerTest do      assert length(json_response(conn, 200)) == 1 -    {:ok, user} = User.mute(user, user2, false) +    {:ok, _user_relationships} = User.mute(user, user2, false)      conn = assign(build_conn(), :user, user)      conn = get(conn, "/api/v1/notifications") @@ -333,7 +429,7 @@ defmodule Pleroma.Web.MastodonAPI.NotificationControllerTest do      assert length(json_response(conn, 200)) == 1 -    {:ok, user} = User.mute(user, user2) +    {:ok, _user_relationships} = User.mute(user, user2)      conn = assign(build_conn(), :user, user)      conn = get(conn, "/api/v1/notifications", %{"with_muted" => "true"}) @@ -341,6 +437,32 @@ defmodule Pleroma.Web.MastodonAPI.NotificationControllerTest do      assert length(json_response(conn, 200)) == 1    end +  test "see move notifications with `with_move` parameter", %{ +    conn: conn +  } do +    old_user = insert(:user) +    new_user = insert(:user, also_known_as: [old_user.ap_id]) +    follower = insert(:user) + +    User.follow(follower, old_user) +    Pleroma.Web.ActivityPub.ActivityPub.move(old_user, new_user) +    Pleroma.Tests.ObanHelpers.perform_all() + +    conn = +      conn +      |> assign(:user, follower) +      |> get("/api/v1/notifications") + +    assert json_response(conn, 200) == [] + +    conn = +      build_conn() +      |> assign(:user, follower) +      |> get("/api/v1/notifications", %{"with_move" => "true"}) + +    assert length(json_response(conn, 200)) == 1 +  end +    defp get_notification_id_by_activity(%{id: id}) do      Notification      |> Repo.get_by(activity_id: id) diff --git a/test/web/mastodon_api/controllers/search_controller_test.exs b/test/web/mastodon_api/controllers/search_controller_test.exs index 7953fad62..34deeba47 100644 --- a/test/web/mastodon_api/controllers/search_controller_test.exs +++ b/test/web/mastodon_api/controllers/search_controller_test.exs @@ -165,15 +165,20 @@ defmodule Pleroma.Web.MastodonAPI.SearchControllerTest do        assert status["id"] == to_string(activity.id)      end -    test "search fetches remote statuses", %{conn: conn} do +    test "search fetches remote statuses and prefers them over other results", %{conn: conn} do        capture_log(fn -> +        {:ok, %{id: activity_id}} = +          CommonAPI.post(insert(:user), %{ +            "status" => "check out https://shitposter.club/notice/2827873" +          }) +          conn =            conn            |> get("/api/v1/search", %{"q" => "https://shitposter.club/notice/2827873"})          assert results = json_response(conn, 200) -        [status] = results["statuses"] +        [status, %{"id" => ^activity_id}] = results["statuses"]          assert status["uri"] ==                   "tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment" diff --git a/test/web/mastodon_api/controllers/status_controller_test.exs b/test/web/mastodon_api/controllers/status_controller_test.exs index a96fd860b..5fbe947ba 100644 --- a/test/web/mastodon_api/controllers/status_controller_test.exs +++ b/test/web/mastodon_api/controllers/status_controller_test.exs @@ -1108,7 +1108,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do        activity: activity      } do        other_user = insert(:user) -      {:ok, user} = User.block(user, other_user) +      {:ok, _user_relationship} = User.block(user, other_user)        {:ok, _, _} = CommonAPI.favorite(activity.id, other_user) @@ -1205,7 +1205,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do        activity: activity      } do        other_user = insert(:user) -      {:ok, user} = User.block(user, other_user) +      {:ok, _user_relationship} = User.block(user, other_user)        {:ok, _, _} = CommonAPI.repeat(activity.id, other_user) diff --git a/test/web/mastodon_api/controllers/timeline_controller_test.exs b/test/web/mastodon_api/controllers/timeline_controller_test.exs index 61b6cea75..dc17cc963 100644 --- a/test/web/mastodon_api/controllers/timeline_controller_test.exs +++ b/test/web/mastodon_api/controllers/timeline_controller_test.exs @@ -194,7 +194,7 @@ defmodule Pleroma.Web.MastodonAPI.TimelineControllerTest do        blocker = insert(:user)        blocked = insert(:user)        user = insert(:user) -      {:ok, blocker} = User.block(blocker, blocked) +      {:ok, _user_relationship} = User.block(blocker, blocked)        {:ok, _blocked_direct} =          CommonAPI.post(blocked, %{ diff --git a/test/web/mastodon_api/views/account_view_test.exs b/test/web/mastodon_api/views/account_view_test.exs index 35aefb7dc..2107bb85c 100644 --- a/test/web/mastodon_api/views/account_view_test.exs +++ b/test/web/mastodon_api/views/account_view_test.exs @@ -66,6 +66,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do          note: "valid html",          sensitive: false,          pleroma: %{ +          actor_type: "Person",            discoverable: false          },          fields: [] @@ -92,13 +93,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do    test "Represent the user account for the account owner" do      user = insert(:user) -    notification_settings = %{ -      "followers" => true, -      "follows" => true, -      "non_follows" => true, -      "non_followers" => true -    } - +    notification_settings = %Pleroma.User.NotificationSetting{}      privacy = user.default_scope      assert %{ @@ -112,7 +107,8 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do        insert(:user, %{          follower_count: 3,          note_count: 5, -        source_data: %{"type" => "Service"}, +        source_data: %{}, +        actor_type: "Service",          nickname: "shp@shitposter.club",          inserted_at: ~N[2017-08-15 15:47:06.597036]        }) @@ -140,6 +136,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do          note: user.bio,          sensitive: false,          pleroma: %{ +          actor_type: "Service",            discoverable: false          },          fields: [] @@ -190,9 +187,9 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do        {:ok, user} = User.follow(user, other_user)        {:ok, other_user} = User.follow(other_user, user) -      {:ok, other_user} = User.subscribe(user, other_user) -      {:ok, user} = User.mute(user, other_user, true) -      {:ok, user} = CommonAPI.hide_reblogs(user, other_user) +      {:ok, _subscription} = User.subscribe(user, other_user) +      {:ok, _user_relationships} = User.mute(user, other_user, true) +      {:ok, _reblog_mute} = CommonAPI.hide_reblogs(user, other_user)        expected = %{          id: to_string(other_user.id), @@ -218,9 +215,9 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do        other_user = insert(:user)        {:ok, user} = User.follow(user, other_user) -      {:ok, other_user} = User.subscribe(user, other_user) -      {:ok, user} = User.block(user, other_user) -      {:ok, other_user} = User.block(other_user, user) +      {:ok, _subscription} = User.subscribe(user, other_user) +      {:ok, _user_relationship} = User.block(user, other_user) +      {:ok, _user_relationship} = User.block(other_user, user)        expected = %{          id: to_string(other_user.id), @@ -284,14 +281,15 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do        insert(:user, %{          follower_count: 0,          note_count: 5, -        source_data: %{"type" => "Service"}, +        source_data: %{}, +        actor_type: "Service",          nickname: "shp@shitposter.club",          inserted_at: ~N[2017-08-15 15:47:06.597036]        })      other_user = insert(:user)      {:ok, other_user} = User.follow(other_user, user) -    {:ok, other_user} = User.block(other_user, user) +    {:ok, _user_relationship} = User.block(other_user, user)      {:ok, _} = User.follow(insert(:user), user)      expected = %{ @@ -317,6 +315,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do          note: user.bio,          sensitive: false,          pleroma: %{ +          actor_type: "Service",            discoverable: false          },          fields: [] diff --git a/test/web/mastodon_api/views/notification_view_test.exs b/test/web/mastodon_api/views/notification_view_test.exs index 26e1afc85..ba1721e06 100644 --- a/test/web/mastodon_api/views/notification_view_test.exs +++ b/test/web/mastodon_api/views/notification_view_test.exs @@ -109,8 +109,8 @@ defmodule Pleroma.Web.MastodonAPI.NotificationViewTest do    end    test "Move notification" do -    %{ap_id: old_ap_id} = old_user = insert(:user) -    %{ap_id: _new_ap_id} = new_user = insert(:user, also_known_as: [old_ap_id]) +    old_user = insert(:user) +    new_user = insert(:user, also_known_as: [old_user.ap_id])      follower = insert(:user)      User.follow(follower, old_user) @@ -120,7 +120,7 @@ defmodule Pleroma.Web.MastodonAPI.NotificationViewTest do      old_user = refresh_record(old_user)      new_user = refresh_record(new_user) -    [notification] = Notification.for_user(follower) +    [notification] = Notification.for_user(follower, %{with_move: true})      expected = %{        id: to_string(notification.id), diff --git a/test/web/mastodon_api/views/status_view_test.exs b/test/web/mastodon_api/views/status_view_test.exs index d46ecc646..bdd87a79e 100644 --- a/test/web/mastodon_api/views/status_view_test.exs +++ b/test/web/mastodon_api/views/status_view_test.exs @@ -183,7 +183,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusViewTest do      user = insert(:user)      other_user = insert(:user) -    {:ok, user} = User.mute(user, other_user) +    {:ok, _user_relationships} = User.mute(user, other_user)      {:ok, activity} = CommonAPI.post(other_user, %{"status" => "test"})      status = StatusView.render("show.json", %{activity: activity}) @@ -199,7 +199,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusViewTest do      user = insert(:user)      other_user = insert(:user) -    {:ok, user} = User.mute(user, other_user) +    {:ok, _user_relationships} = User.mute(user, other_user)      {:ok, activity} = CommonAPI.post(other_user, %{"status" => "test"})      status = StatusView.render("show.json", %{activity: activity, for: user}) diff --git a/test/web/push/impl_test.exs b/test/web/push/impl_test.exs index 9b554601d..acae7a734 100644 --- a/test/web/push/impl_test.exs +++ b/test/web/push/impl_test.exs @@ -6,6 +6,7 @@ defmodule Pleroma.Web.Push.ImplTest do    use Pleroma.DataCase    alias Pleroma.Object +  alias Pleroma.User    alias Pleroma.Web.CommonAPI    alias Pleroma.Web.Push.Impl    alias Pleroma.Web.Push.Subscription @@ -182,4 +183,50 @@ defmodule Pleroma.Web.Push.ImplTest do      assert Impl.format_title(%{activity: activity}) ==               "New Direct Message"    end + +  describe "build_content/3" do +    test "returns info content for direct message with enabled privacy option" do +      user = insert(:user, nickname: "Bob") +      user2 = insert(:user, nickname: "Rob", notification_settings: %{privacy_option: true}) + +      {:ok, activity} = +        CommonAPI.post(user, %{ +          "visibility" => "direct", +          "status" => "<Lorem ipsum dolor sit amet." +        }) + +      notif = insert(:notification, user: user2, activity: activity) + +      actor = User.get_cached_by_ap_id(notif.activity.data["actor"]) +      object = Object.normalize(activity) + +      assert Impl.build_content(notif, actor, object) == %{ +               body: "@Bob", +               title: "New Direct Message" +             } +    end + +    test "returns regular content for direct message with disabled privacy option" do +      user = insert(:user, nickname: "Bob") +      user2 = insert(:user, nickname: "Rob", notification_settings: %{privacy_option: false}) + +      {:ok, activity} = +        CommonAPI.post(user, %{ +          "visibility" => "direct", +          "status" => +            "<span>Lorem ipsum dolor sit amet</span>, consectetur :firefox: adipiscing elit. Fusce sagittis finibus turpis." +        }) + +      notif = insert(:notification, user: user2, activity: activity) + +      actor = User.get_cached_by_ap_id(notif.activity.data["actor"]) +      object = Object.normalize(activity) + +      assert Impl.build_content(notif, actor, object) == %{ +               body: +                 "@Bob: Lorem ipsum dolor sit amet, consectetur  adipiscing elit. Fusce sagittis fini...", +               title: "New Direct Message" +             } +    end +  end  end diff --git a/test/web/streamer/streamer_test.exs b/test/web/streamer/streamer_test.exs index 8265f18dd..8911c46b1 100644 --- a/test/web/streamer/streamer_test.exs +++ b/test/web/streamer/streamer_test.exs @@ -59,7 +59,7 @@ defmodule Pleroma.Web.StreamerTest do        user: user      } do        blocked = insert(:user) -      {:ok, user} = User.block(user, blocked) +      {:ok, _user_relationship} = User.block(user, blocked)        task = Task.async(fn -> refute_receive {:text, _}, 4_000 end) @@ -259,7 +259,7 @@ defmodule Pleroma.Web.StreamerTest do      test "it doesn't send messages involving blocked users" do        user = insert(:user)        blocked_user = insert(:user) -      {:ok, user} = User.block(user, blocked_user) +      {:ok, _user_relationship} = User.block(user, blocked_user)        task =          Task.async(fn -> @@ -301,7 +301,7 @@ defmodule Pleroma.Web.StreamerTest do          "public" => [fake_socket]        } -      {:ok, blocker} = User.block(blocker, blockee) +      {:ok, _user_relationship} = User.block(blocker, blockee)        {:ok, activity_one} = CommonAPI.post(friend, %{"status" => "hey! @#{blockee.nickname}"}) diff --git a/test/web/twitter_api/util_controller_test.exs b/test/web/twitter_api/util_controller_test.exs index f0211f59c..734cd2211 100644 --- a/test/web/twitter_api/util_controller_test.exs +++ b/test/web/twitter_api/util_controller_test.exs @@ -159,11 +159,31 @@ defmodule Pleroma.Web.TwitterAPI.UtilControllerTest do        user = Repo.get(User, user.id) -      assert %{ -               "followers" => false, -               "follows" => true, -               "non_follows" => true, -               "non_followers" => true +      assert %Pleroma.User.NotificationSetting{ +               followers: false, +               follows: true, +               non_follows: true, +               non_followers: true, +               privacy_option: false +             } == user.notification_settings +    end + +    test "it update notificatin privacy option", %{conn: conn} do +      user = insert(:user) + +      conn +      |> assign(:user, user) +      |> put("/api/pleroma/notification_settings", %{"privacy_option" => "1"}) +      |> json_response(:ok) + +      user = refresh_record(user) + +      assert %Pleroma.User.NotificationSetting{ +               followers: true, +               follows: true, +               non_follows: true, +               non_followers: true, +               privacy_option: true               } == user.notification_settings      end    end @@ -387,7 +407,7 @@ defmodule Pleroma.Web.TwitterAPI.UtilControllerTest do        user = insert(:user)        user2 = insert(:user) -      {:ok, _user} = Pleroma.User.block(user2, user) +      {:ok, _user_block} = Pleroma.User.block(user2, user)        response =          conn @@ -485,7 +505,7 @@ defmodule Pleroma.Web.TwitterAPI.UtilControllerTest do        Pleroma.Config.put([:user, :deny_follow_blocked], true)        user = insert(:user)        user2 = insert(:user) -      {:ok, _user} = Pleroma.User.block(user2, user) +      {:ok, _user_block} = Pleroma.User.block(user2, user)        response =          conn  | 
