diff options
Diffstat (limited to 'test/uploaders')
| -rw-r--r-- | test/uploaders/local_test.exs | 32 | ||||
| -rw-r--r-- | test/uploaders/mdii_test.exs | 50 | ||||
| -rw-r--r-- | test/uploaders/s3_test.exs | 82 | 
3 files changed, 164 insertions, 0 deletions
diff --git a/test/uploaders/local_test.exs b/test/uploaders/local_test.exs new file mode 100644 index 000000000..fc442d0f1 --- /dev/null +++ b/test/uploaders/local_test.exs @@ -0,0 +1,32 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Uploaders.LocalTest do +  use Pleroma.DataCase +  alias Pleroma.Uploaders.Local + +  describe "get_file/1" do +    test "it returns path to local folder for files" do +      assert Local.get_file("") == {:ok, {:static_dir, "test/uploads"}} +    end +  end + +  describe "put_file/1" do +    test "put file to local folder" do +      file_path = "local_upload/files/image.jpg" + +      file = %Pleroma.Upload{ +        name: "image.jpg", +        content_type: "image/jpg", +        path: file_path, +        tempfile: Path.absname("test/fixtures/image_tmp.jpg") +      } + +      assert Local.put_file(file) == :ok + +      assert Path.join([Local.upload_path(), file_path]) +             |> File.exists?() +    end +  end +end diff --git a/test/uploaders/mdii_test.exs b/test/uploaders/mdii_test.exs new file mode 100644 index 000000000..d432d40f0 --- /dev/null +++ b/test/uploaders/mdii_test.exs @@ -0,0 +1,50 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Uploaders.MDIITest do +  use Pleroma.DataCase +  alias Pleroma.Uploaders.MDII +  import Tesla.Mock + +  describe "get_file/1" do +    test "it returns path to local folder for files" do +      assert MDII.get_file("") == {:ok, {:static_dir, "test/uploads"}} +    end +  end + +  describe "put_file/1" do +    setup do +      file_upload = %Pleroma.Upload{ +        name: "mdii-image.jpg", +        content_type: "image/jpg", +        path: "test_folder/mdii-image.jpg", +        tempfile: Path.absname("test/fixtures/image_tmp.jpg") +      } + +      [file_upload: file_upload] +    end + +    test "save file", %{file_upload: file_upload} do +      mock(fn +        %{method: :post, url: "https://mdii.sakura.ne.jp/mdii-post.cgi?jpg"} -> +          %Tesla.Env{status: 200, body: "mdii-image"} +      end) + +      assert MDII.put_file(file_upload) == +               {:ok, {:url, "https://mdii.sakura.ne.jp/mdii-image.jpg"}} +    end + +    test "save file to local if MDII  isn`t available", %{file_upload: file_upload} do +      mock(fn +        %{method: :post, url: "https://mdii.sakura.ne.jp/mdii-post.cgi?jpg"} -> +          %Tesla.Env{status: 500} +      end) + +      assert MDII.put_file(file_upload) == :ok + +      assert Path.join([Pleroma.Uploaders.Local.upload_path(), file_upload.path]) +             |> File.exists?() +    end +  end +end diff --git a/test/uploaders/s3_test.exs b/test/uploaders/s3_test.exs new file mode 100644 index 000000000..171316340 --- /dev/null +++ b/test/uploaders/s3_test.exs @@ -0,0 +1,82 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Uploaders.S3Test do +  use Pleroma.DataCase + +  alias Pleroma.Config +  alias Pleroma.Uploaders.S3 + +  import Mock +  import ExUnit.CaptureLog + +  clear_config([Pleroma.Uploaders.S3]) do +    Config.put([Pleroma.Uploaders.S3], +      bucket: "test_bucket", +      public_endpoint: "https://s3.amazonaws.com" +    ) +  end + +  describe "get_file/1" do +    test "it returns path to local folder for files" do +      assert S3.get_file("test_image.jpg") == { +               :ok, +               {:url, "https://s3.amazonaws.com/test_bucket/test_image.jpg"} +             } +    end + +    test "it returns path without bucket when truncated_namespace set to ''" do +      Config.put([Pleroma.Uploaders.S3], +        bucket: "test_bucket", +        public_endpoint: "https://s3.amazonaws.com", +        truncated_namespace: "" +      ) + +      assert S3.get_file("test_image.jpg") == { +               :ok, +               {:url, "https://s3.amazonaws.com/test_image.jpg"} +             } +    end + +    test "it returns path with bucket namespace when namespace is set" do +      Config.put([Pleroma.Uploaders.S3], +        bucket: "test_bucket", +        public_endpoint: "https://s3.amazonaws.com", +        bucket_namespace: "family" +      ) + +      assert S3.get_file("test_image.jpg") == { +               :ok, +               {:url, "https://s3.amazonaws.com/family:test_bucket/test_image.jpg"} +             } +    end +  end + +  describe "put_file/1" do +    setup do +      file_upload = %Pleroma.Upload{ +        name: "image-tet.jpg", +        content_type: "image/jpg", +        path: "test_folder/image-tet.jpg", +        tempfile: Path.absname("test/fixtures/image_tmp.jpg") +      } + +      [file_upload: file_upload] +    end + +    test "save file", %{file_upload: file_upload} do +      with_mock ExAws, request: fn _ -> {:ok, :ok} end do +        assert S3.put_file(file_upload) == {:ok, {:file, "test_folder/image-tet.jpg"}} +      end +    end + +    test "returns error", %{file_upload: file_upload} do +      with_mock ExAws, request: fn _ -> {:error, "S3 Upload failed"} end do +        assert capture_log(fn -> +                 assert S3.put_file(file_upload) == {:error, "S3 Upload failed"} +               end) =~ "Elixir.Pleroma.Uploaders.S3: {:error, \"S3 Upload failed\"}" +      end +    end +  end +end  | 
