updated tests
authorMaksim Pechnikov <parallel588@gmail.com>
Mon, 23 Sep 2019 19:37:30 +0000 (22:37 +0300)
committerMaksim Pechnikov <parallel588@gmail.com>
Mon, 23 Sep 2019 19:37:30 +0000 (22:37 +0300)
lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex
lib/pleroma/web/mastodon_api/views/status_view.ex
test/web/mastodon_api/mastodon_api_controller_test.exs

index 0c2b8dbb7b143e360c41ff72e19488381939a98b..da74e4aa2b797ad67eb7a2c007576c4343ba3cb3 100644 (file)
@@ -44,6 +44,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
   alias Pleroma.Web.OAuth.Authorization
   alias Pleroma.Web.OAuth.Scopes
   alias Pleroma.Web.OAuth.Token
+  alias Pleroma.Web.RichMedia
   alias Pleroma.Web.TwitterAPI.TwitterAPI
 
   alias Pleroma.Web.ControllerHelper
@@ -1530,19 +1531,16 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
     end
   end
 
-  def status_card(%{assigns: %{user: user}} = conn, %{"id" => status_id}) do
-    with %Activity{} = activity <- Activity.get_by_id(status_id),
+  def status_card(%{assigns: %{user: user}} = conn, %{"id" => id}) do
+    with %Activity{} = activity <- Activity.get_by_id(id),
          true <- Visibility.visible_for_user?(activity, user) do
-      data =
-        StatusView.render(
-          "card.json",
-          Pleroma.Web.RichMedia.Helpers.fetch_data_for_activity(activity)
-        )
+      data = RichMedia.Helpers.fetch_data_for_activity(activity)
 
-      json(conn, data)
+      conn
+      |> put_view(StatusView)
+      |> render("card.json", data)
     else
-      _e ->
-        json(conn, %{})
+      _e -> {:error, :not_found}
     end
   end
 
index ef796cddd2b0645d46293a2b1f4ea70537bb89fb..0450ed4d943711775c967a310c9b0382cce9f620 100644 (file)
@@ -343,9 +343,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do
     }
   end
 
-  def render("card.json", _) do
-    nil
-  end
+  def render("card.json", _), do: nil
 
   def render("attachment.json", %{attachment: attachment}) do
     [attachment_url | _] = attachment["url"]
index 46e74fc75ac641b94fb858f20c4bc62febed46c9..14cd71aa84d24de5e9cc49d6a99a39bd6a420e42 100644 (file)
@@ -2798,6 +2798,18 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
       %{user: user}
     end
 
+    test "returns empty result when rich_media disabled", %{conn: conn, user: user} do
+      Config.put([:rich_media, :enabled], false)
+      {:ok, activity} = CommonAPI.post(user, %{"status" => "https://example.com/ogp"})
+
+      response =
+        conn
+        |> get("/api/v1/statuses/#{activity.id}/card")
+        |> json_response(200)
+
+      assert response == nil
+    end
+
     test "returns rich-media card", %{conn: conn, user: user} do
       {:ok, activity} = CommonAPI.post(user, %{"status" => "https://example.com/ogp"})
 
@@ -2869,22 +2881,23 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
              }
     end
 
-    test "returns empty object when id invalid", %{conn: conn} do
-      response =
-        conn
-        |> get("/api/v1/statuses/9eoozpwTul5mjSEDRI/card")
-        |> json_response(200)
-
-      assert response == %{}
+    test "returns 404 response when id invalid", %{conn: conn} do
+      assert %{"error" => "Record not found"} =
+               conn
+               |> get("/api/v1/statuses/9eoozpwTul5mjSEDRI/card")
+               |> json_response(404)
     end
 
-    test "returns empty object when id isn't FlakeID", %{conn: conn} do
-      response =
-        conn
-        |> get("/api/v1/statuses/3ebbadd1-eb14-4e20-8118/card")
-        |> json_response(200)
+    test "returns 404 response when id isn't FlakeID", %{conn: conn} do
+      assert %{"error" => "Record not found"} =
+               conn
+               |> get("/api/v1/statuses/3ebbadd1-eb14-4e20-8118/card")
+               |> json_response(404)
 
-      assert response == %{}
+      assert %{"error" => "Record not found"} =
+               conn
+               |> get("/api/v1/statuses/8118/card")
+               |> json_response(404)
     end
   end