diff options
Diffstat (limited to 'test')
3 files changed, 53 insertions, 0 deletions
| diff --git a/test/pleroma/web/activity_pub/activity_pub_test.exs b/test/pleroma/web/activity_pub/activity_pub_test.exs index fc6fc039d..a6f8b6152 100644 --- a/test/pleroma/web/activity_pub/activity_pub_test.exs +++ b/test/pleroma/web/activity_pub/activity_pub_test.exs @@ -1342,6 +1342,14 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do        %{test_file: test_file}      end +    test "strips / from filename", %{test_file: file} do +      file = %Plug.Upload{file | filename: "../../../../../nested/bad.jpg"} +      {:ok, %Object{} = object} = ActivityPub.upload(file) +      [%{"href" => href}] = object.data["url"] +      assert Regex.match?(~r"/bad.jpg$", href) +      refute Regex.match?(~r"/nested/", href) +    end +      test "sets a description if given", %{test_file: file} do        {:ok, %Object{} = object} = ActivityPub.upload(file, description: "a cool file")        assert object.data["name"] == "a cool file" diff --git a/test/pleroma/web/mastodon_api/controllers/media_controller_test.exs b/test/pleroma/web/mastodon_api/controllers/media_controller_test.exs index 79d52bb2f..750296230 100644 --- a/test/pleroma/web/mastodon_api/controllers/media_controller_test.exs +++ b/test/pleroma/web/mastodon_api/controllers/media_controller_test.exs @@ -122,6 +122,23 @@ defmodule Pleroma.Web.MastodonAPI.MediaControllerTest do        assert :ok == File.rm(Path.absname("test/tmp/large_binary.data"))      end + +    test "Do not allow nested filename", %{conn: conn, image: image} do +      image = %Plug.Upload{ +        image +        | filename: "../../../../../nested/file.jpg" +      } + +      desc = "Description of the image" + +      media = +        conn +        |> put_req_header("content-type", "multipart/form-data") +        |> post("/api/v1/media", %{"file" => image, "description" => desc}) +        |> json_response_and_validate_schema(:ok) + +      refute Regex.match?(~r"/nested/", media["url"]) +    end    end    describe "Update media description" do diff --git a/test/pleroma/web/mastodon_api/update_credentials_test.exs b/test/pleroma/web/mastodon_api/update_credentials_test.exs index d4004bcb6..6c63d53c2 100644 --- a/test/pleroma/web/mastodon_api/update_credentials_test.exs +++ b/test/pleroma/web/mastodon_api/update_credentials_test.exs @@ -385,6 +385,34 @@ defmodule Pleroma.Web.MastodonAPI.UpdateCredentialsTest do        assert :ok == File.rm(Path.absname("test/tmp/large_binary.data"))      end +    test "Strip / from upload files", %{user: user, conn: conn} do +      new_image = %Plug.Upload{ +        content_type: "image/jpeg", +        path: Path.absname("test/fixtures/image.jpg"), +        filename: "../../../../nested/an_image.jpg" +      } + +      assert user.avatar == %{} + +      res = +        patch(conn, "/api/v1/accounts/update_credentials", %{ +          "avatar" => new_image, +          "header" => new_image, +          "pleroma_background_image" => new_image +        }) + +      assert user_response = json_response_and_validate_schema(res, 200) +      assert user_response["avatar"] +      assert user_response["header"] +      assert user_response["pleroma"]["background_image"] +      refute Regex.match?(~r"/nested/", user_response["avatar"]) +      refute Regex.match?(~r"/nested/", user_response["header"]) +      refute Regex.match?(~r"/nested/", user_response["pleroma"]["background_image"]) + +      user = User.get_by_id(user.id) +      refute user.avatar == %{} +    end +      test "requires 'write:accounts' permission" do        token1 = insert(:oauth_token, scopes: ["read"])        token2 = insert(:oauth_token, scopes: ["write", "follow"]) | 
