summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/pleroma/uploaders/ipfs_test.exs68
1 files changed, 48 insertions, 20 deletions
diff --git a/test/pleroma/uploaders/ipfs_test.exs b/test/pleroma/uploaders/ipfs_test.exs
index 853d185e5..cf325b54f 100644
--- a/test/pleroma/uploaders/ipfs_test.exs
+++ b/test/pleroma/uploaders/ipfs_test.exs
@@ -8,22 +8,22 @@ defmodule Pleroma.Uploaders.IPFSTest do
alias Pleroma.Uploaders.IPFS
alias Tesla.Multipart
- import Mock
import ExUnit.CaptureLog
+ import Mock
+ import Mox
- setup do
- clear_config([Pleroma.Upload, :uploader], Pleroma.Uploaders.IPFS)
- clear_config([Pleroma.Uploaders.IPFS])
+ alias Pleroma.UnstubbedConfigMock, as: Config
- clear_config(
- [Pleroma.Uploaders.IPFS, :get_gateway_url],
- "https://{CID}.ipfs.mydomain.com"
- )
+ describe "get_final_url" do
+ setup do
+ Config
+ |> expect(:get, fn [Pleroma.Uploaders.IPFS] ->
+ [post_gateway_url: "http://localhost:5001"]
+ end)
- clear_config([Pleroma.Uploaders.IPFS, :post_gateway_url], "http://localhost:5001")
- end
+ :ok
+ end
- describe "get_final_url" do
test "it returns the final url for put_file" do
assert IPFS.put_file_endpoint() == "http://localhost:5001/api/v0/add"
end
@@ -34,7 +34,21 @@ defmodule Pleroma.Uploaders.IPFSTest do
end
describe "get_file/1" do
+ setup do
+ Config
+ |> expect(:get, fn [Pleroma.Upload, :uploader] -> Pleroma.Uploaders.IPFS end)
+ |> expect(:get, fn [Pleroma.Upload, :base_url] -> nil end)
+ |> expect(:get, fn [Pleroma.Uploaders.IPFS, :public_endpoint] -> nil end)
+
+ :ok
+ end
+
test "it returns path to ipfs file with cid as subdomain" do
+ Config
+ |> expect(:get, fn [Pleroma.Uploaders.IPFS, :get_gateway_url] ->
+ "https://{CID}.ipfs.mydomain.com"
+ end)
+
assert IPFS.get_file("testcid") == {
:ok,
{:url, "https://testcid.ipfs.mydomain.com"}
@@ -42,10 +56,10 @@ defmodule Pleroma.Uploaders.IPFSTest do
end
test "it returns path to ipfs file with cid as path" do
- clear_config(
- [Pleroma.Uploaders.IPFS, :get_gateway_url],
+ Config
+ |> expect(:get, fn [Pleroma.Uploaders.IPFS, :get_gateway_url] ->
"https://ipfs.mydomain.com/ipfs/{CID}"
- )
+ end)
assert IPFS.get_file("testcid") == {
:ok,
@@ -56,6 +70,11 @@ defmodule Pleroma.Uploaders.IPFSTest do
describe "put_file/1" do
setup do
+ Config
+ |> expect(:get, fn [Pleroma.Uploaders.IPFS] ->
+ [post_gateway_url: "http://localhost:5001"]
+ end)
+
file_upload = %Pleroma.Upload{
name: "image-tet.jpg",
content_type: "image/jpeg",
@@ -73,7 +92,7 @@ defmodule Pleroma.Uploaders.IPFSTest do
test "save file", %{file_upload: file_upload} do
with_mock Pleroma.HTTP,
- post: fn "http://localhost:5001/api/v0/add", mp, [], params: ["cid-version": "1"] ->
+ post: fn "http://localhost:5001/api/v0/add", _mp, [], params: ["cid-version": "1"] ->
{:ok,
%Tesla.Env{
status: 200,
@@ -88,7 +107,7 @@ defmodule Pleroma.Uploaders.IPFSTest do
test "returns error", %{file_upload: file_upload} do
with_mock Pleroma.HTTP,
- post: fn "http://localhost:5001/api/v0/add", mp, [], params: ["cid-version": "1"] ->
+ post: fn "http://localhost:5001/api/v0/add", _mp, [], params: ["cid-version": "1"] ->
{:error, "IPFS Gateway upload failed"}
end do
assert capture_log(fn ->
@@ -99,19 +118,19 @@ defmodule Pleroma.Uploaders.IPFSTest do
test "returns error if JSON decode fails", %{file_upload: file_upload} do
with_mock Pleroma.HTTP, [],
- post: fn "http://localhost:5001/api/v0/add", mp, [], params: ["cid-version": "1"] ->
+ post: fn "http://localhost:5001/api/v0/add", _mp, [], params: ["cid-version": "1"] ->
{:ok, %Tesla.Env{status: 200, body: "invalid"}}
end do
assert capture_log(fn ->
assert IPFS.put_file(file_upload) == {:error, "JSON decode failed"}
end) =~
- "Elixir.Pleroma.Uploaders.IPFS: {:error, %Jason.DecodeError{data: \"invalid\", position: 0, token: nil}}"
+ "Elixir.Pleroma.Uploaders.IPFS: {:error, %Jason.DecodeError"
end
end
test "returns error if JSON body doesn't contain Hash key", %{file_upload: file_upload} do
with_mock Pleroma.HTTP, [],
- post: fn "http://localhost:5001/api/v0/add", mp, [], params: ["cid-version": "1"] ->
+ post: fn "http://localhost:5001/api/v0/add", _mp, [], params: ["cid-version": "1"] ->
{:ok, %Tesla.Env{status: 200, body: "{\"key\": \"value\"}"}}
end do
assert IPFS.put_file(file_upload) == {:error, "JSON doesn't contain Hash key"}
@@ -120,9 +139,18 @@ defmodule Pleroma.Uploaders.IPFSTest do
end
describe "delete_file/1" do
+ setup do
+ Config
+ |> expect(:get, fn [Pleroma.Uploaders.IPFS] ->
+ [post_gateway_url: "http://localhost:5001"]
+ end)
+
+ :ok
+ end
+
test_with_mock "deletes file", Pleroma.HTTP,
post: fn "http://localhost:5001/api/v0/files/rm", "", [], params: [arg: "image.jpg"] ->
- {:ok, %{status_code: 204}}
+ {:ok, %{status: 204}}
end do
assert :ok = IPFS.delete_file("image.jpg")
end