defmodule Pleroma.Web.Websub.WebsubControllerTest do
use Pleroma.Web.ConnCase
import Pleroma.Factory
- alias Pleroma.Web.Websub.WebsubClientSubscription
- alias Pleroma.{Repo, Activity, Instances}
+ alias Pleroma.Repo
alias Pleroma.Web.Websub
+ alias Pleroma.Web.Websub.WebsubClientSubscription
+
+ setup_all do
+ config_path = [:instance, :federating]
+ initial_setting = Pleroma.Config.get(config_path)
+
+ Pleroma.Config.put(config_path, true)
+ on_exit(fn -> Pleroma.Config.put(config_path, initial_setting) end)
+
+ :ok
+ end
test "websub subscription request", %{conn: conn} do
user = insert(:user)
end
describe "websub_incoming" do
- test "handles incoming feed updates", %{conn: conn} do
+ test "accepts incoming feed updates", %{conn: conn} do
websub = insert(:websub_client_subscription)
doc = "some stuff"
signature = Websub.sign(websub.secret, doc)
|> post("/push/subscriptions/#{websub.id}", doc)
assert response(conn, 200) == "OK"
-
- assert length(Repo.all(Activity)) == 1
end
test "rejects incoming feed updates with the wrong signature", %{conn: conn} do
|> post("/push/subscriptions/#{websub.id}", doc)
assert response(conn, 500) == "Error"
-
- assert length(Repo.all(Activity)) == 0
- end
-
- test "it clears `unreachable` federation status of the sender", %{conn: conn} do
- sender_url = "https://pleroma.soykaf.com"
- Instances.set_unreachable(sender_url, Instances.reachability_datetime_threshold())
- refute Instances.reachable?(sender_url)
-
- websub = insert(:websub_client_subscription)
- doc = "some stuff"
- signature = Websub.sign(websub.secret, doc)
-
- conn =
- conn
- |> put_req_header("x-hub-signature", "sha1=" <> signature)
- |> put_req_header("content-type", "application/atom+xml")
- |> put_req_header("referer", sender_url)
- |> post("/push/subscriptions/#{websub.id}", doc)
-
- assert response(conn, 200) == "OK"
- assert Instances.reachable?(sender_url)
end
end
end