Normalize Hubzilla alsoKnownAs from string to array
This commit is contained in:
parent
1c685ea41a
commit
f80c5744b1
4 changed files with 36 additions and 1 deletions
1
changelog.d/hubzilla-alsoknownas.fix
Normal file
1
changelog.d/hubzilla-alsoknownas.fix
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
Fix fetching Hubzilla Actors with alsoKnownAs as string
|
||||||
|
|
@ -1618,6 +1618,10 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
|
||||||
defp normalize_image(urls) when is_list(urls), do: urls |> List.first() |> normalize_image()
|
defp normalize_image(urls) when is_list(urls), do: urls |> List.first() |> normalize_image()
|
||||||
defp normalize_image(_), do: nil
|
defp normalize_image(_), do: nil
|
||||||
|
|
||||||
|
defp normalize_also_known_as(urls) when is_list(urls), do: urls
|
||||||
|
defp normalize_also_known_as(url) when is_binary(url), do: [url]
|
||||||
|
defp normalize_also_known_as(nil), do: []
|
||||||
|
|
||||||
defp maybe_put_description(map, %{"name" => description}) when is_binary(description) do
|
defp maybe_put_description(map, %{"name" => description}) when is_binary(description) do
|
||||||
Map.put(map, "name", description)
|
Map.put(map, "name", description)
|
||||||
end
|
end
|
||||||
|
|
@ -1693,7 +1697,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
|
||||||
featured_address: featured_address,
|
featured_address: featured_address,
|
||||||
bio: data["summary"] || "",
|
bio: data["summary"] || "",
|
||||||
actor_type: actor_type,
|
actor_type: actor_type,
|
||||||
also_known_as: Map.get(data, "alsoKnownAs", []),
|
also_known_as: normalize_also_known_as(data["alsoKnownAs"]),
|
||||||
public_key: public_key,
|
public_key: public_key,
|
||||||
inbox: data["inbox"],
|
inbox: data["inbox"],
|
||||||
shared_inbox: shared_inbox,
|
shared_inbox: shared_inbox,
|
||||||
|
|
|
||||||
1
test/fixtures/users_mock/hubzilla-actor-alsoknownas-string.json
vendored
Normal file
1
test/fixtures/users_mock/hubzilla-actor-alsoknownas-string.json
vendored
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -499,6 +499,35 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do
|
||||||
"https://queef.in/storage/banner.gif"
|
"https://queef.in/storage/banner.gif"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "works with alsoKnownAs as string" do
|
||||||
|
user_id = "https://hub.netzgemeinde.eu/channel/jupiter_rowland"
|
||||||
|
|
||||||
|
user_data =
|
||||||
|
"test/fixtures/users_mock/hubzilla-actor-alsoknownas-string.json"
|
||||||
|
|> File.read!()
|
||||||
|
|
||||||
|
user_data_decoded =
|
||||||
|
user_data
|
||||||
|
|> Jason.decode!()
|
||||||
|
|
||||||
|
Tesla.Mock.mock(fn
|
||||||
|
%{
|
||||||
|
method: :get,
|
||||||
|
url: ^user_id
|
||||||
|
} ->
|
||||||
|
%Tesla.Env{
|
||||||
|
status: 200,
|
||||||
|
body: user_data,
|
||||||
|
headers: [{"content-type", "application/activity+json"}]
|
||||||
|
}
|
||||||
|
end)
|
||||||
|
|
||||||
|
{:ok, user} = ActivityPub.make_user_from_ap_id(user_id)
|
||||||
|
|
||||||
|
assert is_list(user.also_known_as)
|
||||||
|
assert user.also_known_as == [user_data_decoded["alsoKnownAs"]]
|
||||||
|
end
|
||||||
|
|
||||||
test "it fetches the appropriate tag-restricted posts" do
|
test "it fetches the appropriate tag-restricted posts" do
|
||||||
user = insert(:user)
|
user = insert(:user)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue