Make WebPushEncryption use Pleroma.HTTP as an HTTP adapter
authorSergey Suprunenko <suprunenko.s@gmail.com>
Thu, 17 Sep 2020 20:04:47 +0000 (22:04 +0200)
committerSergey Suprunenko <suprunenko.s@gmail.com>
Thu, 17 Sep 2020 20:10:55 +0000 (22:10 +0200)
config/config.exs
test/web/push/impl_test.exs

index c204814d0573d0172e156b1ecb1c56b23977e47f..b8864fe08b44a1ca600396eca7ddb1fe7d9b33de 100644 (file)
@@ -787,6 +787,8 @@ config :tzdata, :http_client, Pleroma.HTTP.Tzdata
 
 config :ex_aws, http_client: Pleroma.HTTP.ExAws
 
+config :web_push_encryption, http_client: Pleroma.HTTP
+
 config :pleroma, :instances_favicons, enabled: false
 
 config :floki, :html_parser, Floki.HTMLParser.FastHtml
index aeb5c1fbd3216dbbb243f0cd6cbda62a158eef1d..c7c17e156185d17d698a39f84bc78cd08e30f902 100644 (file)
@@ -12,7 +12,9 @@ defmodule Pleroma.Web.Push.ImplTest do
   alias Pleroma.Web.CommonAPI
   alias Pleroma.Web.Push.Impl
   alias Pleroma.Web.Push.Subscription
+  alias Pleroma.Web.WebPushHttpClientMock
 
+  import Mock
   import Pleroma.Factory
 
   setup do
@@ -78,6 +80,22 @@ defmodule Pleroma.Web.Push.ImplTest do
     assert Impl.push_message(@message, @sub, @api_key, %Subscription{}) == :ok
   end
 
+  test_with_mock "uses WebPushHttpClientMock as an HTTP client", WebPushHttpClientMock,
+    post: fn _, _, _ -> {:ok, %{status_code: 200}} end do
+    Impl.push_message(@message, @sub, @api_key, %Subscription{})
+    assert_called(WebPushHttpClientMock.post("https://example.com/example/1234", :_, :_))
+  end
+
+  test_with_mock "uses Pleroma.HTTP as an HTTP client", Pleroma.HTTP,
+    post: fn _, _, _ -> {:ok, %{status_code: 200}} end do
+    client = Application.get_env(:web_push_encryption, :http_client)
+    on_exit(fn -> Application.put_env(:web_push_encryption, :http_client, client) end)
+    Application.put_env(:web_push_encryption, :http_client, Pleroma.HTTP)
+
+    Impl.push_message(@message, @sub, @api_key, %Subscription{})
+    assert_called(Pleroma.HTTP.post("https://example.com/example/1234", :_, :_))
+  end
+
   @tag capture_log: true
   test "fail message sending" do
     assert Impl.push_message(