Merge develop to bump elixir version in the CI so I don't get failing formatting
[akkoma] / test / web / websub / websub_test.exs
index 5914a37fc167a527680b421bb3f3a76725992fcb..74386d7dbb98a149fbb8afa1d2e3106782c79d28 100644 (file)
@@ -1,15 +1,22 @@
-defmodule Pleroma.Web.WebsubMock do
-  def verify(sub) do
-    {:ok, sub}
-  end
-end
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2018 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
 
 defmodule Pleroma.Web.WebsubTest do
   use Pleroma.DataCase
+
+  alias Pleroma.Web.Router.Helpers
   alias Pleroma.Web.Websub
-  alias Pleroma.Web.Websub.{WebsubServerSubscription, WebsubClientSubscription}
+  alias Pleroma.Web.Websub.WebsubClientSubscription
+  alias Pleroma.Web.Websub.WebsubServerSubscription
+
   import Pleroma.Factory
-  alias Pleroma.Web.Router.Helpers
+  import Tesla.Mock
+
+  setup do
+    mock(fn env -> apply(HttpRequestMock, :request, [env]) end)
+    :ok
+  end
 
   test "a verification of a request that is accepted" do
     sub = insert(:websub_subscription)
@@ -26,8 +33,8 @@ defmodule Pleroma.Web.WebsubTest do
       assert String.to_integer(seconds) > 0
 
       {:ok,
-       %HTTPoison.Response{
-         status_code: 200,
+       %Tesla.Env{
+         status: 200,
          body: challenge
        }}
     end
@@ -41,8 +48,8 @@ defmodule Pleroma.Web.WebsubTest do
 
     getter = fn _path, _headers, _options ->
       {:ok,
-       %HTTPoison.Response{
-         status_code: 500,
+       %Tesla.Env{
+         status: 500,
          body: ""
        }}
     end
@@ -99,7 +106,7 @@ defmodule Pleroma.Web.WebsubTest do
 
   test "initiate a subscription for a given user and topic" do
     subscriber = insert(:user)
-    user = insert(:user, %{info: %{"topic" => "some_topic", "hub" => "some_hub"}})
+    user = insert(:user, %{info: %Pleroma.User.Info{topic: "some_topic", hub: "some_hub"}})
 
     {:ok, websub} = Websub.subscribe(subscriber, user, &accepting_verifier/1)
     assert websub.subscribers == [subscriber.ap_id]
@@ -113,12 +120,7 @@ defmodule Pleroma.Web.WebsubTest do
   test "discovers the hub and canonical url" do
     topic = "https://mastodon.social/users/lambadalambda.atom"
 
-    getter = fn ^topic ->
-      doc = File.read!("test/fixtures/lambadalambda.atom")
-      {:ok, %{status_code: 200, body: doc}}
-    end
-
-    {:ok, discovered} = Websub.gather_feed_data(topic, getter)
+    {:ok, discovered} = Websub.gather_feed_data(topic)
 
     expected = %{
       "hub" => "https://mastodon.social/api/push",
@@ -158,7 +160,7 @@ defmodule Pleroma.Web.WebsubTest do
                  websub.id
                )
 
-      {:ok, %{status_code: 202}}
+      {:ok, %{status: 202}}
     end
 
     task = Task.async(fn -> Websub.request_subscription(websub, poster) end)
@@ -177,7 +179,7 @@ defmodule Pleroma.Web.WebsubTest do
     websub = insert(:websub_client_subscription, %{hub: hub, topic: topic})
 
     poster = fn ^hub, {:form, _data}, _headers ->
-      {:ok, %{status_code: 202}}
+      {:ok, %{status: 202}}
     end
 
     {:error, websub} = Websub.request_subscription(websub, poster, 1000)
@@ -186,7 +188,7 @@ defmodule Pleroma.Web.WebsubTest do
     websub = insert(:websub_client_subscription, %{hub: hub, topic: topic})
 
     poster = fn ^hub, {:form, _data}, _headers ->
-      {:ok, %{status_code: 400}}
+      {:ok, %{status: 400}}
     end
 
     {:error, websub} = Websub.request_subscription(websub, poster, 1000)
@@ -209,6 +211,7 @@ defmodule Pleroma.Web.WebsubTest do
         insert(:websub_client_subscription, %{
           valid_until: NaiveDateTime.add(now, 2 * day),
           topic: "http://example.org/still_good",
+          hub: "http://example.org/still_good",
           state: "accepted"
         })
 
@@ -216,6 +219,7 @@ defmodule Pleroma.Web.WebsubTest do
         insert(:websub_client_subscription, %{
           valid_until: NaiveDateTime.add(now, day - 100),
           topic: "http://example.org/needs_refresh",
+          hub: "http://example.org/needs_refresh",
           state: "accepted"
         })