diff options
Diffstat (limited to 'test/web')
| -rw-r--r-- | test/web/mastodon_api/mastodon_api_controller_test.exs | 120 | ||||
| -rw-r--r-- | test/web/twitter_api/twitter_api_controller_test.exs | 32 | 
2 files changed, 138 insertions, 14 deletions
diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs index b7c050dbf..6ffa64dc8 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -1274,6 +1274,71 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do        result = json_response(conn_res, 200)        assert [%{"id" => ^notification4_id}, %{"id" => ^notification3_id}] = result      end + +    test "doesn't see notifications after muting user with notifications", %{conn: conn} do +      user = insert(:user) +      user2 = insert(:user) + +      {:ok, _, _, _} = CommonAPI.follow(user, user2) +      {:ok, _} = CommonAPI.post(user2, %{"status" => "hey @#{user.nickname}"}) + +      conn = assign(conn, :user, user) + +      conn = get(conn, "/api/v1/notifications") + +      assert length(json_response(conn, 200)) == 1 + +      {:ok, user} = User.mute(user, user2) + +      conn = assign(build_conn(), :user, user) +      conn = get(conn, "/api/v1/notifications") + +      assert json_response(conn, 200) == [] +    end + +    test "see notifications after muting user without notifications", %{conn: conn} do +      user = insert(:user) +      user2 = insert(:user) + +      {:ok, _, _, _} = CommonAPI.follow(user, user2) +      {:ok, _} = CommonAPI.post(user2, %{"status" => "hey @#{user.nickname}"}) + +      conn = assign(conn, :user, user) + +      conn = get(conn, "/api/v1/notifications") + +      assert length(json_response(conn, 200)) == 1 + +      {:ok, user} = User.mute(user, user2, false) + +      conn = assign(build_conn(), :user, user) +      conn = get(conn, "/api/v1/notifications") + +      assert length(json_response(conn, 200)) == 1 +    end + +    test "see notifications after muting user with notifications and with_muted parameter", %{ +      conn: conn +    } do +      user = insert(:user) +      user2 = insert(:user) + +      {:ok, _, _, _} = CommonAPI.follow(user, user2) +      {:ok, _} = CommonAPI.post(user2, %{"status" => "hey @#{user.nickname}"}) + +      conn = assign(conn, :user, user) + +      conn = get(conn, "/api/v1/notifications") + +      assert length(json_response(conn, 200)) == 1 + +      {:ok, user} = User.mute(user, user2) + +      conn = assign(build_conn(), :user, user) +      conn = get(conn, "/api/v1/notifications", %{"with_muted" => "true"}) + +      assert length(json_response(conn, 200)) == 1 +    end    end    describe "reblogging" do @@ -2105,25 +2170,52 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do      assert %{"error" => "Record not found"} = json_response(conn_res, 404)    end -  test "muting / unmuting a user", %{conn: conn} do -    user = insert(:user) -    other_user = insert(:user) +  describe "mute/unmute" do +    test "with notifications", %{conn: conn} do +      user = insert(:user) +      other_user = insert(:user) -    conn = -      conn -      |> assign(:user, user) -      |> post("/api/v1/accounts/#{other_user.id}/mute") +      conn = +        conn +        |> assign(:user, user) +        |> post("/api/v1/accounts/#{other_user.id}/mute") -    assert %{"id" => _id, "muting" => true} = json_response(conn, 200) +      response = json_response(conn, 200) -    user = User.get_cached_by_id(user.id) +      assert %{"id" => _id, "muting" => true, "muting_notifications" => true} = response +      user = User.get_cached_by_id(user.id) -    conn = -      build_conn() -      |> assign(:user, user) -      |> post("/api/v1/accounts/#{other_user.id}/unmute") +      conn = +        build_conn() +        |> assign(:user, user) +        |> post("/api/v1/accounts/#{other_user.id}/unmute") -    assert %{"id" => _id, "muting" => false} = json_response(conn, 200) +      response = json_response(conn, 200) +      assert %{"id" => _id, "muting" => false, "muting_notifications" => false} = response +    end + +    test "without notifications", %{conn: conn} do +      user = insert(:user) +      other_user = insert(:user) + +      conn = +        conn +        |> assign(:user, user) +        |> post("/api/v1/accounts/#{other_user.id}/mute", %{"notifications" => "false"}) + +      response = json_response(conn, 200) + +      assert %{"id" => _id, "muting" => true, "muting_notifications" => false} = response +      user = User.get_cached_by_id(user.id) + +      conn = +        build_conn() +        |> assign(:user, user) +        |> post("/api/v1/accounts/#{other_user.id}/unmute") + +      response = json_response(conn, 200) +      assert %{"id" => _id, "muting" => false, "muting_notifications" => false} = response +    end    end    test "subscribing / unsubscribing to a user", %{conn: conn} do diff --git a/test/web/twitter_api/twitter_api_controller_test.exs b/test/web/twitter_api/twitter_api_controller_test.exs index 7ec0e101d..de6177575 100644 --- a/test/web/twitter_api/twitter_api_controller_test.exs +++ b/test/web/twitter_api/twitter_api_controller_test.exs @@ -521,6 +521,38 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do                   for: current_user                 })      end + +    test "muted user", %{conn: conn, user: current_user} do +      other_user = insert(:user) + +      {:ok, current_user} = User.mute(current_user, other_user) + +      {:ok, _activity} = +        ActivityBuilder.insert(%{"to" => [current_user.ap_id]}, %{user: other_user}) + +      conn = +        conn +        |> with_credentials(current_user.nickname, "test") +        |> get("/api/qvitter/statuses/notifications.json") + +      assert json_response(conn, 200) == [] +    end + +    test "muted user with with_muted parameter", %{conn: conn, user: current_user} do +      other_user = insert(:user) + +      {:ok, current_user} = User.mute(current_user, other_user) + +      {:ok, _activity} = +        ActivityBuilder.insert(%{"to" => [current_user.ap_id]}, %{user: other_user}) + +      conn = +        conn +        |> with_credentials(current_user.nickname, "test") +        |> get("/api/qvitter/statuses/notifications.json", %{"with_muted" => "true"}) + +      assert length(json_response(conn, 200)) == 1 +    end    end    describe "POST /api/qvitter/statuses/notifications/read" do  | 
