Merge branch 'develop' of git.pleroma.social:pleroma/pleroma into release/2.8.0
This commit is contained in:
commit
0d8c2827e1
1
changelog.d/activity-pub-metadata.add
Normal file
1
changelog.d/activity-pub-metadata.add
Normal file
@ -0,0 +1 @@
|
||||
Add metadata provider for ActivityPub alternate links
|
1
changelog.d/atom-tag.change
Normal file
1
changelog.d/atom-tag.change
Normal file
@ -0,0 +1 @@
|
||||
Metadata: Do not include .atom feed links for remote accounts
|
1
changelog.d/bump-lexbor.change
Normal file
1
changelog.d/bump-lexbor.change
Normal file
@ -0,0 +1 @@
|
||||
- Bumped `fast_html` to v2.3.0, which notably allows to use system-installed lexbor with passing `WITH_SYSTEM_LEXBOR=1` environment variable at build-time
|
1
changelog.d/dedupe-sharding.change
Normal file
1
changelog.d/dedupe-sharding.change
Normal file
@ -0,0 +1 @@
|
||||
Dedupe upload filter now uses a three-level sharding directory structure
|
1
changelog.d/mastodon-websocket.fix
Normal file
1
changelog.d/mastodon-websocket.fix
Normal file
@ -0,0 +1 @@
|
||||
Fix Mastodon WebSocket authentication
|
1
changelog.d/se-opt-out.change
Normal file
1
changelog.d/se-opt-out.change
Normal file
@ -0,0 +1 @@
|
||||
Fix nonexisting user will not generate metadata for search engine opt-out
|
1
changelog.d/token-view-scopes.add
Normal file
1
changelog.d/token-view-scopes.add
Normal file
@ -0,0 +1 @@
|
||||
Include session scopes in TokenView
|
1
changelog.d/vapid_keyword_fallback.fix
Normal file
1
changelog.d/vapid_keyword_fallback.fix
Normal file
@ -0,0 +1 @@
|
||||
Make vapid_config return empty array, fixing preloading for instances without push notifications configured
|
@ -17,8 +17,16 @@ defmodule Pleroma.Upload.Filter.Dedupe do
|
||||
|> Base.encode16(case: :lower)
|
||||
|
||||
filename = shasum <> "." <> extension
|
||||
{:ok, :filtered, %Upload{upload | id: shasum, path: filename}}
|
||||
|
||||
{:ok, :filtered, %Upload{upload | id: shasum, path: shard_path(filename)}}
|
||||
end
|
||||
|
||||
def filter(_), do: {:ok, :noop}
|
||||
|
||||
@spec shard_path(String.t()) :: String.t()
|
||||
def shard_path(
|
||||
<<a::binary-size(2), b::binary-size(2), c::binary-size(2), _::binary>> = filename
|
||||
) do
|
||||
Path.join([a, b, c, filename])
|
||||
end
|
||||
end
|
||||
|
@ -14,6 +14,7 @@ defmodule Pleroma.Web.Endpoint do
|
||||
websocket: [
|
||||
path: "/",
|
||||
compress: false,
|
||||
connect_info: [:sec_websocket_protocol],
|
||||
error_handler: {Pleroma.Web.MastodonAPI.WebsocketHandler, :handle_error, []},
|
||||
fullsweep_after: 20
|
||||
]
|
||||
|
@ -46,7 +46,7 @@ defmodule Pleroma.Web.Fallback.RedirectController do
|
||||
redirector_with_meta(conn, %{user: user})
|
||||
else
|
||||
nil ->
|
||||
redirector(conn, params)
|
||||
redirector_with_meta(conn, Map.delete(params, "maybe_nickname_or_id"))
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -15,11 +15,11 @@ defmodule Pleroma.Web.Feed.UserController do
|
||||
|
||||
action_fallback(:errors)
|
||||
|
||||
def feed_redirect(%{assigns: %{format: "html"}} = conn, %{"nickname" => nickname}) do
|
||||
def feed_redirect(%{assigns: %{format: "html"}} = conn, %{"nickname" => nickname} = params) do
|
||||
with {_, %User{} = user} <- {:fetch_user, User.get_cached_by_nickname_or_id(nickname)} do
|
||||
Pleroma.Web.Fallback.RedirectController.redirector_with_meta(conn, %{user: user})
|
||||
else
|
||||
_ -> Pleroma.Web.Fallback.RedirectController.redirector(conn, nil)
|
||||
_ -> Pleroma.Web.Fallback.RedirectController.redirector_with_meta(conn, params)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -22,7 +22,7 @@ defmodule Pleroma.Web.MastodonAPI.WebsocketHandler do
|
||||
# This only prepares the connection and is not in the process yet
|
||||
@impl Phoenix.Socket.Transport
|
||||
def connect(%{params: params} = transport_info) do
|
||||
with access_token <- Map.get(params, "access_token"),
|
||||
with access_token <- find_access_token(transport_info),
|
||||
{:ok, user, oauth_token} <- authenticate_request(access_token),
|
||||
{:ok, topic} <-
|
||||
Streamer.get_topic(params["stream"], user, oauth_token, params) do
|
||||
@ -244,4 +244,13 @@ defmodule Pleroma.Web.MastodonAPI.WebsocketHandler do
|
||||
def handle_error(conn, _reason) do
|
||||
Plug.Conn.send_resp(conn, 404, "Not Found")
|
||||
end
|
||||
|
||||
defp find_access_token(%{
|
||||
connect_info: %{sec_websocket_protocol: [token]}
|
||||
}),
|
||||
do: token
|
||||
|
||||
defp find_access_token(%{params: %{"access_token" => token}}), do: token
|
||||
|
||||
defp find_access_token(_), do: nil
|
||||
end
|
||||
|
@ -7,6 +7,7 @@ defmodule Pleroma.Web.Metadata do
|
||||
|
||||
def build_tags(params) do
|
||||
providers = [
|
||||
Pleroma.Web.Metadata.Providers.ActivityPub,
|
||||
Pleroma.Web.Metadata.Providers.RelMe,
|
||||
Pleroma.Web.Metadata.Providers.RestrictIndexing
|
||||
| activated_providers()
|
||||
|
22
lib/pleroma/web/metadata/providers/activity_pub.ex
Normal file
22
lib/pleroma/web/metadata/providers/activity_pub.ex
Normal file
@ -0,0 +1,22 @@
|
||||
# Pleroma: A lightweight social networking server
|
||||
# Copyright © 2017-2024 Pleroma Authors <https://pleroma.social/>
|
||||
# SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
defmodule Pleroma.Web.Metadata.Providers.ActivityPub do
|
||||
alias Pleroma.Web.Metadata.Providers.Provider
|
||||
|
||||
@behaviour Provider
|
||||
|
||||
@impl Provider
|
||||
def build_tags(%{object: %{data: %{"id" => object_id}}}) do
|
||||
[{:link, [rel: "alternate", type: "application/activity+json", href: object_id], []}]
|
||||
end
|
||||
|
||||
@impl Provider
|
||||
def build_tags(%{user: user}) do
|
||||
[{:link, [rel: "alternate", type: "application/activity+json", href: user.ap_id], []}]
|
||||
end
|
||||
|
||||
@impl Provider
|
||||
def build_tags(_), do: []
|
||||
end
|
@ -10,7 +10,7 @@ defmodule Pleroma.Web.Metadata.Providers.Feed do
|
||||
@behaviour Provider
|
||||
|
||||
@impl Provider
|
||||
def build_tags(%{user: user}) do
|
||||
def build_tags(%{user: %{local: true} = user}) do
|
||||
[
|
||||
{:link,
|
||||
[
|
||||
@ -20,4 +20,7 @@ defmodule Pleroma.Web.Metadata.Providers.Feed do
|
||||
], []}
|
||||
]
|
||||
end
|
||||
|
||||
@impl Provider
|
||||
def build_tags(_), do: []
|
||||
end
|
||||
|
@ -67,6 +67,9 @@ defmodule Pleroma.Web.Metadata.Providers.OpenGraph do
|
||||
end
|
||||
end
|
||||
|
||||
@impl Provider
|
||||
def build_tags(_), do: []
|
||||
|
||||
defp build_attachments(%{data: %{"attachment" => attachments}}) do
|
||||
Enum.reduce(attachments, [], fn attachment, acc ->
|
||||
rendered_tags =
|
||||
|
@ -20,6 +20,9 @@ defmodule Pleroma.Web.Metadata.Providers.RelMe do
|
||||
end)
|
||||
end
|
||||
|
||||
@impl Provider
|
||||
def build_tags(_), do: []
|
||||
|
||||
defp append_fields_tag(bio, fields) do
|
||||
fields
|
||||
|> Enum.reduce(bio, fn %{"value" => v}, res -> res <> v end)
|
||||
|
@ -44,6 +44,9 @@ defmodule Pleroma.Web.Metadata.Providers.TwitterCard do
|
||||
end
|
||||
end
|
||||
|
||||
@impl Provider
|
||||
def build_tags(_), do: []
|
||||
|
||||
defp title_tag(user) do
|
||||
{:meta, [name: "twitter:title", content: Utils.user_name_string(user)], []}
|
||||
end
|
||||
|
@ -20,7 +20,7 @@ defmodule Pleroma.Web.Push do
|
||||
end
|
||||
|
||||
def vapid_config do
|
||||
Application.get_env(:web_push_encryption, :vapid_details, nil)
|
||||
Application.get_env(:web_push_encryption, :vapid_details, [])
|
||||
end
|
||||
|
||||
def enabled, do: match?([subject: _, public_key: _, private_key: _], vapid_config())
|
||||
|
@ -15,7 +15,8 @@ defmodule Pleroma.Web.TwitterAPI.TokenView do
|
||||
%{
|
||||
id: token_entry.id,
|
||||
valid_until: token_entry.valid_until,
|
||||
app_name: token_entry.app.client_name
|
||||
app_name: token_entry.app.client_name,
|
||||
scopes: token_entry.scopes
|
||||
}
|
||||
end
|
||||
end
|
||||
|
3
mix.exs
3
mix.exs
@ -132,7 +132,8 @@ defmodule Pleroma.Mixfile do
|
||||
# Type `mix help deps` for examples and options.
|
||||
defp deps do
|
||||
[
|
||||
{:phoenix, "~> 1.7.3"},
|
||||
{:phoenix,
|
||||
git: "https://github.com/feld/phoenix", branch: "v1.7.14-websocket-headers", override: true},
|
||||
{:phoenix_ecto, "~> 4.4"},
|
||||
{:ecto_sql, "~> 3.10"},
|
||||
{:ecto_enum, "~> 1.4"},
|
||||
|
4
mix.lock
4
mix.lock
@ -50,7 +50,7 @@
|
||||
"ex_syslogger": {:hex, :ex_syslogger, "1.5.2", "72b6aa2d47a236e999171f2e1ec18698740f40af0bd02c8c650bf5f1fd1bac79", [:mix], [{:poison, ">= 1.5.0", [hex: :poison, repo: "hexpm", optional: true]}, {:syslog, "~> 1.1.0", [hex: :syslog, repo: "hexpm", optional: false]}], "hexpm", "ab9fab4136dbc62651ec6f16fa4842f10cf02ab4433fa3d0976c01be99398399"},
|
||||
"exile": {:hex, :exile, "0.10.0", "b69e2d27a9af670b0f0a0898addca0eda78f6f5ba95ccfbc9bc6ccdd04925436", [:make, :mix], [{:elixir_make, "~> 0.6", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "c62ee8fee565b5ac4a898d0dcd58d2b04fb5eec1655af1ddcc9eb582c6732c33"},
|
||||
"expo": {:hex, :expo, "0.5.1", "249e826a897cac48f591deba863b26c16682b43711dd15ee86b92f25eafd96d9", [:mix], [], "hexpm", "68a4233b0658a3d12ee00d27d37d856b1ba48607e7ce20fd376958d0ba6ce92b"},
|
||||
"fast_html": {:hex, :fast_html, "2.2.0", "6c5ef1be087a4ed613b0379c13f815c4d11742b36b67bb52cee7859847c84520", [:make, :mix], [{:elixir_make, "~> 0.4", [hex: :elixir_make, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 0.2.0", [hex: :nimble_pool, repo: "hexpm", optional: false]}], "hexpm", "064c4f23b4a6168f9187dac8984b056f2c531bb0787f559fd6a8b34b38aefbae"},
|
||||
"fast_html": {:hex, :fast_html, "2.3.0", "08c1d8ead840dd3060ba02c761bed9f37f456a1ddfe30bcdcfee8f651cec06a6", [:make, :mix], [{:elixir_make, "~> 0.4", [hex: :elixir_make, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 0.2.0", [hex: :nimble_pool, repo: "hexpm", optional: false]}], "hexpm", "f18e3c7668f82d3ae0b15f48d48feeb257e28aa5ab1b0dbf781c7312e5da029d"},
|
||||
"fast_sanitize": {:hex, :fast_sanitize, "0.2.3", "67b93dfb34e302bef49fec3aaab74951e0f0602fd9fa99085987af05bd91c7a5", [:mix], [{:fast_html, "~> 2.0", [hex: :fast_html, repo: "hexpm", optional: false]}, {:plug, "~> 1.8", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "e8ad286d10d0386e15d67d0ee125245ebcfbc7d7290b08712ba9013c8c5e56e2"},
|
||||
"file_system": {:hex, :file_system, "0.2.10", "fb082005a9cd1711c05b5248710f8826b02d7d1784e7c3451f9c1231d4fc162d", [:mix], [], "hexpm", "41195edbfb562a593726eda3b3e8b103a309b733ad25f3d642ba49696bf715dc"},
|
||||
"finch": {:hex, :finch, "0.18.0", "944ac7d34d0bd2ac8998f79f7a811b21d87d911e77a786bc5810adb75632ada4", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: false]}, {:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mint, "~> 1.3", [hex: :mint, repo: "hexpm", optional: false]}, {:nimble_options, "~> 0.4 or ~> 1.0", [hex: :nimble_options, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 0.2.6 or ~> 1.0", [hex: :nimble_pool, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "69f5045b042e531e53edc2574f15e25e735b522c37e2ddb766e15b979e03aa65"},
|
||||
@ -98,7 +98,7 @@
|
||||
"open_api_spex": {:hex, :open_api_spex, "3.18.2", "8c855e83bfe8bf81603d919d6e892541eafece3720f34d1700b58024dadde247", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:plug, "~> 1.7", [hex: :plug, repo: "hexpm", optional: false]}, {:poison, "~> 3.0 or ~> 4.0 or ~> 5.0", [hex: :poison, repo: "hexpm", optional: true]}, {:ymlr, "~> 2.0 or ~> 3.0 or ~> 4.0", [hex: :ymlr, repo: "hexpm", optional: true]}], "hexpm", "aa3e6dcfc0ad6a02596b2172662da21c9dd848dac145ea9e603f54e3d81b8d2b"},
|
||||
"parse_trans": {:hex, :parse_trans, "3.4.1", "6e6aa8167cb44cc8f39441d05193be6e6f4e7c2946cb2759f015f8c56b76e5ff", [:rebar3], [], "hexpm", "620a406ce75dada827b82e453c19cf06776be266f5a67cff34e1ef2cbb60e49a"},
|
||||
"pbkdf2_elixir": {:hex, :pbkdf2_elixir, "1.2.1", "9cbe354b58121075bd20eb83076900a3832324b7dd171a6895fab57b6bb2752c", [:mix], [{:comeonin, "~> 5.3", [hex: :comeonin, repo: "hexpm", optional: false]}], "hexpm", "d3b40a4a4630f0b442f19eca891fcfeeee4c40871936fed2f68e1c4faa30481f"},
|
||||
"phoenix": {:hex, :phoenix, "1.7.14", "a7d0b3f1bc95987044ddada111e77bd7f75646a08518942c72a8440278ae7825", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.7", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:websock_adapter, "~> 0.5.3", [hex: :websock_adapter, repo: "hexpm", optional: false]}], "hexpm", "c7859bc56cc5dfef19ecfc240775dae358cbaa530231118a9e014df392ace61a"},
|
||||
"phoenix": {:git, "https://github.com/feld/phoenix", "fb6dc76c657422e49600896c64aab4253fceaef6", [branch: "v1.7.14-websocket-headers"]},
|
||||
"phoenix_ecto": {:hex, :phoenix_ecto, "4.4.3", "86e9878f833829c3f66da03d75254c155d91d72a201eb56ae83482328dc7ca93", [:mix], [{:ecto, "~> 3.5", [hex: :ecto, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.14.2 or ~> 3.0 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "d36c401206f3011fefd63d04e8ef626ec8791975d9d107f9a0817d426f61ac07"},
|
||||
"phoenix_html": {:hex, :phoenix_html, "3.3.4", "42a09fc443bbc1da37e372a5c8e6755d046f22b9b11343bf885067357da21cb3", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "0249d3abec3714aff3415e7ee3d9786cb325be3151e6c4b3021502c585bf53fb"},
|
||||
"phoenix_live_dashboard": {:hex, :phoenix_live_dashboard, "0.8.3", "7ff51c9b6609470f681fbea20578dede0e548302b0c8bdf338b5a753a4f045bf", [:mix], [{:ecto, "~> 3.6.2 or ~> 3.7", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_mysql_extras, "~> 0.5", [hex: :ecto_mysql_extras, repo: "hexpm", optional: true]}, {:ecto_psql_extras, "~> 0.7", [hex: :ecto_psql_extras, repo: "hexpm", optional: true]}, {:ecto_sqlite3_extras, "~> 1.1.7 or ~> 1.2.0", [hex: :ecto_sqlite3_extras, repo: "hexpm", optional: true]}, {:mime, "~> 1.6 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 0.19 or ~> 1.0", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}, {:telemetry_metrics, "~> 0.6 or ~> 1.0", [hex: :telemetry_metrics, repo: "hexpm", optional: false]}], "hexpm", "f9470a0a8bae4f56430a23d42f977b5a6205fdba6559d76f932b876bfaec652d"},
|
||||
|
@ -3,14 +3,16 @@ msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-07-22 02:09+0300\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: Automatically generated\n"
|
||||
"Language-Team: none\n"
|
||||
"PO-Revision-Date: 2024-10-13 21:03+0000\n"
|
||||
"Last-Translator: Codimp <contact@lithio.fr>\n"
|
||||
"Language-Team: French <https://translate.pleroma.social/projects/pleroma/"
|
||||
"pleroma-backend-domain-config_descriptions/fr/>\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Translate Toolkit 3.7.2\n"
|
||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||
"X-Generator: Weblate 4.13.1\n"
|
||||
|
||||
## This file is a PO Template file.
|
||||
##
|
||||
@ -21,7 +23,6 @@ msgstr ""
|
||||
## Run "mix gettext.extract" to bring this file up to
|
||||
## date. Leave "msgstr"s empty as changing them here has no
|
||||
## effect: edit them in PO (.po) files instead.
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :esshd"
|
||||
@ -32,25 +33,30 @@ msgstr ""
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :logger"
|
||||
msgid "Logger-related settings"
|
||||
msgstr ""
|
||||
msgstr "Paramètres liés à la journalisation"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :mime"
|
||||
msgid "Mime Types settings"
|
||||
msgstr ""
|
||||
msgstr "Paramètres des types Mime"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma"
|
||||
msgid "Allows setting a token that can be used to authenticate requests with admin privileges without a normal user account token. Append the `admin_token` parameter to requests to utilize it. (Please reconsider using HTTP Basic Auth or OAuth-based authentication if possible)"
|
||||
msgstr ""
|
||||
"Permet de configurer un jeton qui peut être utilisé pour authentifier les "
|
||||
"requêtes avec des privilèges administrateurs sans utiliser un jeton de "
|
||||
"compte utilisateur standard. Pour l'utiliser, ajoutez le paramètre "
|
||||
"`admin_token`aux requêtes. (Vous devriez utiliser l'authentification HTTP "
|
||||
"Basic ou OAuth à la place si vous le pouvez)"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma"
|
||||
msgid "Authenticator"
|
||||
msgstr ""
|
||||
msgstr "Authentifieur"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
@ -62,7 +68,7 @@ msgstr ""
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :cors_plug"
|
||||
msgid "CORS plug config"
|
||||
msgstr ""
|
||||
msgstr "Configuration du plug CORS"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
@ -74,25 +80,25 @@ msgstr ""
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :logger"
|
||||
msgid "Logger"
|
||||
msgstr ""
|
||||
msgstr "Journaliseur"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :mime"
|
||||
msgid "Mime Types"
|
||||
msgstr ""
|
||||
msgstr "Types Mime"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma"
|
||||
msgid "Pleroma Admin Token"
|
||||
msgstr ""
|
||||
msgstr "Jeton Administrateur Pleroma"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config label at :pleroma"
|
||||
msgid "Pleroma Authenticator"
|
||||
msgstr ""
|
||||
msgstr "Authentifieur Pleroma"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
@ -104,103 +110,111 @@ msgstr ""
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :logger-:console"
|
||||
msgid "Console logger settings"
|
||||
msgstr ""
|
||||
msgstr "Paramètres de journalisation de la console"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :logger-:ex_syslogger"
|
||||
msgid "ExSyslogger-related settings"
|
||||
msgstr ""
|
||||
msgstr "Paramètres liés à ExSyslogger"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:activitypub"
|
||||
msgid "ActivityPub-related settings"
|
||||
msgstr ""
|
||||
msgstr "Paramètres liés à ActivityPub"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:assets"
|
||||
msgid "This section configures assets to be used with various frontends. Currently the only option relates to mascots on the mastodon frontend"
|
||||
msgstr ""
|
||||
"Cette section configure les annexes (assets) à utiliser avec divers "
|
||||
"frontaux. La seule option est actuellement liée au mascottes du frontal "
|
||||
"mastodon"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:auth"
|
||||
msgid "Authentication / authorization settings"
|
||||
msgstr ""
|
||||
msgstr "Paramètres d'authentification/autorisations"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:connections_pool"
|
||||
msgid "Advanced settings for `Gun` connections pool"
|
||||
msgstr ""
|
||||
msgstr "Paramètres avancés pour le bac (pool) de connexions `Gun`"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:email_notifications"
|
||||
msgid "Email notifications settings"
|
||||
msgstr ""
|
||||
msgstr "Paramètres de notification par email"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:features"
|
||||
msgid "Customizable features"
|
||||
msgstr ""
|
||||
msgstr "Fonctionnalités personnalisables"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:feed"
|
||||
msgid "Configure feed rendering"
|
||||
msgstr ""
|
||||
msgstr "Configurer le rendu des flux"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:frontend_configurations"
|
||||
msgid "This form can be used to configure a keyword list that keeps the configuration data for any kind of frontend. By default, settings for pleroma_fe are configured. If you want to add your own configuration your settings all fields must be complete."
|
||||
msgstr ""
|
||||
"Ce formulaire peut être utilisé pour configurer une liste de clés (keyword) "
|
||||
"qui contiennent les données de configuration pour tout types de frontaux. "
|
||||
"Par défaut, les paramètres pour pleroma_fe sont configurés. Si vous voulez "
|
||||
"ajouter vos propres paramètres de configurations, tout les champs doivent "
|
||||
"être remplis."
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:frontends"
|
||||
msgid "Installed frontends management"
|
||||
msgstr ""
|
||||
msgstr "Gestion des frontaux installés"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:gopher"
|
||||
msgid "Gopher settings"
|
||||
msgstr ""
|
||||
msgstr "Paramètres Gopher"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:hackney_pools"
|
||||
msgid "Advanced settings for `Hackney` connections pools"
|
||||
msgstr ""
|
||||
msgstr "Paramètres avancés pour les bacs (pool) de connexions `Hackney`"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:http"
|
||||
msgid "HTTP settings"
|
||||
msgstr ""
|
||||
msgstr "Paramètres HTTP"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:http_security"
|
||||
msgid "HTTP security settings"
|
||||
msgstr ""
|
||||
msgstr "Paramètres de sécurité HTTP"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:instance"
|
||||
msgid "Instance-related settings"
|
||||
msgstr ""
|
||||
msgstr "Paramètres liés à l'instance"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:instances_favicons"
|
||||
msgid "Control favicons for instances"
|
||||
msgstr ""
|
||||
msgstr "Gère les favicons des instances"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
@ -212,151 +226,177 @@ msgstr ""
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:majic_pool"
|
||||
msgid "Majic/libmagic configuration"
|
||||
msgstr ""
|
||||
msgstr "Configuration de majic/libmagic"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:manifest"
|
||||
msgid "This section describe PWA manifest instance-specific values. Currently this option relate only for MastoFE."
|
||||
msgstr ""
|
||||
"Cette section décrit les valeurs spécifique à l'instance du manifeste PWA. "
|
||||
"Actuellement, cette option ne concerne que MastoFE."
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:media_preview_proxy"
|
||||
msgid "Media preview proxy"
|
||||
msgstr ""
|
||||
msgstr "Proxy de prévisualisation média"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:media_proxy"
|
||||
msgid "Media proxy"
|
||||
msgstr ""
|
||||
msgstr "Proxy média"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:modules"
|
||||
msgid "Custom Runtime Modules"
|
||||
msgstr ""
|
||||
msgstr "Modules Runtime Personalisés"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:mrf"
|
||||
msgid "General MRF settings"
|
||||
msgstr ""
|
||||
msgstr "Paramètres généraux MRF"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:mrf_activity_expiration"
|
||||
msgid "Adds automatic expiration to all local activities"
|
||||
msgstr ""
|
||||
msgstr "Ajoute une expiration automatique à toutes les activités locales"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:mrf_follow_bot"
|
||||
msgid "Automatically follows newly discovered accounts."
|
||||
msgstr ""
|
||||
msgstr "Suivre automatiquement les comptes venant d'être découverts."
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:mrf_hashtag"
|
||||
msgid "Reject, TWKN-remove or Set-Sensitive messsages with specific hashtags (without the leading #)\n\nNote: This MRF Policy is always enabled, if you want to disable it you have to set empty lists.\n"
|
||||
msgstr ""
|
||||
"Rejeter, Enlever de TWKN ou marquer comme contenu sensible les messages avec "
|
||||
"des mots-croisillons (sans mettre le # du début)\n"
|
||||
"\n"
|
||||
"Note: cette politique MRF est toujours activée. Si vous voulez la "
|
||||
"désactiver, vous devez configurer des listes vides.\n"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:mrf_hellthread"
|
||||
msgid "Block messages with excessive user mentions"
|
||||
msgstr ""
|
||||
msgstr "Bloquer les messages avec un nombre excessif de mentions"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:mrf_keyword"
|
||||
msgid "Reject or Word-Replace messages matching a keyword or [Regex](https://hexdocs.pm/elixir/Regex.html)."
|
||||
msgstr ""
|
||||
"Rejeter ou remplacer les mots des messages qui correspondent à un mot clef "
|
||||
"ou à une [expression rationnelle (Regex)](https://hexdocs.pm/elixir/Regex."
|
||||
"html)."
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:mrf_mention"
|
||||
msgid "Block messages which mention a specific user"
|
||||
msgstr ""
|
||||
msgstr "Bloquer les messages mentionnant un utilisateur particulier"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:mrf_normalize_markup"
|
||||
msgid "MRF NormalizeMarkup settings. Scrub configured hypertext markup."
|
||||
msgstr ""
|
||||
"Paramètres de normalisation MRF. Balaie les balises hypertextes configurées."
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:mrf_object_age"
|
||||
msgid "Rejects or delists posts based on their timestamp deviance from your server's clock."
|
||||
msgstr ""
|
||||
"Rejette ou retire des listes les messages selon l'écart entre leur heure et "
|
||||
"l'horloge de votre serveur."
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:mrf_rejectnonpublic"
|
||||
msgid "RejectNonPublic drops posts with non-public visibility settings."
|
||||
msgstr ""
|
||||
"RejectNonPublic enlève les messages avec des paramètres de visibilité non-"
|
||||
"publics."
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:mrf_simple"
|
||||
msgid "Simple ingress policies"
|
||||
msgstr ""
|
||||
msgstr "Politiques simples pour entrants"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:mrf_steal_emoji"
|
||||
msgid "Steals emojis from selected instances when it sees them."
|
||||
msgstr ""
|
||||
msgstr "Vole les emojis des instances sélectionnées quand il les voit."
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:mrf_subchain"
|
||||
msgid "This policy processes messages through an alternate pipeline when a given message matches certain criteria. All criteria are configured as a map of regular expressions to lists of policy modules."
|
||||
msgstr ""
|
||||
"Cette politique traite les messages à travers un tuyau séparé lorsqu'un "
|
||||
"message donné correspond à certain critères. Chaque critère est configuré "
|
||||
"comme une correspondance entre une expression rationnelle et une liste de "
|
||||
"modules de politiques."
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:mrf_vocabulary"
|
||||
msgid "Filter messages which belong to certain activity vocabularies"
|
||||
msgstr ""
|
||||
"Filtrer les messages qui correspondent à certain vocabulaires d'activités"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:oauth2"
|
||||
msgid "Configure OAuth 2 provider capabilities"
|
||||
msgstr ""
|
||||
msgstr "Configurer les capacités du fournisseur OAuth 2"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:pools"
|
||||
msgid "Advanced settings for `Gun` workers pools"
|
||||
msgstr ""
|
||||
msgstr "Paramètres avancés pour les bacs (pools) de travailleurs `Gun`"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:populate_hashtags_table"
|
||||
msgid "`populate_hashtags_table` background migration settings"
|
||||
msgstr ""
|
||||
msgstr "Paramètres de migration en arrière-plan `populate_hashtags_table`"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:rate_limit"
|
||||
msgid "Rate limit settings. This is an advanced feature enabled only for :authentication by default."
|
||||
msgstr ""
|
||||
"Paramètres de limites par secondes. C'est une fonctionnalité avancée qui, "
|
||||
"par défaut, n'est activée que pour :authentication."
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:restrict_unauthenticated"
|
||||
msgid "Disallow viewing timelines, user profiles and statuses for unauthenticated users."
|
||||
msgstr ""
|
||||
"Empêche de regarder les flux, les profils utilisateurs et les status pour "
|
||||
"les utilisateurs non-authentifiés."
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:rich_media"
|
||||
msgid "If enabled the instance will parse metadata from attached links to generate link previews"
|
||||
msgstr ""
|
||||
"Si activé, l'instance interprétera les métadonnées des liens joins pour "
|
||||
"générer les prévisualisations de liens"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
@ -369,6 +409,8 @@ msgstr ""
|
||||
msgctxt "config description at :pleroma-:static_fe"
|
||||
msgid "Render profiles and posts using server-generated HTML that is viewable without using JavaScript"
|
||||
msgstr ""
|
||||
"Rendre les profils et les status en utilisant du HTML généré par le serveur "
|
||||
"qui ne nécessitera pas de JavaScript"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
@ -380,7 +422,7 @@ msgstr ""
|
||||
#, elixir-autogen, elixir-format
|
||||
msgctxt "config description at :pleroma-:uri_schemes"
|
||||
msgid "URI schemes related settings"
|
||||
msgstr ""
|
||||
msgstr "Paramètres liés au schémas d'URI"
|
||||
|
||||
#: lib/pleroma/docs/translator.ex:5
|
||||
#, elixir-autogen, elixir-format
|
||||
|
@ -268,6 +268,17 @@ defmodule Pleroma.Integration.MastodonWebsocketTest do
|
||||
end)
|
||||
end
|
||||
|
||||
test "accepts valid token on Sec-WebSocket-Protocol header", %{token: token} do
|
||||
assert {:ok, _} = start_socket("?stream=user", [{"Sec-WebSocket-Protocol", token.token}])
|
||||
|
||||
capture_log(fn ->
|
||||
assert {:error, %WebSockex.RequestError{code: 401}} =
|
||||
start_socket("?stream=user", [{"Sec-WebSocket-Protocol", "I am a friend"}])
|
||||
|
||||
Process.sleep(30)
|
||||
end)
|
||||
end
|
||||
|
||||
test "accepts valid token on client-sent event", %{token: token} do
|
||||
assert {:ok, pid} = start_socket()
|
||||
|
||||
|
@ -174,8 +174,9 @@ defmodule Pleroma.ObjectTest do
|
||||
|
||||
filename = Path.basename(href)
|
||||
|
||||
assert {:ok, files} = File.ls(uploads_dir)
|
||||
assert filename in files
|
||||
expected_path = Path.join([uploads_dir, Pleroma.Upload.Filter.Dedupe.shard_path(filename)])
|
||||
|
||||
assert File.exists?(expected_path)
|
||||
|
||||
Object.delete(note)
|
||||
|
||||
@ -183,8 +184,7 @@ defmodule Pleroma.ObjectTest do
|
||||
|
||||
assert Object.get_by_id(note.id).data["deleted"]
|
||||
assert Object.get_by_id(attachment.id) == nil
|
||||
assert {:ok, files} = File.ls(uploads_dir)
|
||||
refute filename in files
|
||||
refute File.exists?(expected_path)
|
||||
end
|
||||
|
||||
test "with objects that have legacy data.url attribute" do
|
||||
|
@ -10,6 +10,10 @@ defmodule Pleroma.Upload.Filter.DedupeTest do
|
||||
|
||||
@shasum "e30397b58d226d6583ab5b8b3c5defb0c682bda5c31ef07a9f57c1c4986e3781"
|
||||
|
||||
test "generates a shard path for a shasum" do
|
||||
assert "e3/03/97/" <> _path = Dedupe.shard_path(@shasum)
|
||||
end
|
||||
|
||||
test "adds shasum" do
|
||||
File.cp!(
|
||||
"test/fixtures/image.jpg",
|
||||
@ -23,10 +27,12 @@ defmodule Pleroma.Upload.Filter.DedupeTest do
|
||||
tempfile: Path.absname("test/fixtures/image_tmp.jpg")
|
||||
}
|
||||
|
||||
expected_path = Dedupe.shard_path(@shasum <> ".jpg")
|
||||
|
||||
assert {
|
||||
:ok,
|
||||
:filtered,
|
||||
%Pleroma.Upload{id: @shasum, path: @shasum <> ".jpg"}
|
||||
%Pleroma.Upload{id: @shasum, path: ^expected_path}
|
||||
} = Dedupe.filter(upload)
|
||||
end
|
||||
end
|
||||
|
@ -149,6 +149,9 @@ defmodule Pleroma.UploadTest do
|
||||
|
||||
test "copies the file to the configured folder with deduping" do
|
||||
File.cp!("test/fixtures/image.jpg", "test/fixtures/image_tmp.jpg")
|
||||
expected_filename = "e30397b58d226d6583ab5b8b3c5defb0c682bda5c31ef07a9f57c1c4986e3781.jpg"
|
||||
|
||||
expected_path = Pleroma.Upload.Filter.Dedupe.shard_path(expected_filename)
|
||||
|
||||
file = %Plug.Upload{
|
||||
content_type: "image/jpeg",
|
||||
@ -159,8 +162,7 @@ defmodule Pleroma.UploadTest do
|
||||
{:ok, data} = Upload.store(file, filters: [Pleroma.Upload.Filter.Dedupe])
|
||||
|
||||
assert List.first(data["url"])["href"] ==
|
||||
Pleroma.Upload.base_url() <>
|
||||
"e30397b58d226d6583ab5b8b3c5defb0c682bda5c31ef07a9f57c1c4986e3781.jpg"
|
||||
Path.join([Pleroma.Upload.base_url(), expected_path])
|
||||
end
|
||||
|
||||
test "copies the file to the configured folder without deduping" do
|
||||
|
@ -32,7 +32,7 @@ defmodule Pleroma.Web.FallbackTest do
|
||||
resp = get(conn, "/foo")
|
||||
|
||||
assert html_response(resp, 200) =~ "<title>a cool title</title>"
|
||||
refute html_response(resp, 200) =~ "initial-results"
|
||||
assert html_response(resp, 200) =~ "<meta content=\"noindex, noarchive\" name=\"robots\">"
|
||||
end
|
||||
|
||||
test "GET /*path", %{conn: conn} do
|
||||
|
@ -147,6 +147,15 @@ defmodule Pleroma.Web.Feed.UserControllerTest do
|
||||
assert response(conn, 404)
|
||||
end
|
||||
|
||||
test "returns noindex meta for missing user", %{conn: conn} do
|
||||
conn =
|
||||
conn
|
||||
|> put_req_header("accept", "text/html")
|
||||
|> get("/users/nonexisting")
|
||||
|
||||
assert html_response(conn, 200) =~ "<meta content=\"noindex, noarchive\" name=\"robots\">"
|
||||
end
|
||||
|
||||
test "returns feed with public and unlisted activities", %{conn: conn} do
|
||||
user = insert(:user)
|
||||
|
||||
|
40
test/pleroma/web/metadata/providers/activity_pub_test.exs
Normal file
40
test/pleroma/web/metadata/providers/activity_pub_test.exs
Normal file
@ -0,0 +1,40 @@
|
||||
# Pleroma: A lightweight social networking server
|
||||
# Copyright © 2017-2024 Pleroma Authors <https://pleroma.social/>
|
||||
# SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
defmodule Pleroma.Web.Metadata.Providers.ActivityPubTest do
|
||||
use Pleroma.DataCase
|
||||
import Pleroma.Factory
|
||||
|
||||
alias Pleroma.Web.CommonAPI
|
||||
alias Pleroma.Web.Metadata.Providers.ActivityPub
|
||||
|
||||
setup do: clear_config([Pleroma.Web.Metadata, :unfurl_nsfw])
|
||||
|
||||
test "it renders a link for user info" do
|
||||
user = insert(:user)
|
||||
res = ActivityPub.build_tags(%{user: user})
|
||||
|
||||
assert res == [
|
||||
{:link, [rel: "alternate", type: "application/activity+json", href: user.ap_id], []}
|
||||
]
|
||||
end
|
||||
|
||||
test "it renders a link for a post" do
|
||||
user = insert(:user)
|
||||
{:ok, %{id: activity_id, object: object}} = CommonAPI.post(user, %{status: "hi"})
|
||||
|
||||
result = ActivityPub.build_tags(%{object: object, user: user, activity_id: activity_id})
|
||||
|
||||
assert [
|
||||
{:link,
|
||||
[rel: "alternate", type: "application/activity+json", href: object.data["id"]], []}
|
||||
] == result
|
||||
end
|
||||
|
||||
test "it returns an empty array for anything else" do
|
||||
result = ActivityPub.build_tags(%{})
|
||||
|
||||
assert result == []
|
||||
end
|
||||
end
|
@ -15,4 +15,10 @@ defmodule Pleroma.Web.Metadata.Providers.FeedTest do
|
||||
[rel: "alternate", type: "application/atom+xml", href: "/users/lain/feed.atom"], []}
|
||||
]
|
||||
end
|
||||
|
||||
test "it doesn't render a link to remote user's feed" do
|
||||
user = insert(:user, nickname: "lain@lain.com", local: false)
|
||||
|
||||
assert Feed.build_tags(%{user: user}) == []
|
||||
end
|
||||
end
|
||||
|
@ -69,7 +69,7 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do
|
||||
|> hd()
|
||||
|> Map.keys()
|
||||
|
||||
assert keys -- ["id", "app_name", "valid_until"] == []
|
||||
assert Enum.sort(keys) == Enum.sort(["id", "app_name", "valid_until", "scopes"])
|
||||
end
|
||||
|
||||
test "revoke token", %{token: token} do
|
||||
|
Loading…
Reference in New Issue
Block a user