1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
5 defmodule Pleroma.Config.DeprecationWarningsTest do
7 use Pleroma.Tests.Helpers
9 import ExUnit.CaptureLog
12 alias Pleroma.Config.DeprecationWarnings
14 describe "simple policy tuples" do
15 test "gives warning when there are still strings" do
16 clear_config([:mrf_simple],
17 media_removal: ["some.removal"],
18 media_nsfw: ["some.nsfw"],
19 federated_timeline_removal: ["some.tl.removal"],
20 report_removal: ["some.report.removal"],
21 reject: ["some.reject"],
22 followers_only: ["some.followers.only"],
23 accept: ["some.accept"],
24 avatar_removal: ["some.avatar.removal"],
25 banner_removal: ["some.banner.removal"],
26 reject_deletes: ["some.reject.deletes"]
29 assert capture_log(fn -> DeprecationWarnings.check_simple_policy_tuples() end) =~
31 !!!DEPRECATION WARNING!!!
32 Your config is using strings in the SimplePolicy configuration instead of tuples. They should work for now, but you are advised to change to the new configuration to prevent possible issues later:
35 config :pleroma, :mrf_simple,
36 media_removal: ["instance.tld"],
37 media_nsfw: ["instance.tld"],
38 federated_timeline_removal: ["instance.tld"],
39 report_removal: ["instance.tld"],
40 reject: ["instance.tld"],
41 followers_only: ["instance.tld"],
42 accept: ["instance.tld"],
43 avatar_removal: ["instance.tld"],
44 banner_removal: ["instance.tld"],
45 reject_deletes: ["instance.tld"]
52 config :pleroma, :mrf_simple,
53 media_removal: [{"instance.tld", "Reason for media removal"}],
54 media_nsfw: [{"instance.tld", "Reason for media nsfw"}],
55 federated_timeline_removal: [{"instance.tld", "Reason for federated timeline removal"}],
56 report_removal: [{"instance.tld", "Reason for report removal"}],
57 reject: [{"instance.tld", "Reason for reject"}],
58 followers_only: [{"instance.tld", "Reason for followers only"}],
59 accept: [{"instance.tld", "Reason for accept"}],
60 avatar_removal: [{"instance.tld", "Reason for avatar removal"}],
61 banner_removal: [{"instance.tld", "Reason for banner removal"}],
62 reject_deletes: [{"instance.tld", "Reason for reject deletes"}]
67 test "transforms config to tuples" do
68 clear_config([:mrf_simple],
69 media_removal: ["some.removal", {"some.other.instance", "Some reason"}]
73 {:media_removal, [{"some.removal", ""}, {"some.other.instance", "Some reason"}]}
76 capture_log(fn -> DeprecationWarnings.check_simple_policy_tuples() end)
78 assert Config.get([:mrf_simple]) == expected_config
81 test "doesn't give a warning with correct config" do
82 clear_config([:mrf_simple],
83 media_removal: [{"some.removal", ""}, {"some.other.instance", "Some reason"}]
86 assert capture_log(fn -> DeprecationWarnings.check_simple_policy_tuples() end) == ""
90 describe "quarantined_instances tuples" do
91 test "gives warning when there are still strings" do
92 clear_config([:instance, :quarantined_instances], [
93 {"domain.com", "some reason"},
97 assert capture_log(fn -> DeprecationWarnings.check_quarantined_instances_tuples() end) =~
99 !!!DEPRECATION WARNING!!!
100 Your config is using strings in the quarantined_instances configuration instead of tuples. They should work for now, but you are advised to change to the new configuration to prevent possible issues later:
103 config :pleroma, :instance,
104 quarantined_instances: ["instance.tld"]
111 config :pleroma, :instance,
112 quarantined_instances: [{"instance.tld", "Reason for quarantine"}]
117 test "transforms config to tuples" do
118 clear_config([:instance, :quarantined_instances], [
119 {"domain.com", "some reason"},
123 expected_config = [{"domain.com", "some reason"}, {"some.tld", ""}]
125 capture_log(fn -> DeprecationWarnings.check_quarantined_instances_tuples() end)
127 assert Config.get([:instance, :quarantined_instances]) == expected_config
130 test "doesn't give a warning with correct config" do
131 clear_config([:instance, :quarantined_instances], [
132 {"domain.com", "some reason"},
136 assert capture_log(fn -> DeprecationWarnings.check_quarantined_instances_tuples() end) == ""
140 test "check_old_mrf_config/0" do
141 clear_config([:instance, :rewrite_policy], [])
142 clear_config([:instance, :mrf_transparency], true)
143 clear_config([:instance, :mrf_transparency_exclusions], [])
145 assert capture_log(fn -> DeprecationWarnings.check_old_mrf_config() end) =~
147 !!!DEPRECATION WARNING!!!
148 Your config is using old namespaces for MRF configuration. They should work for now, but you are advised to change to new namespaces to prevent possible issues later:
150 * `config :pleroma, :instance, rewrite_policy` is now `config :pleroma, :mrf, policies`
151 * `config :pleroma, :instance, mrf_transparency` is now `config :pleroma, :mrf, transparency`
152 * `config :pleroma, :instance, mrf_transparency_exclusions` is now `config :pleroma, :mrf, transparency_exclusions`
156 test "move_namespace_and_warn/2" do
157 old_group1 = [:group, :key]
158 old_group2 = [:group, :key2]
159 old_group3 = [:group, :key3]
161 new_group1 = [:another_group, :key4]
162 new_group2 = [:another_group, :key5]
163 new_group3 = [:another_group, :key6]
165 clear_config(old_group1, 1)
166 clear_config(old_group2, 2)
167 clear_config(old_group3, 3)
169 clear_config(new_group1)
170 clear_config(new_group2)
171 clear_config(new_group3)
174 {old_group1, new_group1, "\n error :key"},
175 {old_group2, new_group2, "\n error :key2"},
176 {old_group3, new_group3, "\n error :key3"}
179 assert capture_log(fn ->
180 DeprecationWarnings.move_namespace_and_warn(
184 end) =~ "Warning preface\n error :key\n error :key2\n error :key3"
186 assert Config.get(new_group1) == 1
187 assert Config.get(new_group2) == 2
188 assert Config.get(new_group3) == 3
191 test "check_media_proxy_whitelist_config/0" do
192 clear_config([:media_proxy, :whitelist], ["https://example.com", "example2.com"])
194 assert capture_log(fn ->
195 DeprecationWarnings.check_media_proxy_whitelist_config()
196 end) =~ "Your config is using old format (only domain) for MediaProxy whitelist option"
199 test "check_welcome_message_config/0" do
200 clear_config([:instance, :welcome_user_nickname], "LainChan")
202 assert capture_log(fn ->
203 DeprecationWarnings.check_welcome_message_config()
204 end) =~ "Your config is using the old namespace for Welcome messages configuration."
207 test "check_hellthread_threshold/0" do
208 clear_config([:mrf_hellthread, :threshold], 16)
210 assert capture_log(fn ->
211 DeprecationWarnings.check_hellthread_threshold()
212 end) =~ "You are using the old configuration mechanism for the hellthread filter."
215 test "check_activity_expiration_config/0" do
216 clear_config([Pleroma.ActivityExpiration], enabled: true)
218 assert capture_log(fn ->
219 DeprecationWarnings.check_activity_expiration_config()
220 end) =~ "Your config is using old namespace for activity expiration configuration."
223 test "check_uploders_s3_public_endpoint/0" do
224 clear_config([Pleroma.Uploaders.S3], public_endpoint: "https://fake.amazonaws.com/bucket/")
226 assert capture_log(fn ->
227 DeprecationWarnings.check_uploders_s3_public_endpoint()
229 "Your config is using the old setting for controlling the URL of media uploaded to your S3 bucket."
232 describe "check_gun_pool_options/0" do
233 test "await_up_timeout" do
234 config = Config.get(:connections_pool)
235 clear_config(:connections_pool, Keyword.put(config, :await_up_timeout, 5_000))
237 assert capture_log(fn ->
238 DeprecationWarnings.check_gun_pool_options()
240 "Your config is using old setting `config :pleroma, :connections_pool, await_up_timeout`."
243 test "pool timeout" do
267 clear_config(:pools, old_config)
269 assert capture_log(fn ->
270 DeprecationWarnings.check_gun_pool_options()
272 "Your config is using old setting name `timeout` instead of `recv_timeout` in pool settings"
276 test "check_old_chat_shoutbox/0" do
277 clear_config([:instance, :chat_limit], 1_000)
278 clear_config([:chat, :enabled], true)
280 assert capture_log(fn ->
281 DeprecationWarnings.check_old_chat_shoutbox()
283 "Your config is using the old namespace for the Shoutbox configuration."