refactoring for gun api modules
[akkoma] / test / http_test.exs
index 62f3ccb30383b60de62ca239673df5ee78d06784..d45d34f32461cf0bb9242bf429e4d46bf8cc91a5 100644 (file)
@@ -1,6 +1,12 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2018 Pleroma Authors <https://pleroma.social/>
+# 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
@@ -23,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"}
              }
@@ -32,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{
@@ -46,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