diff options
Diffstat (limited to 'test/web/mastodon_api')
| -rw-r--r-- | test/web/mastodon_api/mastodon_api_controller_test.exs | 132 | ||||
| -rw-r--r-- | test/web/mastodon_api/search_controller_test.exs | 74 | 
2 files changed, 183 insertions, 23 deletions
| diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs index 8afb1497b..6ffa64dc8 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -593,7 +593,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do      conn =        conn        |> assign(:user, user) -      |> patch("/api/v1/accounts/update_avatar", %{img: avatar_image}) +      |> patch("/api/v1/pleroma/accounts/update_avatar", %{img: avatar_image})      user = refresh_record(user) @@ -618,7 +618,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do      conn =        conn        |> assign(:user, user) -      |> patch("/api/v1/accounts/update_avatar", %{img: ""}) +      |> patch("/api/v1/pleroma/accounts/update_avatar", %{img: ""})      user = User.get_cached_by_id(user.id) @@ -633,7 +633,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do      conn =        conn        |> assign(:user, user) -      |> patch("/api/v1/accounts/update_banner", %{"banner" => @image}) +      |> patch("/api/v1/pleroma/accounts/update_banner", %{"banner" => @image})      user = refresh_record(user)      assert user.info.banner["type"] == "Image" @@ -647,7 +647,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do      conn =        conn        |> assign(:user, user) -      |> patch("/api/v1/accounts/update_banner", %{"banner" => ""}) +      |> patch("/api/v1/pleroma/accounts/update_banner", %{"banner" => ""})      user = refresh_record(user)      assert user.info.banner == %{} @@ -661,7 +661,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do      conn =        conn        |> assign(:user, user) -      |> patch("/api/v1/accounts/update_background", %{"img" => @image}) +      |> patch("/api/v1/pleroma/accounts/update_background", %{"img" => @image})      user = refresh_record(user)      assert user.info.background["type"] == "Image" @@ -674,7 +674,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do      conn =        conn        |> assign(:user, user) -      |> patch("/api/v1/accounts/update_background", %{"img" => ""}) +      |> patch("/api/v1/pleroma/accounts/update_background", %{"img" => ""})      user = refresh_record(user)      assert user.info.background == %{} @@ -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/mastodon_api/search_controller_test.exs b/test/web/mastodon_api/search_controller_test.exs index ea534b393..9f50c09f4 100644 --- a/test/web/mastodon_api/search_controller_test.exs +++ b/test/web/mastodon_api/search_controller_test.exs @@ -22,7 +22,7 @@ defmodule Pleroma.Web.MastodonAPI.SearchControllerTest do      test "it returns empty result if user or status search return undefined error", %{conn: conn} do        with_mocks [          {Pleroma.User, [], [search: fn _q, _o -> raise "Oops" end]}, -        {Pleroma.Activity, [], [search: fn _u, _q -> raise "Oops" end]} +        {Pleroma.Activity, [], [search: fn _u, _q, _o -> raise "Oops" end]}        ] do          conn = get(conn, "/api/v2/search", %{"q" => "2hu"}) @@ -51,7 +51,6 @@ defmodule Pleroma.Web.MastodonAPI.SearchControllerTest do        conn = get(conn, "/api/v2/search", %{"q" => "2hu #private"})        assert results = json_response(conn, 200) -      # IO.inspect results        [account | _] = results["accounts"]        assert account["id"] == to_string(user_three.id) @@ -98,7 +97,7 @@ defmodule Pleroma.Web.MastodonAPI.SearchControllerTest do      test "it returns empty result if user or status search return undefined error", %{conn: conn} do        with_mocks [          {Pleroma.User, [], [search: fn _q, _o -> raise "Oops" end]}, -        {Pleroma.Activity, [], [search: fn _u, _q -> raise "Oops" end]} +        {Pleroma.Activity, [], [search: fn _u, _q, _o -> raise "Oops" end]}        ] do          conn =            conn @@ -195,5 +194,74 @@ defmodule Pleroma.Web.MastodonAPI.SearchControllerTest do        assert results = json_response(conn, 200)        assert [] == results["accounts"]      end + +    test "search with limit and offset", %{conn: conn} do +      user = insert(:user) +      _user_two = insert(:user, %{nickname: "shp@shitposter.club"}) +      _user_three = insert(:user, %{nickname: "shp@heldscal.la", name: "I love 2hu"}) + +      {:ok, _activity1} = CommonAPI.post(user, %{"status" => "This is about 2hu"}) +      {:ok, _activity2} = CommonAPI.post(user, %{"status" => "This is also about 2hu"}) + +      result = +        conn +        |> get("/api/v1/search", %{"q" => "2hu", "limit" => 1}) + +      assert results = json_response(result, 200) +      assert [%{"id" => activity_id1}] = results["statuses"] +      assert [_] = results["accounts"] + +      results = +        conn +        |> get("/api/v1/search", %{"q" => "2hu", "limit" => 1, "offset" => 1}) +        |> json_response(200) + +      assert [%{"id" => activity_id2}] = results["statuses"] +      assert [] = results["accounts"] + +      assert activity_id1 != activity_id2 +    end + +    test "search returns results only for the given type", %{conn: conn} do +      user = insert(:user) +      _user_two = insert(:user, %{nickname: "shp@heldscal.la", name: "I love 2hu"}) + +      {:ok, _activity} = CommonAPI.post(user, %{"status" => "This is about 2hu"}) + +      assert %{"statuses" => [_activity], "accounts" => [], "hashtags" => []} = +               conn +               |> get("/api/v1/search", %{"q" => "2hu", "type" => "statuses"}) +               |> json_response(200) + +      assert %{"statuses" => [], "accounts" => [_user_two], "hashtags" => []} = +               conn +               |> get("/api/v1/search", %{"q" => "2hu", "type" => "accounts"}) +               |> json_response(200) +    end + +    test "search uses account_id to filter statuses by the author", %{conn: conn} do +      user = insert(:user, %{nickname: "shp@shitposter.club"}) +      user_two = insert(:user, %{nickname: "shp@heldscal.la", name: "I love 2hu"}) + +      {:ok, activity1} = CommonAPI.post(user, %{"status" => "This is about 2hu"}) +      {:ok, activity2} = CommonAPI.post(user_two, %{"status" => "This is also about 2hu"}) + +      results = +        conn +        |> get("/api/v1/search", %{"q" => "2hu", "account_id" => user.id}) +        |> json_response(200) + +      assert [%{"id" => activity_id1}] = results["statuses"] +      assert activity_id1 == activity1.id +      assert [_] = results["accounts"] + +      results = +        conn +        |> get("/api/v1/search", %{"q" => "2hu", "account_id" => user_two.id}) +        |> json_response(200) + +      assert [%{"id" => activity_id2}] = results["statuses"] +      assert activity_id2 == activity2.id +    end    end  end | 
