diff options
Diffstat (limited to 'test/web')
4 files changed, 132 insertions, 81 deletions
| diff --git a/test/web/activity_pub/activity_pub_controller_test.exs b/test/web/activity_pub/activity_pub_controller_test.exs index ab52044ae..1ffa91b70 100644 --- a/test/web/activity_pub/activity_pub_controller_test.exs +++ b/test/web/activity_pub/activity_pub_controller_test.exs @@ -976,4 +976,44 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do        assert Delivery.get(object.id, other_user.id)      end    end + +  describe "Additionnal ActivityPub C2S endpoints" do +    test "/api/ap/whoami", %{conn: conn} do +      user = insert(:user) + +      conn = +        conn +        |> assign(:user, user) +        |> get("/api/ap/whoami") + +      user = User.get_cached_by_id(user.id) + +      assert UserView.render("user.json", %{user: user}) == json_response(conn, 200) +    end + +    clear_config([:media_proxy]) +    clear_config([Pleroma.Upload]) + +    test "uploadMedia", %{conn: conn} do +      user = insert(:user) + +      desc = "Description of the image" + +      image = %Plug.Upload{ +        content_type: "image/jpg", +        path: Path.absname("test/fixtures/image.jpg"), +        filename: "an_image.jpg" +      } + +      conn = +        conn +        |> assign(:user, user) +        |> post("/api/ap/upload_media", %{"file" => image, "description" => desc}) + +      assert object = json_response(conn, :created) +      assert object["name"] == desc +      assert object["type"] == "Document" +      assert object["actor"] == user.ap_id +    end +  end  end diff --git a/test/web/mastodon_api/controllers/report_controller_test.exs b/test/web/mastodon_api/controllers/report_controller_test.exs new file mode 100644 index 000000000..979ca48f3 --- /dev/null +++ b/test/web/mastodon_api/controllers/report_controller_test.exs @@ -0,0 +1,88 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.MastodonAPI.ReportControllerTest do +  use Pleroma.Web.ConnCase + +  alias Pleroma.Web.CommonAPI + +  import Pleroma.Factory + +  setup do +    reporter = insert(:user) +    target_user = insert(:user) + +    {:ok, activity} = CommonAPI.post(target_user, %{"status" => "foobar"}) + +    [reporter: reporter, target_user: target_user, activity: activity] +  end + +  test "submit a basic report", %{conn: conn, reporter: reporter, target_user: target_user} do +    assert %{"action_taken" => false, "id" => _} = +             conn +             |> assign(:user, reporter) +             |> post("/api/v1/reports", %{"account_id" => target_user.id}) +             |> json_response(200) +  end + +  test "submit a report with statuses and comment", %{ +    conn: conn, +    reporter: reporter, +    target_user: target_user, +    activity: activity +  } do +    assert %{"action_taken" => false, "id" => _} = +             conn +             |> assign(:user, reporter) +             |> post("/api/v1/reports", %{ +               "account_id" => target_user.id, +               "status_ids" => [activity.id], +               "comment" => "bad status!", +               "forward" => "false" +             }) +             |> json_response(200) +  end + +  test "account_id is required", %{ +    conn: conn, +    reporter: reporter, +    activity: activity +  } do +    assert %{"error" => "Valid `account_id` required"} = +             conn +             |> assign(:user, reporter) +             |> post("/api/v1/reports", %{"status_ids" => [activity.id]}) +             |> json_response(400) +  end + +  test "comment must be up to the size specified in the config", %{ +    conn: conn, +    reporter: reporter, +    target_user: target_user +  } do +    max_size = Pleroma.Config.get([:instance, :max_report_comment_size], 1000) +    comment = String.pad_trailing("a", max_size + 1, "a") + +    error = %{"error" => "Comment must be up to #{max_size} characters"} + +    assert ^error = +             conn +             |> assign(:user, reporter) +             |> post("/api/v1/reports", %{"account_id" => target_user.id, "comment" => comment}) +             |> json_response(400) +  end + +  test "returns error when account is not exist", %{ +    conn: conn, +    reporter: reporter, +    activity: activity +  } do +    conn = +      conn +      |> assign(:user, reporter) +      |> post("/api/v1/reports", %{"status_ids" => [activity.id], "account_id" => "foo"}) + +    assert json_response(conn, 400) == %{"error" => "Account not found"} +  end +end diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs index 8080d3941..46b035770 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -1317,85 +1317,6 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do      end    end -  describe "reports" do -    setup do -      reporter = insert(:user) -      target_user = insert(:user) - -      {:ok, activity} = CommonAPI.post(target_user, %{"status" => "foobar"}) - -      [reporter: reporter, target_user: target_user, activity: activity] -    end - -    test "submit a basic report", %{conn: conn, reporter: reporter, target_user: target_user} do -      assert %{"action_taken" => false, "id" => _} = -               conn -               |> assign(:user, reporter) -               |> post("/api/v1/reports", %{"account_id" => target_user.id}) -               |> json_response(200) -    end - -    test "submit a report with statuses and comment", %{ -      conn: conn, -      reporter: reporter, -      target_user: target_user, -      activity: activity -    } do -      assert %{"action_taken" => false, "id" => _} = -               conn -               |> assign(:user, reporter) -               |> post("/api/v1/reports", %{ -                 "account_id" => target_user.id, -                 "status_ids" => [activity.id], -                 "comment" => "bad status!", -                 "forward" => "false" -               }) -               |> json_response(200) -    end - -    test "account_id is required", %{ -      conn: conn, -      reporter: reporter, -      activity: activity -    } do -      assert %{"error" => "Valid `account_id` required"} = -               conn -               |> assign(:user, reporter) -               |> post("/api/v1/reports", %{"status_ids" => [activity.id]}) -               |> json_response(400) -    end - -    test "comment must be up to the size specified in the config", %{ -      conn: conn, -      reporter: reporter, -      target_user: target_user -    } do -      max_size = Config.get([:instance, :max_report_comment_size], 1000) -      comment = String.pad_trailing("a", max_size + 1, "a") - -      error = %{"error" => "Comment must be up to #{max_size} characters"} - -      assert ^error = -               conn -               |> assign(:user, reporter) -               |> post("/api/v1/reports", %{"account_id" => target_user.id, "comment" => comment}) -               |> json_response(400) -    end - -    test "returns error when account is not exist", %{ -      conn: conn, -      reporter: reporter, -      activity: activity -    } do -      conn = -        conn -        |> assign(:user, reporter) -        |> post("/api/v1/reports", %{"status_ids" => [activity.id], "account_id" => "foo"}) - -      assert json_response(conn, 400) == %{"error" => "Account not found"} -    end -  end -    describe "link headers" do      test "preserves parameters in link headers", %{conn: conn} do        user = insert(:user) diff --git a/test/web/ostatus/ostatus_controller_test.exs b/test/web/ostatus/ostatus_controller_test.exs index 2b40fb47e..f06023dff 100644 --- a/test/web/ostatus/ostatus_controller_test.exs +++ b/test/web/ostatus/ostatus_controller_test.exs @@ -396,7 +396,8 @@ defmodule Pleroma.Web.OStatus.OStatusControllerTest do                 "oauthAuthorizationEndpoint" => "#{Pleroma.Web.base_url()}/oauth/authorize",                 "oauthRegistrationEndpoint" => "#{Pleroma.Web.base_url()}/api/v1/apps",                 "oauthTokenEndpoint" => "#{Pleroma.Web.base_url()}/oauth/token", -               "sharedInbox" => "#{Pleroma.Web.base_url()}/inbox" +               "sharedInbox" => "#{Pleroma.Web.base_url()}/inbox", +               "uploadMedia" => "#{Pleroma.Web.base_url()}/api/ap/upload_media"               }        assert response["@context"] == [ @@ -458,7 +459,8 @@ defmodule Pleroma.Web.OStatus.OStatusControllerTest do                 "oauthAuthorizationEndpoint" => "#{Pleroma.Web.base_url()}/oauth/authorize",                 "oauthRegistrationEndpoint" => "#{Pleroma.Web.base_url()}/api/v1/apps",                 "oauthTokenEndpoint" => "#{Pleroma.Web.base_url()}/oauth/token", -               "sharedInbox" => "#{Pleroma.Web.base_url()}/inbox" +               "sharedInbox" => "#{Pleroma.Web.base_url()}/inbox", +               "uploadMedia" => "#{Pleroma.Web.base_url()}/api/ap/upload_media"               }        assert response["@context"] == [ | 
