aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/http/adapter_helper/gun_test.exs2
-rw-r--r--test/http/connection_test.exs2
-rw-r--r--test/http_test.exs4
-rw-r--r--test/pool/connections_test.exs7
-rw-r--r--test/reverse_proxy/client/tesla_test.exs4
-rw-r--r--test/reverse_proxy/reverse_proxy_test.exs4
-rw-r--r--test/support/gun_mock.ex155
7 files changed, 166 insertions, 12 deletions
diff --git a/test/http/adapter_helper/gun_test.exs b/test/http/adapter_helper/gun_test.exs
index bc7e3f0e0..66ca416d9 100644
--- a/test/http/adapter_helper/gun_test.exs
+++ b/test/http/adapter_helper/gun_test.exs
@@ -12,7 +12,7 @@ defmodule Pleroma.HTTP.AdapterHelper.GunTest do
alias Pleroma.Pool.Connections
setup_all do
- {:ok, _} = Registry.start_link(keys: :unique, name: Pleroma.Gun.API.Mock)
+ {:ok, _} = Registry.start_link(keys: :unique, name: Pleroma.GunMock)
:ok
end
diff --git a/test/http/connection_test.exs b/test/http/connection_test.exs
index 37de11e7a..3f32898cb 100644
--- a/test/http/connection_test.exs
+++ b/test/http/connection_test.exs
@@ -10,7 +10,7 @@ defmodule Pleroma.HTTP.ConnectionTest do
alias Pleroma.HTTP.Connection
setup_all do
- {:ok, _} = Registry.start_link(keys: :unique, name: Pleroma.Gun.API.Mock)
+ {:ok, _} = Registry.start_link(keys: :unique, name: Pleroma.GunMock)
:ok
end
diff --git a/test/http_test.exs b/test/http_test.exs
index 83c27f6e1..d45d34f32 100644
--- a/test/http_test.exs
+++ b/test/http_test.exs
@@ -61,8 +61,8 @@ defmodule Pleroma.HTTPTest do
describe "connection pools" do
@describetag :integration
- clear_config(Pleroma.Gun.API) do
- Pleroma.Config.put(Pleroma.Gun.API, Pleroma.Gun)
+ clear_config(Pleroma.Gun) do
+ Pleroma.Config.put(Pleroma.Gun, Pleroma.Gun.API)
end
test "gun" do
diff --git a/test/pool/connections_test.exs b/test/pool/connections_test.exs
index a084f31b9..31dd5f6fa 100644
--- a/test/pool/connections_test.exs
+++ b/test/pool/connections_test.exs
@@ -6,12 +6,11 @@ defmodule Pleroma.Pool.ConnectionsTest do
use ExUnit.Case
use Pleroma.Tests.Helpers
import ExUnit.CaptureLog
- alias Pleroma.Gun.API
alias Pleroma.Gun.Conn
alias Pleroma.Pool.Connections
setup_all do
- {:ok, _} = Registry.start_link(keys: :unique, name: API.Mock)
+ {:ok, _} = Registry.start_link(keys: :unique, name: Pleroma.GunMock)
:ok
end
@@ -439,8 +438,8 @@ defmodule Pleroma.Pool.ConnectionsTest do
describe "integration test" do
@describetag :integration
- clear_config(API) do
- Pleroma.Config.put(API, Pleroma.Gun)
+ clear_config(Pleroma.Gun) do
+ Pleroma.Config.put(Pleroma.Gun, Pleroma.Gun.API)
end
test "opens connection and change owner", %{name: name} do
diff --git a/test/reverse_proxy/client/tesla_test.exs b/test/reverse_proxy/client/tesla_test.exs
index 231271b0d..78bd31530 100644
--- a/test/reverse_proxy/client/tesla_test.exs
+++ b/test/reverse_proxy/client/tesla_test.exs
@@ -8,8 +8,8 @@ defmodule Pleroma.ReverseProxy.Client.TeslaTest do
alias Pleroma.ReverseProxy.Client
@moduletag :integration
- clear_config_all(Pleroma.Gun.API) do
- Pleroma.Config.put(Pleroma.Gun.API, Pleroma.Gun)
+ clear_config_all(Pleroma.Gun) do
+ Pleroma.Config.put(Pleroma.Gun, Pleroma.Gun.API)
end
setup do
diff --git a/test/reverse_proxy/reverse_proxy_test.exs b/test/reverse_proxy/reverse_proxy_test.exs
index f61fc02c5..8e72698ee 100644
--- a/test/reverse_proxy/reverse_proxy_test.exs
+++ b/test/reverse_proxy/reverse_proxy_test.exs
@@ -349,8 +349,8 @@ defmodule Pleroma.ReverseProxyTest do
Pleroma.Config.put(Pleroma.ReverseProxy.Client, Pleroma.ReverseProxy.Client.Tesla)
end
- clear_config(Pleroma.Gun.API) do
- Pleroma.Config.put(Pleroma.Gun.API, Pleroma.Gun)
+ clear_config(Pleroma.Gun) do
+ Pleroma.Config.put(Pleroma.Gun, Pleroma.Gun.API)
end
setup do
diff --git a/test/support/gun_mock.ex b/test/support/gun_mock.ex
new file mode 100644
index 000000000..e13afd08c
--- /dev/null
+++ b/test/support/gun_mock.ex
@@ -0,0 +1,155 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.GunMock do
+ @behaviour Pleroma.Gun
+
+ alias Pleroma.Gun
+ alias Pleroma.GunMock
+
+ @impl Gun
+ def open('some-domain.com', 443, _) do
+ {:ok, conn_pid} = Task.start_link(fn -> Process.sleep(1_000) end)
+
+ Registry.register(GunMock, conn_pid, %{
+ origin_scheme: "https",
+ origin_host: 'some-domain.com',
+ origin_port: 443
+ })
+
+ {:ok, conn_pid}
+ end
+
+ @impl Gun
+ def open(ip, port, _)
+ when ip in [{10_755, 10_368, 61_708, 131, 64_206, 45_068, 0, 9_694}, {127, 0, 0, 1}] and
+ port in [80, 443] do
+ {:ok, conn_pid} = Task.start_link(fn -> Process.sleep(1_000) end)
+
+ scheme = if port == 443, do: "https", else: "http"
+
+ Registry.register(GunMock, conn_pid, %{
+ origin_scheme: scheme,
+ origin_host: ip,
+ origin_port: port
+ })
+
+ {:ok, conn_pid}
+ end
+
+ @impl Gun
+ def open('localhost', 1234, %{
+ protocols: [:socks],
+ proxy: {:socks5, 'localhost', 1234},
+ socks_opts: %{host: 'proxy-socks.com', port: 80, version: 5}
+ }) do
+ {:ok, conn_pid} = Task.start_link(fn -> Process.sleep(1_000) end)
+
+ Registry.register(GunMock, conn_pid, %{
+ origin_scheme: "http",
+ origin_host: 'proxy-socks.com',
+ origin_port: 80
+ })
+
+ {:ok, conn_pid}
+ end
+
+ @impl Gun
+ def open('localhost', 1234, %{
+ protocols: [:socks],
+ proxy: {:socks4, 'localhost', 1234},
+ socks_opts: %{
+ host: 'proxy-socks.com',
+ port: 443,
+ protocols: [:http2],
+ tls_opts: [],
+ transport: :tls,
+ version: 4
+ }
+ }) do
+ {:ok, conn_pid} = Task.start_link(fn -> Process.sleep(1_000) end)
+
+ Registry.register(GunMock, conn_pid, %{
+ origin_scheme: "https",
+ origin_host: 'proxy-socks.com',
+ origin_port: 443
+ })
+
+ {:ok, conn_pid}
+ end
+
+ @impl Gun
+ def open('gun-not-up.com', 80, _opts), do: {:error, :timeout}
+
+ @impl Gun
+ def open('example.com', port, _) when port in [443, 115] do
+ {:ok, conn_pid} = Task.start_link(fn -> Process.sleep(1_000) end)
+
+ Registry.register(GunMock, conn_pid, %{
+ origin_scheme: "https",
+ origin_host: 'example.com',
+ origin_port: 443
+ })
+
+ {:ok, conn_pid}
+ end
+
+ @impl Gun
+ def open(domain, 80, _) do
+ {:ok, conn_pid} = Task.start_link(fn -> Process.sleep(1_000) end)
+
+ Registry.register(GunMock, conn_pid, %{
+ origin_scheme: "http",
+ origin_host: domain,
+ origin_port: 80
+ })
+
+ {:ok, conn_pid}
+ end
+
+ @impl Gun
+ def open({127, 0, 0, 1}, 8123, _) do
+ Task.start_link(fn -> Process.sleep(1_000) end)
+ end
+
+ @impl Gun
+ def open('localhost', 9050, _) do
+ Task.start_link(fn -> Process.sleep(1_000) end)
+ end
+
+ @impl Gun
+ def await_up(_pid, _timeout), do: {:ok, :http}
+
+ @impl Gun
+ def set_owner(_pid, _owner), do: :ok
+
+ @impl Gun
+ def connect(pid, %{host: _, port: 80}) do
+ ref = make_ref()
+ Registry.register(GunMock, ref, pid)
+ ref
+ end
+
+ @impl Gun
+ def connect(pid, %{host: _, port: 443, protocols: [:http2], transport: :tls}) do
+ ref = make_ref()
+ Registry.register(GunMock, ref, pid)
+ ref
+ end
+
+ @impl Gun
+ def await(pid, ref) do
+ [{_, ^pid}] = Registry.lookup(GunMock, ref)
+ {:response, :fin, 200, []}
+ end
+
+ @impl Gun
+ def info(pid) do
+ [{_, info}] = Registry.lookup(GunMock, pid)
+ info
+ end
+
+ @impl Gun
+ def close(_pid), do: :ok
+end