Merge remote-tracking branch 'upstream/develop' into admin-create-users
[akkoma] / test / web / rich_media / helpers_test.exs
1 defmodule Pleroma.Web.RichMedia.HelpersTest do
2 use Pleroma.DataCase
3
4 alias Pleroma.Object
5 alias Pleroma.Web.CommonAPI
6
7 import Pleroma.Factory
8 import Tesla.Mock
9
10 setup do
11 mock(fn env -> apply(HttpRequestMock, :request, [env]) end)
12 :ok
13 end
14
15 test "refuses to crawl incomplete URLs" do
16 user = insert(:user)
17
18 {:ok, activity} =
19 CommonAPI.post(user, %{
20 "status" => "[test](example.com/ogp)",
21 "content_type" => "text/markdown"
22 })
23
24 Pleroma.Config.put([:rich_media, :enabled], true)
25
26 assert %{} == Pleroma.Web.RichMedia.Helpers.fetch_data_for_activity(activity)
27
28 Pleroma.Config.put([:rich_media, :enabled], false)
29 end
30
31 test "refuses to crawl malformed URLs" do
32 user = insert(:user)
33
34 {:ok, activity} =
35 CommonAPI.post(user, %{
36 "status" => "[test](example.com[]/ogp)",
37 "content_type" => "text/markdown"
38 })
39
40 Pleroma.Config.put([:rich_media, :enabled], true)
41
42 assert %{} == Pleroma.Web.RichMedia.Helpers.fetch_data_for_activity(activity)
43
44 Pleroma.Config.put([:rich_media, :enabled], false)
45 end
46
47 test "crawls valid, complete URLs" do
48 user = insert(:user)
49
50 {:ok, activity} =
51 CommonAPI.post(user, %{
52 "status" => "[test](http://example.com/ogp)",
53 "content_type" => "text/markdown"
54 })
55
56 Pleroma.Config.put([:rich_media, :enabled], true)
57
58 assert %{page_url: "http://example.com/ogp", rich_media: _} =
59 Pleroma.Web.RichMedia.Helpers.fetch_data_for_activity(activity)
60
61 Pleroma.Config.put([:rich_media, :enabled], false)
62 end
63
64 test "refuses to crawl URLs from posts marked sensitive" do
65 user = insert(:user)
66
67 {:ok, activity} =
68 CommonAPI.post(user, %{
69 "status" => "http://example.com/ogp",
70 "sensitive" => true
71 })
72
73 %Object{} = object = Object.normalize(activity)
74
75 assert object.data["sensitive"]
76
77 Pleroma.Config.put([:rich_media, :enabled], true)
78
79 assert %{} = Pleroma.Web.RichMedia.Helpers.fetch_data_for_activity(activity)
80
81 Pleroma.Config.put([:rich_media, :enabled], false)
82 end
83
84 test "refuses to crawl URLs from posts tagged NSFW" do
85 user = insert(:user)
86
87 {:ok, activity} =
88 CommonAPI.post(user, %{
89 "status" => "http://example.com/ogp #nsfw"
90 })
91
92 %Object{} = object = Object.normalize(activity)
93
94 assert object.data["sensitive"]
95
96 Pleroma.Config.put([:rich_media, :enabled], true)
97
98 assert %{} = Pleroma.Web.RichMedia.Helpers.fetch_data_for_activity(activity)
99
100 Pleroma.Config.put([:rich_media, :enabled], false)
101 end
102 end