diff options
Diffstat (limited to 'test/web/mastodon_api')
| -rw-r--r-- | test/web/mastodon_api/mastodon_api_controller_test.exs | 73 | 
1 files changed, 64 insertions, 9 deletions
diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs index f4902d043..fb04748bb 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -13,6 +13,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do    alias Pleroma.Object    alias Pleroma.Repo    alias Pleroma.ScheduledActivity +  alias Pleroma.Tests.ObanHelpers    alias Pleroma.User    alias Pleroma.Web.ActivityPub.ActivityPub    alias Pleroma.Web.CommonAPI @@ -751,7 +752,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do      query_string = "ids[]=#{id1}&ids[]=#{id2}"      conn = get(conn, "/api/v1/statuses/?#{query_string}") -    assert [%{"id" => ^id1}, %{"id" => ^id2}] = json_response(conn, :ok) +    assert [%{"id" => ^id1}, %{"id" => ^id2}] = Enum.sort_by(json_response(conn, :ok), & &1["id"])    end    describe "deleting a status" do @@ -3698,7 +3699,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do          build_conn()          |> assign(:user, user) -      [conn: conn, activity: activity] +      [conn: conn, activity: activity, user: user]      end      test "returns users who have favorited the status", %{conn: conn, activity: activity} do @@ -3758,6 +3759,32 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do        [%{"id" => id}] = response        assert id == other_user.id      end + +    test "requires authentification for private posts", %{conn: conn, user: user} do +      other_user = insert(:user) + +      {:ok, activity} = +        CommonAPI.post(user, %{ +          "status" => "@#{other_user.nickname} wanna get some #cofe together?", +          "visibility" => "direct" +        }) + +      {:ok, _, _} = CommonAPI.favorite(activity.id, other_user) + +      conn +      |> assign(:user, nil) +      |> get("/api/v1/statuses/#{activity.id}/favourited_by") +      |> json_response(404) + +      response = +        build_conn() +        |> assign(:user, other_user) +        |> get("/api/v1/statuses/#{activity.id}/favourited_by") +        |> json_response(200) + +      [%{"id" => id}] = response +      assert id == other_user.id +    end    end    describe "GET /api/v1/statuses/:id/reblogged_by" do @@ -3769,7 +3796,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do          build_conn()          |> assign(:user, user) -      [conn: conn, activity: activity] +      [conn: conn, activity: activity, user: user]      end      test "returns users who have reblogged the status", %{conn: conn, activity: activity} do @@ -3829,6 +3856,29 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do        [%{"id" => id}] = response        assert id == other_user.id      end + +    test "requires authentification for private posts", %{conn: conn, user: user} do +      other_user = insert(:user) + +      {:ok, activity} = +        CommonAPI.post(user, %{ +          "status" => "@#{other_user.nickname} wanna get some #cofe together?", +          "visibility" => "direct" +        }) + +      conn +      |> assign(:user, nil) +      |> get("/api/v1/statuses/#{activity.id}/reblogged_by") +      |> json_response(404) + +      response = +        build_conn() +        |> assign(:user, other_user) +        |> get("/api/v1/statuses/#{activity.id}/reblogged_by") +        |> json_response(200) + +      assert [] == response +    end    end    describe "POST /auth/password, with valid parameters" do @@ -3848,6 +3898,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do      end      test "it sends an email to user", %{user: user} do +      ObanHelpers.perform_all()        token_record = Repo.get_by(Pleroma.PasswordResetToken, user_id: user.id)        email = Pleroma.Emails.UserEmail.password_reset_email(user, token_record.token) @@ -3908,6 +3959,8 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do        |> post("/api/v1/pleroma/accounts/confirmation_resend?email=#{user.email}")        |> json_response(:no_content) +      ObanHelpers.perform_all() +        email = Pleroma.Emails.UserEmail.account_confirmation_email(user)        notify_email = Config.get([:instance, :notify_email])        instance_name = Config.get([:instance, :name]) @@ -3963,13 +4016,15 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do        Config.put([:suggestions, :enabled], true)        Config.put([:suggestions, :third_party_engine], "http://test500?{{host}}&{{user}}") -      res = -        conn -        |> assign(:user, user) -        |> get("/api/v1/suggestions") -        |> json_response(500) +      assert capture_log(fn -> +               res = +                 conn +                 |> assign(:user, user) +                 |> get("/api/v1/suggestions") +                 |> json_response(500) -      assert res == "Something went wrong" +               assert res == "Something went wrong" +             end) =~ "Could not retrieve suggestions"      end      test "returns suggestions", %{conn: conn, user: user, other_user: other_user} do  | 
