Merge branch 'develop' into feature/tag_feed
authorMaksim Pechnikov <parallel588@gmail.com>
Tue, 14 Jan 2020 13:26:56 +0000 (16:26 +0300)
committerMaksim Pechnikov <parallel588@gmail.com>
Tue, 14 Jan 2020 18:29:14 +0000 (21:29 +0300)
1  2 
CHANGELOG.md
lib/pleroma/web/metadata/utils.ex
lib/pleroma/web/router.ex
test/user_test.exs
test/web/feed/tag_controller_test.exs
test/web/twitter_api/util_controller_test.exs

diff --cc CHANGELOG.md
Simple merge
index c0dae1b7eb8e077e3b7035721f47dc60b1ade782,589d11901a0ceb91f50d5da672a909805c0c25ac..000bd9f66f5559a79c525596d9ebf9b4d6338ba1
@@@ -19,13 -20,6 +20,14 @@@ defmodule Pleroma.Web.Metadata.Utils d
    end
  
    def scrub_html_and_truncate(content, max_length \\ 200) when is_binary(content) do
 +    content
 +    |> scrub_html
 +    |> Emoji.Formatter.demojify()
++    |> HtmlEntities.decode()
 +    |> Formatter.truncate(max_length)
 +  end
 +
 +  def scrub_html(content) when is_binary(content) do
      content
      # html content comes from DB already encoded, decode first and scrub after
      |> HtmlEntities.decode()
Simple merge
Simple merge
index efc5880704668633c4df30e5c8d20e1532501de2,0000000000000000000000000000000000000000..a56a1873828b04f44b8d23887fa670b9d82a136e
mode 100644,000000..100644
--- /dev/null
@@@ -1,89 -1,0 +1,101 @@@
 +# Pleroma: A lightweight social networking server
 +# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
 +# SPDX-License-Identifier: AGPL-3.0-only
 +
 +defmodule Pleroma.Web.Feed.TagControllerTest do
 +  use Pleroma.Web.ConnCase
 +
 +  import Pleroma.Factory
 +  import SweetXml
 +
 +  alias Pleroma.Web.Feed.FeedView
 +
 +  clear_config([:feed])
 +
 +  test "gets a feed", %{conn: conn} do
 +    Pleroma.Config.put(
 +      [:feed, :post_title],
 +      %{max_length: 25, omission: "..."}
 +    )
 +
 +    user = insert(:user)
 +    {:ok, activity1} = Pleroma.Web.CommonAPI.post(user, %{"status" => "yeah #PleromaArt"})
 +
 +    object = Pleroma.Object.normalize(activity1)
 +
 +    object_data =
 +      Map.put(object.data, "attachment", [
 +        %{
 +          "url" => [
 +            %{
 +              "href" =>
 +                "https://peertube.moe/static/webseed/df5f464b-be8d-46fb-ad81-2d4c2d1630e3-480.mp4",
 +              "mediaType" => "video/mp4",
 +              "type" => "Link"
 +            }
 +          ]
 +        }
 +      ])
 +
 +    object
 +    |> Ecto.Changeset.change(data: object_data)
 +    |> Pleroma.Repo.update()
 +
 +    {:ok, activity2} =
 +      Pleroma.Web.CommonAPI.post(user, %{"status" => "42 This is :moominmamma #PleromaArt"})
 +
 +    {:ok, _activity3} = Pleroma.Web.CommonAPI.post(user, %{"status" => "This is :moominmamma"})
 +
 +    response =
 +      conn
 +      |> put_req_header("content-type", "application/atom+xml")
 +      |> get(tag_feed_path(conn, :feed, "pleromaart.rss"))
 +      |> response(200)
 +
 +    xml = parse(response)
 +    assert xpath(xml, ~x"//channel/title/text()") == '#pleromaart'
 +
 +    assert xpath(xml, ~x"//channel/description/text()"s) ==
 +             "These are public toots tagged with #pleromaart. You can interact with them if you have an account anywhere in the fediverse."
 +
 +    assert xpath(xml, ~x"//channel/link/text()") ==
 +             '#{Pleroma.Web.base_url()}/tags/pleromaart.rss'
 +
 +    assert xpath(xml, ~x"//channel/webfeeds:logo/text()") ==
 +             '#{Pleroma.Web.base_url()}/static/logo.png'
 +
 +    assert xpath(xml, ~x"//channel/item/title/text()"l) == [
 +             '42 This is :moominmamm...',
 +             'yeah #PleromaArt'
 +           ]
 +
 +    assert xpath(xml, ~x"//channel/item/pubDate/text()"sl) == [
 +             FeedView.pub_date(activity1.data["published"]),
 +             FeedView.pub_date(activity2.data["published"])
 +           ]
 +
 +    assert xpath(xml, ~x"//channel/item/enclosure/@url"sl) == [
 +             "https://peertube.moe/static/webseed/df5f464b-be8d-46fb-ad81-2d4c2d1630e3-480.mp4"
 +           ]
 +
 +    obj1 = Pleroma.Object.normalize(activity1)
 +    obj2 = Pleroma.Object.normalize(activity2)
 +
 +    assert xpath(xml, ~x"//channel/item/description/text()"sl) == [
 +             HtmlEntities.decode(FeedView.activity_content(obj2)),
 +             HtmlEntities.decode(FeedView.activity_content(obj1))
 +           ]
++
++    response =
++      conn
++      |> put_req_header("content-type", "application/atom+xml")
++      |> get(tag_feed_path(conn, :feed, "pleromaart"))
++      |> response(200)
++
++    xml = parse(response)
++    assert xpath(xml, ~x"//channel/title/text()") == '#pleromaart'
++
++    assert xpath(xml, ~x"//channel/description/text()"s) ==
++             "These are public toots tagged with #pleromaart. You can interact with them if you have an account anywhere in the fediverse."
 +  end
 +end
index 43299e147b3f5d9ec67035dda40215fd16457f33,8418fd071f26e7eece7ea04d7d48afaeff77427e..5d60c0d51865f1c94b3c29f051f4a48d2af96880
@@@ -6,11 -6,11 +6,9 @@@ defmodule Pleroma.Web.TwitterAPI.UtilCo
    use Pleroma.Web.ConnCase
    use Oban.Testing, repo: Pleroma.Repo
  
-   alias Pleroma.Repo
    alias Pleroma.Tests.ObanHelpers
    alias Pleroma.User
--  alias Pleroma.Web.CommonAPI
-   import ExUnit.CaptureLog
 -  import ExUnit.CaptureLog
    import Pleroma.Factory
    import Mock