Merge branch 'activitypub-dereference-activity-id' into 'develop'
[akkoma] / test / web / mastodon_api / mastodon_api_controller_test.exs
index 5ff7ef25972bc0493828ee2956f7e85bd6b43d58..b448d13f5323ef069d94b15b68c92a7fafcfe491 100644 (file)
@@ -1,5 +1,5 @@
 # Pleroma: A lightweight social networking server
-# Copyright © 2017-2018 Pleroma Authors <https://pleroma.social/>
+# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
 # SPDX-License-Identifier: AGPL-3.0-only
 
 defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
@@ -1472,98 +1472,83 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
     assert user.info.settings == %{"programming" => "socks"}
   end
 
-  describe "pinned posts" do
-    test "returns pinned posts", %{conn: conn} do
-      Pleroma.Config.put([:instance, :max_pinned_posts], 1)
-      user = insert(:user)
+  describe "pinned statuses" do
+    setup do
+      Pleroma.Config.put([:instance, :max_pinned_statuses], 1)
 
+      user = insert(:user)
       {:ok, activity} = CommonAPI.post(user, %{"status" => "HI!!!"})
+
+      [user: user, activity: activity]
+    end
+
+    test "returns pinned statuses", %{conn: conn, user: user, activity: activity} do
       {:ok, _} = CommonAPI.pin(activity.id, user)
 
       result =
         conn
         |> assign(:user, user)
         |> get("/api/v1/accounts/#{user.id}/statuses?pinned=true")
-        |> Map.get(:resp_body)
-        |> Jason.decode!()
+        |> json_response(200)
 
-      id_str = Integer.to_string(activity.id)
+      id_str = to_string(activity.id)
 
-      assert [%{"id" => ^id_str}] = result
+      assert [%{"id" => ^id_str, "pinned" => true}] = result
     end
 
-    test "pin post", %{conn: conn} do
-      Pleroma.Config.put([:instance, :max_pinned_posts], 1)
-      user = insert(:user)
+    test "pin status", %{conn: conn, user: user, activity: activity} do
+      id_str = to_string(activity.id)
 
-      {:ok, activity} = CommonAPI.post(user, %{"status" => "HI!!!"})
-      id_str = Integer.to_string(activity.id)
-
-      assert %{"id" => ^id_str} =
+      assert %{"id" => ^id_str, "pinned" => true} =
                conn
                |> assign(:user, user)
                |> post("/api/v1/statuses/#{activity.id}/pin")
-               |> Map.get(:resp_body)
-               |> Jason.decode!()
+               |> json_response(200)
 
-      assert [%{"id" => ^id_str}] =
+      assert [%{"id" => ^id_str, "pinned" => true}] =
                conn
                |> assign(:user, user)
                |> get("/api/v1/accounts/#{user.id}/statuses?pinned=true")
-               |> Map.get(:resp_body)
-               |> Jason.decode!()
+               |> json_response(200)
     end
 
-    test "unpin post", %{conn: conn} do
-      Pleroma.Config.put([:instance, :max_pinned_posts], 1)
-      user = insert(:user)
-
-      {:ok, activity} = CommonAPI.post(user, %{"status" => "HI!!!"})
+    test "unpin status", %{conn: conn, user: user, activity: activity} do
       {:ok, _} = CommonAPI.pin(activity.id, user)
 
-      id_str = Integer.to_string(activity.id)
-      user = User.get_by_ap_id(user.ap_id)
+      id_str = to_string(activity.id)
+      user = refresh_record(user)
 
-      assert %{"id" => ^id_str} =
+      assert %{"id" => ^id_str, "pinned" => false} =
                conn
                |> assign(:user, user)
                |> post("/api/v1/statuses/#{activity.id}/unpin")
-               |> Map.get(:resp_body)
-               |> Jason.decode!()
+               |> json_response(200)
 
       assert [] =
                conn
                |> assign(:user, user)
                |> get("/api/v1/accounts/#{user.id}/statuses?pinned=true")
-               |> Map.get(:resp_body)
-               |> Jason.decode!()
+               |> json_response(200)
     end
 
-    test "max pinned posts", %{conn: conn} do
-      Pleroma.Config.put([:instance, :max_pinned_posts], 1)
-
-      user = insert(:user)
-
-      {:ok, activity_one} = CommonAPI.post(user, %{"status" => "HI!!!"})
+    test "max pinned statuses", %{conn: conn, user: user, activity: activity_one} do
       {:ok, activity_two} = CommonAPI.post(user, %{"status" => "HI!!!"})
 
-      id_str_one = Integer.to_string(activity_one.id)
+      id_str_one = to_string(activity_one.id)
 
-      assert %{"id" => ^id_str_one} =
+      assert %{"id" => ^id_str_one, "pinned" => true} =
                conn
                |> assign(:user, user)
                |> post("/api/v1/statuses/#{id_str_one}/pin")
-               |> Map.get(:resp_body)
-               |> Jason.decode!()
+               |> json_response(200)
 
-      user = User.get_by_ap_id(user.ap_id)
+      user = refresh_record(user)
 
-      assert %{"error" => "You have already pinned the maximum number of toots"} =
+      assert %{"error" => "You have already pinned the maximum number of statuses"} =
                conn
                |> assign(:user, user)
                |> post("/api/v1/statuses/#{activity_two.id}/pin")
-               |> Map.get(:resp_body)
-               |> Jason.decode!()
+               |> json_response(400)
     end
   end
 end