Merge branch 'develop' into gun
[akkoma] / test / http_test.exs
index 3edb0de3655b369db4bc6e2997b262d5f6821103..4aa08afcbae319a91fae530342b63d9837e92c52 100644 (file)
@@ -3,8 +3,10 @@
 # SPDX-License-Identifier: AGPL-3.0-only
 
 defmodule Pleroma.HTTPTest do
-  use Pleroma.DataCase
+  use ExUnit.Case
+  use Pleroma.Tests.Helpers
   import Tesla.Mock
+  alias Pleroma.HTTP
 
   setup do
     mock(fn
@@ -27,7 +29,7 @@ defmodule Pleroma.HTTPTest do
 
   describe "get/1" do
     test "returns successfully result" do
-      assert Pleroma.HTTP.get("http://example.com/hello") == {
+      assert HTTP.get("http://example.com/hello") == {
                :ok,
                %Tesla.Env{status: 200, body: "hello"}
              }
@@ -36,7 +38,7 @@ defmodule Pleroma.HTTPTest do
 
   describe "get/2 (with headers)" do
     test "returns successfully result for json content-type" do
-      assert Pleroma.HTTP.get("http://example.com/hello", [{"content-type", "application/json"}]) ==
+      assert HTTP.get("http://example.com/hello", [{"content-type", "application/json"}]) ==
                {
                  :ok,
                  %Tesla.Env{
@@ -50,10 +52,35 @@ defmodule Pleroma.HTTPTest do
 
   describe "post/2" do
     test "returns successfully result" do
-      assert Pleroma.HTTP.post("http://example.com/world", "") == {
+      assert HTTP.post("http://example.com/world", "") == {
                :ok,
                %Tesla.Env{status: 200, body: "world"}
              }
     end
   end
+
+  describe "connection pools" do
+    @describetag :integration
+    clear_config(Pleroma.Gun) do
+      Pleroma.Config.put(Pleroma.Gun, Pleroma.Gun.API)
+    end
+
+    test "gun" do
+      adapter = Application.get_env(:tesla, :adapter)
+      Application.put_env(:tesla, :adapter, Tesla.Adapter.Gun)
+
+      on_exit(fn ->
+        Application.put_env(:tesla, :adapter, adapter)
+      end)
+
+      options = [adapter: [pool: :federation]]
+
+      assert {:ok, resp} = HTTP.get("https://httpbin.org/user-agent", [], options)
+
+      assert resp.status == 200
+
+      state = Pleroma.Pool.Connections.get_state(:gun_connections)
+      assert state.conns["https:httpbin.org:443"]
+    end
+  end
 end