summaryrefslogtreecommitdiff
path: root/test/web/websub/websub_controller_test.exs
diff options
context:
space:
mode:
authorRoger Braun <roger@rogerbraun.net>2017-05-07 19:28:23 +0200
committerRoger Braun <roger@rogerbraun.net>2017-05-07 19:28:23 +0200
commitb403ea4d2b69cef4434ad68babdfb402d8227847 (patch)
treed07607b3387c89f4310881132a9e10a5389a5439 /test/web/websub/websub_controller_test.exs
parenta9b2ad17596d1b6deca646239a95e94dc644ebf3 (diff)
parent60b4b0d725aefdca3eedd2d7708b0c96ee60c5f4 (diff)
downloadpleroma-b403ea4d2b69cef4434ad68babdfb402d8227847.tar.gz
pleroma-b403ea4d2b69cef4434ad68babdfb402d8227847.zip
Merge branch 'develop' into dtluna/pleroma-feature/unfollow-activity
Diffstat (limited to 'test/web/websub/websub_controller_test.exs')
-rw-r--r--test/web/websub/websub_controller_test.exs61
1 files changed, 61 insertions, 0 deletions
diff --git a/test/web/websub/websub_controller_test.exs b/test/web/websub/websub_controller_test.exs
index 8368cafea..8f68248a4 100644
--- a/test/web/websub/websub_controller_test.exs
+++ b/test/web/websub/websub_controller_test.exs
@@ -1,6 +1,9 @@
defmodule Pleroma.Web.Websub.WebsubControllerTest do
use Pleroma.Web.ConnCase
import Pleroma.Factory
+ alias Pleroma.Web.Websub.WebsubClientSubscription
+ alias Pleroma.{Repo, Activity}
+ alias Pleroma.Web.Websub
test "websub subscription request", %{conn: conn} do
user = insert(:user)
@@ -20,4 +23,62 @@ defmodule Pleroma.Web.Websub.WebsubControllerTest do
assert response(conn, 202) == "Accepted"
end
+
+ test "websub subscription confirmation", %{conn: conn} do
+ websub = insert(:websub_client_subscription)
+
+ params = %{
+ "hub.mode" => "subscribe",
+ "hub.topic" => websub.topic,
+ "hub.challenge" => "some challenge",
+ "hub.lease_seconds" => 100
+ }
+
+ conn = conn
+ |> get("/push/subscriptions/#{websub.id}", params)
+
+ websub = Repo.get(WebsubClientSubscription, websub.id)
+
+ assert response(conn, 200) == "some challenge"
+ assert websub.state == "accepted"
+
+ # TODO valid_until
+ end
+
+ test "handles incoming feed updates", %{conn: conn} do
+ 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")
+ |> 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
+ websub = insert(:websub_client_subscription)
+ doc = "some stuff"
+ signature = Websub.sign("wrong secret", doc)
+
+ conn = conn
+ |> put_req_header("x-hub-signature", "sha1=" <> signature)
+ |> put_req_header("content-type", "application/atom+xml")
+ |> post("/push/subscriptions/#{websub.id}", doc)
+
+ assert response(conn, 500) == "Error"
+
+ assert length(Repo.all(Activity)) == 0
+ end
+end
+
+defmodule Pleroma.Web.OStatusMock do
+ import Pleroma.Factory
+ def handle_incoming(_doc) do
+ insert(:note_activity)
+ end
end