Merge branch 'develop' into feature/compat/push-subscriptions
[akkoma] / test / web / ostatus / ostatus_controller_test.exs
index c23b175e885bfd2d15e3f5ec3a97db3d0324cb51..411e89e943488bc8eb1cb3927f627e520b38b417 100644 (file)
@@ -2,8 +2,14 @@ defmodule Pleroma.Web.OStatus.OStatusControllerTest do
   use Pleroma.Web.ConnCase
   import Pleroma.Factory
   alias Pleroma.{User, Repo}
+  alias Pleroma.Web.CommonAPI
   alias Pleroma.Web.OStatus.ActivityRepresenter
 
+  setup_all do
+    Tesla.Mock.mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end)
+    :ok
+  end
+
   test "decodes a salmon", %{conn: conn} do
     user = insert(:user)
     salmon = File.read!("test/fixtures/salmon.xml")
@@ -30,14 +36,16 @@ defmodule Pleroma.Web.OStatus.OStatusControllerTest do
     # Set a wrong magic-key for a user so it has to refetch
     salmon_user = User.get_by_ap_id("http://gs.example.org:4040/index.php/user/1")
     # Wrong key
-    info =
-      salmon_user.info
-      |> Map.put(
-        "magic_key",
-        "RSA.pu0s-halox4tu7wmES1FVSx6u-4wc0YrUFXcqWXZG4-27UmbCOpMQftRCldNRfyA-qLbz-eqiwrong1EwUvjsD4cYbAHNGHwTvDOyx5AKthQUP44ykPv7kjKGh3DWKySJvcs9tlUG87hlo7AvnMo9pwRS_Zz2CacQ-MKaXyDepk=.AQAB"
-      )
+    info_cng =
+      User.Info.remote_user_creation(salmon_user.info, %{
+        magic_key:
+          "RSA.pu0s-halox4tu7wmES1FVSx6u-4wc0YrUFXcqWXZG4-27UmbCOpMQftRCldNRfyA-qLbz-eqiwrong1EwUvjsD4cYbAHNGHwTvDOyx5AKthQUP44ykPv7kjKGh3DWKySJvcs9tlUG87hlo7AvnMo9pwRS_Zz2CacQ-MKaXyDepk=.AQAB"
+      })
 
-    Repo.update(User.info_changeset(salmon_user, %{info: info}))
+    cng =
+      Ecto.Changeset.change(salmon_user)
+      |> Ecto.Changeset.put_embed(:info, info_cng)
+      |> Repo.update()
 
     conn =
       build_conn()
@@ -167,6 +175,32 @@ defmodule Pleroma.Web.OStatus.OStatusControllerTest do
     assert json_response(conn, 200)
   end
 
+  test "only gets a notice in AS2 format for Create messages", %{conn: conn} do
+    note_activity = insert(:note_activity)
+    url = "/notice/#{note_activity.id}"
+
+    conn =
+      conn
+      |> put_req_header("accept", "application/activity+json")
+      |> get(url)
+
+    assert json_response(conn, 200)
+
+    user = insert(:user)
+
+    {:ok, like_activity, _} = CommonAPI.favorite(note_activity.id, user)
+    url = "/notice/#{like_activity.id}"
+
+    assert like_activity.data["type"] == "Like"
+
+    conn =
+      build_conn()
+      |> put_req_header("accept", "application/activity+json")
+      |> get(url)
+
+    assert response(conn, 404)
+  end
+
   test "gets an activity in AS2 format", %{conn: conn} do
     note_activity = insert(:note_activity)
     [_, uuid] = hd(Regex.scan(~r/.+\/([\w-]+)$/, note_activity.data["id"]))