Merge branch 'chore/rename-chat' into 'develop'
Rename the non-federating Chat feature to Shout See merge request pleroma/pleroma!2842
This commit is contained in:
commit
a5dce42c85
|
@ -8,6 +8,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
|
- **Breaking:** Configuration: `:chat, enabled` moved to `:shout, enabled` and `:instance, chat_limit` moved to `:shout, limit`
|
||||||
- The `application` metadata returned with statuses is no longer hardcoded. Apps that want to display these details will now have valid data for new posts after this change.
|
- The `application` metadata returned with statuses is no longer hardcoded. Apps that want to display these details will now have valid data for new posts after this change.
|
||||||
- HTTPSecurityPlug now sends a response header to opt out of Google's FLoC (Federated Learning of Cohorts) targeted advertising.
|
- HTTPSecurityPlug now sends a response header to opt out of Google's FLoC (Federated Learning of Cohorts) targeted advertising.
|
||||||
- Email address is now returned if requesting user is the owner of the user account so it can be exposed in client and FE user settings UIs.
|
- Email address is now returned if requesting user is the owner of the user account so it can be exposed in client and FE user settings UIs.
|
||||||
|
|
|
@ -190,7 +190,6 @@
|
||||||
instance_thumbnail: "/instance/thumbnail.jpeg",
|
instance_thumbnail: "/instance/thumbnail.jpeg",
|
||||||
limit: 5_000,
|
limit: 5_000,
|
||||||
description_limit: 5_000,
|
description_limit: 5_000,
|
||||||
chat_limit: 5_000,
|
|
||||||
remote_limit: 100_000,
|
remote_limit: 100_000,
|
||||||
upload_limit: 16_000_000,
|
upload_limit: 16_000_000,
|
||||||
avatar_upload_limit: 2_000_000,
|
avatar_upload_limit: 2_000_000,
|
||||||
|
@ -457,7 +456,9 @@
|
||||||
image_quality: 85,
|
image_quality: 85,
|
||||||
min_content_length: 100 * 1024
|
min_content_length: 100 * 1024
|
||||||
|
|
||||||
config :pleroma, :chat, enabled: true
|
config :pleroma, :shout,
|
||||||
|
enabled: true,
|
||||||
|
limit: 5_000
|
||||||
|
|
||||||
config :phoenix, :format_encoders, json: Jason
|
config :phoenix, :format_encoders, json: Jason
|
||||||
|
|
||||||
|
|
|
@ -544,14 +544,6 @@
|
||||||
5_000
|
5_000
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
%{
|
|
||||||
key: :chat_limit,
|
|
||||||
type: :integer,
|
|
||||||
description: "Character limit of the instance chat messages",
|
|
||||||
suggestions: [
|
|
||||||
5_000
|
|
||||||
]
|
|
||||||
},
|
|
||||||
%{
|
%{
|
||||||
key: :remote_limit,
|
key: :remote_limit,
|
||||||
type: :integer,
|
type: :integer,
|
||||||
|
@ -1183,7 +1175,6 @@
|
||||||
alwaysShowSubjectInput: true,
|
alwaysShowSubjectInput: true,
|
||||||
background: "/static/aurora_borealis.jpg",
|
background: "/static/aurora_borealis.jpg",
|
||||||
collapseMessageWithSubject: false,
|
collapseMessageWithSubject: false,
|
||||||
disableChat: false,
|
|
||||||
greentext: false,
|
greentext: false,
|
||||||
hideFilteredStatuses: false,
|
hideFilteredStatuses: false,
|
||||||
hideMutedPosts: false,
|
hideMutedPosts: false,
|
||||||
|
@ -1230,12 +1221,6 @@
|
||||||
description:
|
description:
|
||||||
"When a message has a subject (aka Content Warning), collapse it by default"
|
"When a message has a subject (aka Content Warning), collapse it by default"
|
||||||
},
|
},
|
||||||
%{
|
|
||||||
key: :disableChat,
|
|
||||||
label: "PleromaFE Chat",
|
|
||||||
type: :boolean,
|
|
||||||
description: "Disables PleromaFE Chat component"
|
|
||||||
},
|
|
||||||
%{
|
%{
|
||||||
key: :greentext,
|
key: :greentext,
|
||||||
label: "Greentext",
|
label: "Greentext",
|
||||||
|
@ -2653,13 +2638,22 @@
|
||||||
},
|
},
|
||||||
%{
|
%{
|
||||||
group: :pleroma,
|
group: :pleroma,
|
||||||
key: :chat,
|
key: :shout,
|
||||||
type: :group,
|
type: :group,
|
||||||
description: "Pleroma chat settings",
|
description: "Pleroma shout settings",
|
||||||
children: [
|
children: [
|
||||||
%{
|
%{
|
||||||
key: :enabled,
|
key: :enabled,
|
||||||
type: :boolean
|
type: :boolean,
|
||||||
|
description: "Enables the backend Shoutbox chat feature."
|
||||||
|
},
|
||||||
|
%{
|
||||||
|
key: :limit,
|
||||||
|
type: :integer,
|
||||||
|
description: "Shout message character limit.",
|
||||||
|
suggestions: [
|
||||||
|
5_000
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
|
@ -8,9 +8,10 @@ For from source installations Pleroma configuration works by first importing the
|
||||||
|
|
||||||
To add configuration to your config file, you can copy it from the base config. The latest version of it can be viewed [here](https://git.pleroma.social/pleroma/pleroma/blob/develop/config/config.exs). You can also use this file if you don't know how an option is supposed to be formatted.
|
To add configuration to your config file, you can copy it from the base config. The latest version of it can be viewed [here](https://git.pleroma.social/pleroma/pleroma/blob/develop/config/config.exs). You can also use this file if you don't know how an option is supposed to be formatted.
|
||||||
|
|
||||||
## :chat
|
## :shout
|
||||||
|
|
||||||
* `enabled` - Enables the backend chat. Defaults to `true`.
|
* `enabled` - Enables the backend Shoutbox chat feature. Defaults to `true`.
|
||||||
|
* `limit` - Shout character limit. Defaults to `5_000`
|
||||||
|
|
||||||
## :instance
|
## :instance
|
||||||
* `name`: The instance’s name.
|
* `name`: The instance’s name.
|
||||||
|
@ -19,7 +20,6 @@ To add configuration to your config file, you can copy it from the base config.
|
||||||
* `description`: The instance’s description, can be seen in nodeinfo and ``/api/v1/instance``.
|
* `description`: The instance’s description, can be seen in nodeinfo and ``/api/v1/instance``.
|
||||||
* `limit`: Posts character limit (CW/Subject included in the counter).
|
* `limit`: Posts character limit (CW/Subject included in the counter).
|
||||||
* `description_limit`: The character limit for image descriptions.
|
* `description_limit`: The character limit for image descriptions.
|
||||||
* `chat_limit`: Character limit of the instance chat messages.
|
|
||||||
* `remote_limit`: Hard character limit beyond which remote posts will be dropped.
|
* `remote_limit`: Hard character limit beyond which remote posts will be dropped.
|
||||||
* `upload_limit`: File size limit of uploads (except for avatar, background, banner).
|
* `upload_limit`: File size limit of uploads (except for avatar, background, banner).
|
||||||
* `avatar_upload_limit`: File size limit of user’s profile avatars.
|
* `avatar_upload_limit`: File size limit of user’s profile avatars.
|
||||||
|
|
|
@ -102,7 +102,7 @@ def start(_type, _args) do
|
||||||
] ++
|
] ++
|
||||||
task_children(@mix_env) ++
|
task_children(@mix_env) ++
|
||||||
dont_run_in_test(@mix_env) ++
|
dont_run_in_test(@mix_env) ++
|
||||||
chat_child(chat_enabled?()) ++
|
shout_child(shout_enabled?()) ++
|
||||||
[Pleroma.Gopher.Server]
|
[Pleroma.Gopher.Server]
|
||||||
|
|
||||||
# See http://elixir-lang.org/docs/stable/elixir/Supervisor.html
|
# See http://elixir-lang.org/docs/stable/elixir/Supervisor.html
|
||||||
|
@ -216,7 +216,7 @@ def build_cachex(type, opts),
|
||||||
type: :worker
|
type: :worker
|
||||||
}
|
}
|
||||||
|
|
||||||
defp chat_enabled?, do: Config.get([:chat, :enabled])
|
defp shout_enabled?, do: Config.get([:shout, :enabled])
|
||||||
|
|
||||||
defp dont_run_in_test(env) when env in [:test, :benchmark], do: []
|
defp dont_run_in_test(env) when env in [:test, :benchmark], do: []
|
||||||
|
|
||||||
|
@ -237,14 +237,14 @@ defp background_migrators do
|
||||||
]
|
]
|
||||||
end
|
end
|
||||||
|
|
||||||
defp chat_child(true) do
|
defp shout_child(true) do
|
||||||
[
|
[
|
||||||
Pleroma.Web.ChatChannel.ChatChannelState,
|
Pleroma.Web.ShoutChannel.ShoutChannelState,
|
||||||
{Phoenix.PubSub, [name: Pleroma.PubSub, adapter: Phoenix.PubSub.PG2]}
|
{Phoenix.PubSub, [name: Pleroma.PubSub, adapter: Phoenix.PubSub.PG2]}
|
||||||
]
|
]
|
||||||
end
|
end
|
||||||
|
|
||||||
defp chat_child(_), do: []
|
defp shout_child(_), do: []
|
||||||
|
|
||||||
defp task_children(:test) do
|
defp task_children(:test) do
|
||||||
[
|
[
|
||||||
|
|
|
@ -16,7 +16,7 @@ defmodule Pleroma.Config.TransferTask do
|
||||||
defp reboot_time_keys,
|
defp reboot_time_keys,
|
||||||
do: [
|
do: [
|
||||||
{:pleroma, :hackney_pools},
|
{:pleroma, :hackney_pools},
|
||||||
{:pleroma, :chat},
|
{:pleroma, :shout},
|
||||||
{:pleroma, Oban},
|
{:pleroma, Oban},
|
||||||
{:pleroma, :rate_limit},
|
{:pleroma, :rate_limit},
|
||||||
{:pleroma, :markup},
|
{:pleroma, :markup},
|
||||||
|
|
|
@ -8,7 +8,7 @@ defmodule Pleroma.Web.UserSocket do
|
||||||
|
|
||||||
## Channels
|
## Channels
|
||||||
# channel "room:*", Pleroma.Web.RoomChannel
|
# channel "room:*", Pleroma.Web.RoomChannel
|
||||||
channel("chat:*", Pleroma.Web.ChatChannel)
|
channel("chat:*", Pleroma.Web.ShoutChannel)
|
||||||
|
|
||||||
# Socket params are passed from the client and can
|
# Socket params are passed from the client and can
|
||||||
# be used to verify and authenticate a user. After
|
# be used to verify and authenticate a user. After
|
||||||
|
@ -22,7 +22,7 @@ defmodule Pleroma.Web.UserSocket do
|
||||||
# See `Phoenix.Token` documentation for examples in
|
# See `Phoenix.Token` documentation for examples in
|
||||||
# performing token verification on connect.
|
# performing token verification on connect.
|
||||||
def connect(%{"token" => token}, socket) do
|
def connect(%{"token" => token}, socket) do
|
||||||
with true <- Pleroma.Config.get([:chat, :enabled]),
|
with true <- Pleroma.Config.get([:shout, :enabled]),
|
||||||
{:ok, user_id} <- Phoenix.Token.verify(socket, "user socket", token, max_age: 84_600),
|
{:ok, user_id} <- Phoenix.Token.verify(socket, "user socket", token, max_age: 84_600),
|
||||||
%User{} = user <- Pleroma.User.get_cached_by_id(user_id) do
|
%User{} = user <- Pleroma.User.get_cached_by_id(user_id) do
|
||||||
{:ok, assign(socket, :user_name, user.nickname)}
|
{:ok, assign(socket, :user_name, user.nickname)}
|
||||||
|
|
|
@ -37,7 +37,7 @@ def render("show.json", _) do
|
||||||
background_upload_limit: Keyword.get(instance, :background_upload_limit),
|
background_upload_limit: Keyword.get(instance, :background_upload_limit),
|
||||||
banner_upload_limit: Keyword.get(instance, :banner_upload_limit),
|
banner_upload_limit: Keyword.get(instance, :banner_upload_limit),
|
||||||
background_image: Pleroma.Web.Endpoint.url() <> Keyword.get(instance, :background_image),
|
background_image: Pleroma.Web.Endpoint.url() <> Keyword.get(instance, :background_image),
|
||||||
chat_limit: Keyword.get(instance, :chat_limit),
|
shout_limit: Config.get([:shout, :limit]),
|
||||||
description_limit: Keyword.get(instance, :description_limit),
|
description_limit: Keyword.get(instance, :description_limit),
|
||||||
pleroma: %{
|
pleroma: %{
|
||||||
metadata: %{
|
metadata: %{
|
||||||
|
@ -69,9 +69,13 @@ def features do
|
||||||
if Config.get([:gopher, :enabled]) do
|
if Config.get([:gopher, :enabled]) do
|
||||||
"gopher"
|
"gopher"
|
||||||
end,
|
end,
|
||||||
if Config.get([:chat, :enabled]) do
|
# backwards compat
|
||||||
|
if Config.get([:shout, :enabled]) do
|
||||||
"chat"
|
"chat"
|
||||||
end,
|
end,
|
||||||
|
if Config.get([:shout, :enabled]) do
|
||||||
|
"shout"
|
||||||
|
end,
|
||||||
if Config.get([:instance, :allow_relay]) do
|
if Config.get([:instance, :allow_relay]) do
|
||||||
"relay"
|
"relay"
|
||||||
end,
|
end,
|
||||||
|
|
|
@ -2,12 +2,12 @@
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Web.ChatChannel do
|
defmodule Pleroma.Web.ShoutChannel do
|
||||||
use Phoenix.Channel
|
use Phoenix.Channel
|
||||||
|
|
||||||
alias Pleroma.User
|
alias Pleroma.User
|
||||||
alias Pleroma.Web.ChatChannel.ChatChannelState
|
|
||||||
alias Pleroma.Web.MastodonAPI.AccountView
|
alias Pleroma.Web.MastodonAPI.AccountView
|
||||||
|
alias Pleroma.Web.ShoutChannel.ShoutChannelState
|
||||||
|
|
||||||
def join("chat:public", _message, socket) do
|
def join("chat:public", _message, socket) do
|
||||||
send(self(), :after_join)
|
send(self(), :after_join)
|
||||||
|
@ -15,18 +15,18 @@ def join("chat:public", _message, socket) do
|
||||||
end
|
end
|
||||||
|
|
||||||
def handle_info(:after_join, socket) do
|
def handle_info(:after_join, socket) do
|
||||||
push(socket, "messages", %{messages: ChatChannelState.messages()})
|
push(socket, "messages", %{messages: ShoutChannelState.messages()})
|
||||||
{:noreply, socket}
|
{:noreply, socket}
|
||||||
end
|
end
|
||||||
|
|
||||||
def handle_in("new_msg", %{"text" => text}, %{assigns: %{user_name: user_name}} = socket) do
|
def handle_in("new_msg", %{"text" => text}, %{assigns: %{user_name: user_name}} = socket) do
|
||||||
text = String.trim(text)
|
text = String.trim(text)
|
||||||
|
|
||||||
if String.length(text) in 1..Pleroma.Config.get([:instance, :chat_limit]) do
|
if String.length(text) in 1..Pleroma.Config.get([:shout, :limit]) do
|
||||||
author = User.get_cached_by_nickname(user_name)
|
author = User.get_cached_by_nickname(user_name)
|
||||||
author_json = AccountView.render("show.json", user: author, skip_visibility_check: true)
|
author_json = AccountView.render("show.json", user: author, skip_visibility_check: true)
|
||||||
|
|
||||||
message = ChatChannelState.add_message(%{text: text, author: author_json})
|
message = ShoutChannelState.add_message(%{text: text, author: author_json})
|
||||||
|
|
||||||
broadcast!(socket, "new_msg", message)
|
broadcast!(socket, "new_msg", message)
|
||||||
end
|
end
|
||||||
|
@ -35,7 +35,7 @@ def handle_in("new_msg", %{"text" => text}, %{assigns: %{user_name: user_name}}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
defmodule Pleroma.Web.ChatChannel.ChatChannelState do
|
defmodule Pleroma.Web.ShoutChannel.ShoutChannelState do
|
||||||
use Agent
|
use Agent
|
||||||
|
|
||||||
@max_messages 20
|
@max_messages 20
|
|
@ -0,0 +1,77 @@
|
||||||
|
defmodule Pleroma.Repo.Migrations.RenameInstanceChat do
|
||||||
|
use Ecto.Migration
|
||||||
|
|
||||||
|
alias Pleroma.ConfigDB
|
||||||
|
|
||||||
|
@instance_params %{group: :pleroma, key: :instance}
|
||||||
|
@shout_params %{group: :pleroma, key: :shout}
|
||||||
|
@chat_params %{group: :pleroma, key: :chat}
|
||||||
|
|
||||||
|
def up do
|
||||||
|
instance_updated? = maybe_update_instance_key(:up) != :noop
|
||||||
|
chat_updated? = maybe_update_chat_key(:up) != :noop
|
||||||
|
|
||||||
|
case Enum.any?([instance_updated?, chat_updated?]) do
|
||||||
|
true -> :ok
|
||||||
|
false -> :noop
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def down do
|
||||||
|
instance_updated? = maybe_update_instance_key(:down) != :noop
|
||||||
|
chat_updated? = maybe_update_chat_key(:down) != :noop
|
||||||
|
|
||||||
|
case Enum.any?([instance_updated?, chat_updated?]) do
|
||||||
|
true -> :ok
|
||||||
|
false -> :noop
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# pleroma.instance.chat_limit -> pleroma.shout.limit
|
||||||
|
defp maybe_update_instance_key(:up) do
|
||||||
|
with %ConfigDB{value: values} <- ConfigDB.get_by_params(@instance_params),
|
||||||
|
limit when is_integer(limit) <- values[:chat_limit] do
|
||||||
|
@shout_params |> Map.put(:value, limit: limit) |> ConfigDB.update_or_create()
|
||||||
|
@instance_params |> Map.put(:subkeys, [":chat_limit"]) |> ConfigDB.delete()
|
||||||
|
else
|
||||||
|
_ ->
|
||||||
|
:noop
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# pleroma.shout.limit -> pleroma.instance.chat_limit
|
||||||
|
defp maybe_update_instance_key(:down) do
|
||||||
|
with %ConfigDB{value: values} <- ConfigDB.get_by_params(@shout_params),
|
||||||
|
limit when is_integer(limit) <- values[:limit] do
|
||||||
|
@instance_params |> Map.put(:value, chat_limit: limit) |> ConfigDB.update_or_create()
|
||||||
|
@shout_params |> Map.put(:subkeys, [":limit"]) |> ConfigDB.delete()
|
||||||
|
else
|
||||||
|
_ ->
|
||||||
|
:noop
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# pleroma.chat.enabled -> pleroma.shout.enabled
|
||||||
|
defp maybe_update_chat_key(:up) do
|
||||||
|
with %ConfigDB{value: values} <- ConfigDB.get_by_params(@chat_params),
|
||||||
|
enabled? when is_boolean(enabled?) <- values[:enabled] do
|
||||||
|
@shout_params |> Map.put(:value, enabled: enabled?) |> ConfigDB.update_or_create()
|
||||||
|
@chat_params |> Map.put(:subkeys, [":enabled"]) |> ConfigDB.delete()
|
||||||
|
else
|
||||||
|
_ ->
|
||||||
|
:noop
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# pleroma.shout.enabled -> pleroma.chat.enabled
|
||||||
|
defp maybe_update_chat_key(:down) do
|
||||||
|
with %ConfigDB{value: values} <- ConfigDB.get_by_params(@shout_params),
|
||||||
|
enabled? when is_boolean(enabled?) <- values[:enabled] do
|
||||||
|
@chat_params |> Map.put(:value, enabled: enabled?) |> ConfigDB.update_or_create()
|
||||||
|
@shout_params |> Map.put(:subkeys, [":enabled"]) |> ConfigDB.delete()
|
||||||
|
else
|
||||||
|
_ ->
|
||||||
|
:noop
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -93,8 +93,8 @@ test "don't restart if no reboot time settings were changed" do
|
||||||
end
|
end
|
||||||
|
|
||||||
test "on reboot time key" do
|
test "on reboot time key" do
|
||||||
clear_config(:chat)
|
clear_config(:shout)
|
||||||
insert(:config, key: :chat, value: [enabled: false])
|
insert(:config, key: :shout, value: [enabled: false])
|
||||||
assert capture_log(fn -> TransferTask.start_link([]) end) =~ "pleroma restarted"
|
assert capture_log(fn -> TransferTask.start_link([]) end) =~ "pleroma restarted"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -105,10 +105,10 @@ test "on reboot time subkey" do
|
||||||
end
|
end
|
||||||
|
|
||||||
test "don't restart pleroma on reboot time key and subkey if there is false flag" do
|
test "don't restart pleroma on reboot time key and subkey if there is false flag" do
|
||||||
clear_config(:chat)
|
clear_config(:shout)
|
||||||
clear_config(Pleroma.Captcha)
|
clear_config(Pleroma.Captcha)
|
||||||
|
|
||||||
insert(:config, key: :chat, value: [enabled: false])
|
insert(:config, key: :shout, value: [enabled: false])
|
||||||
insert(:config, key: Pleroma.Captcha, value: [seconds_valid: 60])
|
insert(:config, key: Pleroma.Captcha, value: [seconds_valid: 60])
|
||||||
|
|
||||||
refute String.contains?(
|
refute String.contains?(
|
||||||
|
|
|
@ -0,0 +1,52 @@
|
||||||
|
defmodule Pleroma.Repo.Migrations.RenameInstanceChatTest do
|
||||||
|
use Pleroma.DataCase
|
||||||
|
import Pleroma.Factory
|
||||||
|
import Pleroma.Tests.Helpers
|
||||||
|
alias Pleroma.ConfigDB
|
||||||
|
|
||||||
|
setup do: clear_config([:instance])
|
||||||
|
setup do: clear_config([:chat])
|
||||||
|
setup_all do: require_migration("20200806175913_rename_instance_chat")
|
||||||
|
|
||||||
|
describe "up/0" do
|
||||||
|
test "migrates chat settings to shout", %{migration: migration} do
|
||||||
|
insert(:config, group: :pleroma, key: :instance, value: [chat_limit: 6000])
|
||||||
|
insert(:config, group: :pleroma, key: :chat, value: [enabled: true])
|
||||||
|
|
||||||
|
assert migration.up() == :ok
|
||||||
|
|
||||||
|
assert ConfigDB.get_by_params(%{group: :pleroma, key: :chat}) == nil
|
||||||
|
assert ConfigDB.get_by_params(%{group: :pleroma, key: :instance}) == nil
|
||||||
|
|
||||||
|
assert ConfigDB.get_by_params(%{group: :pleroma, key: :shout}).value == [
|
||||||
|
limit: 6000,
|
||||||
|
enabled: true
|
||||||
|
]
|
||||||
|
end
|
||||||
|
|
||||||
|
test "does nothing when chat settings are not set", %{migration: migration} do
|
||||||
|
assert migration.up() == :noop
|
||||||
|
assert ConfigDB.get_by_params(%{group: :pleroma, key: :chat}) == nil
|
||||||
|
assert ConfigDB.get_by_params(%{group: :pleroma, key: :shout}) == nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "down/0" do
|
||||||
|
test "migrates shout settings back to instance and chat", %{migration: migration} do
|
||||||
|
insert(:config, group: :pleroma, key: :shout, value: [limit: 42, enabled: true])
|
||||||
|
|
||||||
|
assert migration.down() == :ok
|
||||||
|
|
||||||
|
assert ConfigDB.get_by_params(%{group: :pleroma, key: :chat}).value == [enabled: true]
|
||||||
|
assert ConfigDB.get_by_params(%{group: :pleroma, key: :instance}).value == [chat_limit: 42]
|
||||||
|
assert ConfigDB.get_by_params(%{group: :pleroma, key: :shout}) == nil
|
||||||
|
end
|
||||||
|
|
||||||
|
test "does nothing when shout settings are not set", %{migration: migration} do
|
||||||
|
assert migration.down() == :noop
|
||||||
|
assert ConfigDB.get_by_params(%{group: :pleroma, key: :chat}) == nil
|
||||||
|
assert ConfigDB.get_by_params(%{group: :pleroma, key: :instance}) == nil
|
||||||
|
assert ConfigDB.get_by_params(%{group: :pleroma, key: :shout}) == nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -409,7 +409,7 @@ test "saving config with partial update", %{conn: conn} do
|
||||||
end
|
end
|
||||||
|
|
||||||
test "saving config which need pleroma reboot", %{conn: conn} do
|
test "saving config which need pleroma reboot", %{conn: conn} do
|
||||||
clear_config([:chat, :enabled], true)
|
clear_config([:shout, :enabled], true)
|
||||||
|
|
||||||
assert conn
|
assert conn
|
||||||
|> put_req_header("content-type", "application/json")
|
|> put_req_header("content-type", "application/json")
|
||||||
|
@ -417,7 +417,7 @@ test "saving config which need pleroma reboot", %{conn: conn} do
|
||||||
"/api/pleroma/admin/config",
|
"/api/pleroma/admin/config",
|
||||||
%{
|
%{
|
||||||
configs: [
|
configs: [
|
||||||
%{group: ":pleroma", key: ":chat", value: [%{"tuple" => [":enabled", true]}]}
|
%{group: ":pleroma", key: ":shout", value: [%{"tuple" => [":enabled", true]}]}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
@ -426,7 +426,7 @@ test "saving config which need pleroma reboot", %{conn: conn} do
|
||||||
%{
|
%{
|
||||||
"db" => [":enabled"],
|
"db" => [":enabled"],
|
||||||
"group" => ":pleroma",
|
"group" => ":pleroma",
|
||||||
"key" => ":chat",
|
"key" => ":shout",
|
||||||
"value" => [%{"tuple" => [":enabled", true]}]
|
"value" => [%{"tuple" => [":enabled", true]}]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
@ -454,7 +454,7 @@ test "saving config which need pleroma reboot", %{conn: conn} do
|
||||||
end
|
end
|
||||||
|
|
||||||
test "update setting which need reboot, don't change reboot flag until reboot", %{conn: conn} do
|
test "update setting which need reboot, don't change reboot flag until reboot", %{conn: conn} do
|
||||||
clear_config([:chat, :enabled], true)
|
clear_config([:shout, :enabled], true)
|
||||||
|
|
||||||
assert conn
|
assert conn
|
||||||
|> put_req_header("content-type", "application/json")
|
|> put_req_header("content-type", "application/json")
|
||||||
|
@ -462,7 +462,7 @@ test "update setting which need reboot, don't change reboot flag until reboot",
|
||||||
"/api/pleroma/admin/config",
|
"/api/pleroma/admin/config",
|
||||||
%{
|
%{
|
||||||
configs: [
|
configs: [
|
||||||
%{group: ":pleroma", key: ":chat", value: [%{"tuple" => [":enabled", true]}]}
|
%{group: ":pleroma", key: ":shout", value: [%{"tuple" => [":enabled", true]}]}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
@ -471,7 +471,7 @@ test "update setting which need reboot, don't change reboot flag until reboot",
|
||||||
%{
|
%{
|
||||||
"db" => [":enabled"],
|
"db" => [":enabled"],
|
||||||
"group" => ":pleroma",
|
"group" => ":pleroma",
|
||||||
"key" => ":chat",
|
"key" => ":shout",
|
||||||
"value" => [%{"tuple" => [":enabled", true]}]
|
"value" => [%{"tuple" => [":enabled", true]}]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
|
@ -38,7 +38,7 @@ test "get instance information", %{conn: conn} do
|
||||||
"background_upload_limit" => _,
|
"background_upload_limit" => _,
|
||||||
"banner_upload_limit" => _,
|
"banner_upload_limit" => _,
|
||||||
"background_image" => from_config_background,
|
"background_image" => from_config_background,
|
||||||
"chat_limit" => _,
|
"shout_limit" => _,
|
||||||
"description_limit" => _
|
"description_limit" => _
|
||||||
} = result
|
} = result
|
||||||
|
|
||||||
|
|
|
@ -2,9 +2,9 @@
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Web.ChatChannelTest do
|
defmodule Pleroma.Web.ShoutChannelTest do
|
||||||
use Pleroma.Web.ChannelCase
|
use Pleroma.Web.ChannelCase
|
||||||
alias Pleroma.Web.ChatChannel
|
alias Pleroma.Web.ShoutChannel
|
||||||
alias Pleroma.Web.UserSocket
|
alias Pleroma.Web.UserSocket
|
||||||
|
|
||||||
import Pleroma.Factory
|
import Pleroma.Factory
|
||||||
|
@ -14,7 +14,7 @@ defmodule Pleroma.Web.ChatChannelTest do
|
||||||
|
|
||||||
{:ok, _, socket} =
|
{:ok, _, socket} =
|
||||||
socket(UserSocket, "", %{user_name: user.nickname})
|
socket(UserSocket, "", %{user_name: user.nickname})
|
||||||
|> subscribe_and_join(ChatChannel, "chat:public")
|
|> subscribe_and_join(ShoutChannel, "shout:public")
|
||||||
|
|
||||||
{:ok, socket: socket}
|
{:ok, socket: socket}
|
||||||
end
|
end
|
||||||
|
@ -25,7 +25,7 @@ test "it broadcasts a message", %{socket: socket} do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "message lengths" do
|
describe "message lengths" do
|
||||||
setup do: clear_config([:instance, :chat_limit])
|
setup do: clear_config([:shout, :limit])
|
||||||
|
|
||||||
test "it ignores messages of length zero", %{socket: socket} do
|
test "it ignores messages of length zero", %{socket: socket} do
|
||||||
push(socket, "new_msg", %{"text" => ""})
|
push(socket, "new_msg", %{"text" => ""})
|
||||||
|
@ -33,7 +33,7 @@ test "it ignores messages of length zero", %{socket: socket} do
|
||||||
end
|
end
|
||||||
|
|
||||||
test "it ignores messages above a certain length", %{socket: socket} do
|
test "it ignores messages above a certain length", %{socket: socket} do
|
||||||
clear_config([:instance, :chat_limit], 2)
|
clear_config([:shout, :limit], 2)
|
||||||
push(socket, "new_msg", %{"text" => "123"})
|
push(socket, "new_msg", %{"text" => "123"})
|
||||||
refute_broadcast("new_msg", %{text: "123"})
|
refute_broadcast("new_msg", %{text: "123"})
|
||||||
end
|
end
|
Loading…
Reference in New Issue