From ea72ac549b2ac52623462d6862154fb6f800c01c Mon Sep 17 00:00:00 2001 From: Maksim Pechnikov Date: Fri, 14 Dec 2018 22:56:37 +0300 Subject: [PATCH] fix case when tags is invalid --- lib/pleroma/web/mastodon_api/views/status_view.ex | 4 +++- test/web/mastodon_api/status_view_test.exs | 13 ++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/lib/pleroma/web/mastodon_api/views/status_view.ex b/lib/pleroma/web/mastodon_api/views/status_view.ex index f2a47f594..46c559e3a 100644 --- a/lib/pleroma/web/mastodon_api/views/status_view.ex +++ b/lib/pleroma/web/mastodon_api/views/status_view.ex @@ -244,8 +244,10 @@ def render_content(object), do: object["content"] || "" {"name": "nextcloud", "url": "/tag/nextcloud"}] """ - @spec build_tags(list(String.t())) :: list(map()) + @spec build_tags(list(any())) :: list(map()) def build_tags(object_tags) when is_list(object_tags) do + object_tags = for tag when is_binary(tag) <- object_tags, do: tag + Enum.reduce(object_tags, [], fn tag, tags -> tags ++ [%{name: tag, url: "/tag/#{tag}"}] end) diff --git a/test/web/mastodon_api/status_view_test.exs b/test/web/mastodon_api/status_view_test.exs index 4f9805c78..b7ac92760 100644 --- a/test/web/mastodon_api/status_view_test.exs +++ b/test/web/mastodon_api/status_view_test.exs @@ -159,7 +159,18 @@ test "a reblog" do describe "build_tags/1" do test "it returns a a dictionary tags" do - assert StatusView.build_tags(["fediverse", "mastodon", "nextcloud"]) == [ + object_tags = [ + "fediverse", + "mastodon", + "nextcloud", + %{ + "href" => "https://kawen.space/users/lain", + "name" => "@lain@kawen.space", + "type" => "Mention" + } + ] + + assert StatusView.build_tags(object_tags) == [ %{name: "fediverse", url: "/tag/fediverse"}, %{name: "mastodon", url: "/tag/mastodon"}, %{name: "nextcloud", url: "/tag/nextcloud"}