Merge branch 'feature/jobs' into 'develop'
[akkoma] / test / web / websub / websub_controller_test.exs
index 8f68248a486d2e97ac2aa676f767182ae38f4c74..87b01d89b5cba80b5a381eb0067ef41bf7272095 100644 (file)
@@ -1,8 +1,13 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2018 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
 defmodule Pleroma.Web.Websub.WebsubControllerTest do
   use Pleroma.Web.ConnCase
   import Pleroma.Factory
   alias Pleroma.Web.Websub.WebsubClientSubscription
-  alias Pleroma.{Repo, Activity}
+  alias Pleroma.Activity
+  alias Pleroma.Repo
   alias Pleroma.Web.Websub
 
   test "websub subscription request", %{conn: conn} do
@@ -18,8 +23,9 @@ defmodule Pleroma.Web.Websub.WebsubControllerTest do
       "hub.lease_seconds": "100"
     }
 
-    conn = conn
-    |> post(path, data)
+    conn =
+      conn
+      |> post(path, data)
 
     assert response(conn, 202) == "Accepted"
   end
@@ -31,54 +37,51 @@ defmodule Pleroma.Web.Websub.WebsubControllerTest do
       "hub.mode" => "subscribe",
       "hub.topic" => websub.topic,
       "hub.challenge" => "some challenge",
-      "hub.lease_seconds" => 100
+      "hub.lease_seconds" => "100"
     }
 
-    conn = conn
-    |> get("/push/subscriptions/#{websub.id}", params)
+    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
+    assert_in_delta NaiveDateTime.diff(websub.valid_until, NaiveDateTime.utc_now()), 100, 5
   end
 
-  test "handles incoming feed updates", %{conn: conn} do
-    websub = insert(:websub_client_subscription)
-    doc = "some stuff"
-    signature = Websub.sign(websub.secret, doc)
+  describe "websub_incoming" do
+    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)
+      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 response(conn, 200) == "OK"
 
-    assert length(Repo.all(Activity)) == 1
-  end
+      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)
+    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)
+      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 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)
+      assert Enum.empty?(Repo.all(Activity))
+    end
   end
 end