Fix various issues reported by Dializer

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel 2022-01-06 18:48:48 +01:00
parent 1319985047
commit 26b1ea401a
No known key found for this signature in database
GPG key ID: A061B9DDE0CA0773
12 changed files with 27 additions and 25 deletions

View file

@ -108,15 +108,15 @@ defmodule Mobilizon.Federation.ActivityPub.Actor do
@doc """ @doc """
Create an actor inside our database from username, using WebFinger to find out its AP ID and then fetch it Create an actor inside our database from username, using WebFinger to find out its AP ID and then fetch it
""" """
@spec make_actor_from_nickname(nickname :: String.t(), preload :: boolean) :: @spec make_actor_from_nickname(nickname :: String.t(), options :: Keyword.t()) ::
{:ok, Actor.t()} | {:error, make_actor_errors | WebFinger.finger_errors()} {:ok, Actor.t()} | {:error, make_actor_errors | WebFinger.finger_errors()}
def make_actor_from_nickname(nickname, preload \\ false) do def make_actor_from_nickname(nickname, options \\ []) do
Logger.debug("Fingering actor from nickname #{nickname}") Logger.debug("Fingering actor from nickname #{nickname}")
case WebFinger.finger(nickname) do case WebFinger.finger(nickname) do
{:ok, url} when is_binary(url) -> {:ok, url} when is_binary(url) ->
Logger.debug("Matched #{nickname} to URL #{url}, now making actor") Logger.debug("Matched #{nickname} to URL #{url}, now making actor")
make_actor_from_url(url, preload: preload) make_actor_from_url(url, options)
{:error, e} -> {:error, e} ->
{:error, e} {:error, e}

View file

@ -20,7 +20,7 @@ defmodule Mobilizon.Federation.ActivityPub.Audience do
@doc """ @doc """
Get audience for an entity Get audience for an entity
""" """
@spec get_audience(Entity.t()) :: audience() @spec get_audience(Entity.t() | Participant.t()) :: audience()
def get_audience(%Event{} = event) do def get_audience(%Event{} = event) do
extract_actors_from_event(event) extract_actors_from_event(event)
end end

View file

@ -190,7 +190,7 @@ defmodule Mobilizon.Federation.ActivityPub.Refresher do
# If we're handling an activity # If we're handling an activity
@spec handling_element(map()) :: {:ok, any, struct} | :error @spec handling_element(map()) :: {:ok, any, struct} | :error
@spec handling_element(String.t()) :: {:ok, struct} | {:error, any()} @spec handling_element(String.t()) :: {:ok, struct} | {:ok, atom, struct} | {:error, any()}
defp handling_element(%{"type" => activity_type} = data) defp handling_element(%{"type" => activity_type} = data)
when activity_type in ["Create", "Update", "Delete"] do when activity_type in ["Create", "Update", "Delete"] do
object = get_in(data, ["object"]) object = get_in(data, ["object"])

View file

@ -69,7 +69,8 @@ defmodule Mobilizon.GraphQL.API.Follows do
) )
case Actors.check_follow(follower, followed) do case Actors.check_follow(follower, followed) do
%Follower{approved: false} -> %Follower{approved: false} = follow ->
Actors.delete_follower(follow)
{:error, "Follow already rejected"} {:error, "Follow already rejected"}
%Follower{} = follow -> %Follower{} = follow ->

View file

@ -130,7 +130,7 @@ defmodule Mix.Tasks.Mobilizon.Instance do
options, options,
:listen_port, :listen_port,
"What port will the app listen to (leave it if you are using the default setup with nginx)?", "What port will the app listen to (leave it if you are using the default setup with nginx)?",
4000 "4000"
) )
instance_secret = :crypto.strong_rand_bytes(64) |> Base.encode64() |> binary_part(0, 64) instance_secret = :crypto.strong_rand_bytes(64) |> Base.encode64() |> binary_part(0, 64)

View file

@ -67,10 +67,6 @@ defmodule Mix.Tasks.Mobilizon.Users.New do
{:error, %Ecto.Changeset{errors: errors}} -> {:error, %Ecto.Changeset{errors: errors}} ->
shell_error(inspect(errors)) shell_error(inspect(errors))
shell_error("User has not been created because of the above reason.") shell_error("User has not been created because of the above reason.")
err ->
shell_error(inspect(err))
shell_error("User has not been created because of an unknown reason.")
end end
end end

View file

@ -1475,7 +1475,7 @@ defmodule Mobilizon.Actors do
|> where([_q, ..., a], like(a.name, ^"%#{name}%") or like(a.preferred_username, ^"%#{name}%")) |> where([_q, ..., a], like(a.name, ^"%#{name}%") or like(a.preferred_username, ^"%#{name}%"))
end end
@spec join_members_actor(Ecto.Query.t()) :: Ecto.Query.t() @spec join_members_actor(Ecto.Queryable.t()) :: Ecto.Query.t()
defp join_members_actor(query) do defp join_members_actor(query) do
join(query, :inner, [q], a in Actor, on: q.actor_id == a.id) join(query, :inner, [q], a in Actor, on: q.actor_id == a.id)
end end

View file

@ -8,7 +8,12 @@ defmodule Mobilizon.Service.Workers.CleanUnconfirmedUsersWorker do
@impl Oban.Worker @impl Oban.Worker
def perform(%Job{}) do def perform(%Job{}) do
if Mobilizon.Config.get!([:instance, :remove_unconfirmed_users]) and should_perform?() do remove_unconfirmed_users =
:mobilizon
|> Application.get_env(:instance)
|> Keyword.get(:remove_unconfirmed_users, false)
if remove_unconfirmed_users and should_perform?() do
CleanUnconfirmedUsers.clean() CleanUnconfirmedUsers.clean()
end end
end end

View file

@ -41,7 +41,7 @@ defmodule Mobilizon.Service.Workers.Helper do
alias Oban.Job alias Oban.Job
@spec enqueue(String.t(), map(), Keyword.t()) :: @spec enqueue(String.t() | :atom, map(), Keyword.t()) ::
{:ok, Job.t()} | {:error, Ecto.Changeset.t()} {:ok, Job.t()} | {:error, Ecto.Changeset.t()}
def enqueue(operation, params, worker_args \\ []) do def enqueue(operation, params, worker_args \\ []) do
params = Map.merge(%{"op" => operation}, params) params = Map.merge(%{"op" => operation}, params)

View file

@ -30,7 +30,7 @@ defmodule Mobilizon.Federation.ActivityPub.ActorTest do
HostMetaClientMock HostMetaClientMock
|> expect(:call, fn |> expect(:call, fn
%{method: :get, url: "http://framapiaf.org/.well-known/host-meta"}, _opts -> %{method: :get, url: "https://framapiaf.org/.well-known/host-meta"}, _opts ->
{:ok, %Tesla.Env{status: 404, body: ""}} {:ok, %Tesla.Env{status: 404, body: ""}}
end) end)
@ -43,7 +43,7 @@ defmodule Mobilizon.Federation.ActivityPub.ActorTest do
|> expect(:call, fn |> expect(:call, fn
%{ %{
method: :get, method: :get,
url: "http://framapiaf.org/.well-known/webfinger?resource=acct:tcit@framapiaf.org" url: "https://framapiaf.org/.well-known/webfinger?resource=acct:tcit@framapiaf.org"
}, },
_opts -> _opts ->
{:ok, %Tesla.Env{status: 200, body: webfinger_data}} {:ok, %Tesla.Env{status: 200, body: webfinger_data}}
@ -69,7 +69,7 @@ defmodule Mobilizon.Federation.ActivityPub.ActorTest do
HostMetaClientMock HostMetaClientMock
|> expect(:call, fn |> expect(:call, fn
%{method: :get, url: "http://framapiaf.org/.well-known/host-meta"}, _opts -> %{method: :get, url: "https://framapiaf.org/.well-known/host-meta"}, _opts ->
{:ok, %Tesla.Env{status: 404, body: ""}} {:ok, %Tesla.Env{status: 404, body: ""}}
end) end)
@ -82,7 +82,7 @@ defmodule Mobilizon.Federation.ActivityPub.ActorTest do
|> expect(:call, fn |> expect(:call, fn
%{ %{
method: :get, method: :get,
url: "http://framapiaf.org/.well-known/webfinger?resource=acct:tcit@framapiaf.org" url: "https://framapiaf.org/.well-known/webfinger?resource=acct:tcit@framapiaf.org"
}, },
_opts -> _opts ->
{:ok, %Tesla.Env{status: 200, body: webfinger_data}} {:ok, %Tesla.Env{status: 200, body: webfinger_data}}

View file

@ -72,7 +72,7 @@ defmodule Mobilizon.Federation.WebFingerTest do
HostMetaClientMock HostMetaClientMock
|> expect(:call, fn |> expect(:call, fn
%{method: :get, url: "http://social.tcit.fr/.well-known/host-meta"}, _opts -> %{method: :get, url: "https://social.tcit.fr/.well-known/host-meta"}, _opts ->
{:ok, %Tesla.Env{status: 200, body: host_meta_xml}} {:ok, %Tesla.Env{status: 200, body: host_meta_xml}}
end) end)
@ -100,7 +100,7 @@ defmodule Mobilizon.Federation.WebFingerTest do
HostMetaClientMock HostMetaClientMock
|> expect(:call, fn |> expect(:call, fn
%{method: :get, url: "http://pleroma.soykaf.com/.well-known/host-meta"}, _opts -> %{method: :get, url: "https://pleroma.soykaf.com/.well-known/host-meta"}, _opts ->
{:ok, %Tesla.Env{status: 200, body: host_meta_xml}} {:ok, %Tesla.Env{status: 200, body: host_meta_xml}}
end) end)
@ -127,7 +127,7 @@ defmodule Mobilizon.Federation.WebFingerTest do
HostMetaClientMock HostMetaClientMock
|> expect(:call, fn |> expect(:call, fn
%{method: :get, url: "http://framatube.org/.well-known/host-meta"}, _opts -> %{method: :get, url: "https://framatube.org/.well-known/host-meta"}, _opts ->
{:ok, %Tesla.Env{status: 200, body: host_meta_xml}} {:ok, %Tesla.Env{status: 200, body: host_meta_xml}}
end) end)
@ -154,7 +154,7 @@ defmodule Mobilizon.Federation.WebFingerTest do
HostMetaClientMock HostMetaClientMock
|> expect(:call, fn |> expect(:call, fn
%{method: :get, url: "http://squeet.me/.well-known/host-meta"}, _opts -> %{method: :get, url: "https://squeet.me/.well-known/host-meta"}, _opts ->
{:ok, %Tesla.Env{status: 200, body: host_meta_xml}} {:ok, %Tesla.Env{status: 200, body: host_meta_xml}}
end) end)
@ -182,7 +182,7 @@ defmodule Mobilizon.Federation.WebFingerTest do
HostMetaClientMock HostMetaClientMock
|> expect(:call, fn |> expect(:call, fn
%{method: :get, url: "http://demo.gancio.org/.well-known/host-meta"}, _opts -> %{method: :get, url: "https://demo.gancio.org/.well-known/host-meta"}, _opts ->
{:ok, %Tesla.Env{status: 200, body: host_meta_xml}} {:ok, %Tesla.Env{status: 200, body: host_meta_xml}}
end) end)

View file

@ -301,7 +301,7 @@ defmodule Mobilizon.GraphQL.Resolvers.MemberTest do
HostMetaClientMock HostMetaClientMock
|> expect(:call, fn |> expect(:call, fn
%{method: :get, url: "http://nowhere.absolute/.well-known/host-meta"}, _opts -> %{method: :get, url: "https://nowhere.absolute/.well-known/host-meta"}, _opts ->
{:ok, %Tesla.Env{status: 404, body: ""}} {:ok, %Tesla.Env{status: 404, body: ""}}
end) end)
@ -310,7 +310,7 @@ defmodule Mobilizon.GraphQL.Resolvers.MemberTest do
%{ %{
method: :get, method: :get,
url: url:
"http://nowhere.absolute/.well-known/webfinger?resource=acct:not_existing@nowhere.absolute" "https://nowhere.absolute/.well-known/webfinger?resource=acct:not_existing@nowhere.absolute"
}, },
_opts -> _opts ->
{:ok, %Tesla.Env{status: 404, body: ""}} {:ok, %Tesla.Env{status: 404, body: ""}}