api/masto/instance: use WebFinger domain for URI
All checks were successful
ci/woodpecker/pr/lint Pipeline was successful
ci/woodpecker/pr/test/2 Pipeline was successful
ci/woodpecker/pr/test/1 Pipeline was successful
ci/woodpecker/pr/build-arm64 Pipeline was successful
ci/woodpecker/pr/build-amd64 Pipeline was successful
ci/woodpecker/pr/docs Pipeline was successful
ci/woodpecker/pull_request_closed/lint Pipeline was successful
ci/woodpecker/pull_request_closed/test/1 Pipeline was successful
ci/woodpecker/pull_request_closed/test/2 Pipeline was successful
ci/woodpecker/pull_request_closed/build-arm64 Pipeline was successful
ci/woodpecker/pull_request_closed/build-amd64 Pipeline was successful
ci/woodpecker/pull_request_closed/docs Pipeline was successful
All checks were successful
ci/woodpecker/pr/lint Pipeline was successful
ci/woodpecker/pr/test/2 Pipeline was successful
ci/woodpecker/pr/test/1 Pipeline was successful
ci/woodpecker/pr/build-arm64 Pipeline was successful
ci/woodpecker/pr/build-amd64 Pipeline was successful
ci/woodpecker/pr/docs Pipeline was successful
ci/woodpecker/pull_request_closed/lint Pipeline was successful
ci/woodpecker/pull_request_closed/test/1 Pipeline was successful
ci/woodpecker/pull_request_closed/test/2 Pipeline was successful
ci/woodpecker/pull_request_closed/build-arm64 Pipeline was successful
ci/woodpecker/pull_request_closed/build-amd64 Pipeline was successful
ci/woodpecker/pull_request_closed/docs Pipeline was successful
Despite its name this property is not supposed to be a full URI, but just a bare domain witout protocol. Furthermore, it’s supposed to be the WebFinger domain used in userhandles and NOT the domain used for API and ActivityPub objects (which every caller will already know anyway). Not following this caused issues for Pachli and Tusky. Reported-by: nikclayton
This commit is contained in:
parent
6f17eae3f9
commit
40fef8e632
2 changed files with 14 additions and 2 deletions
|
@ -14,7 +14,7 @@ def render("show.json", _) do
|
|||
instance = Config.get(:instance)
|
||||
|
||||
%{
|
||||
uri: Pleroma.Web.Endpoint.url(),
|
||||
uri: Pleroma.Web.WebFinger.domain(),
|
||||
title: Keyword.get(instance, :name),
|
||||
description: Keyword.get(instance, :description),
|
||||
short_description:
|
||||
|
|
|
@ -18,9 +18,12 @@ test "get instance information", %{conn: conn} do
|
|||
thumbnail = Pleroma.Web.Endpoint.url() <> Pleroma.Config.get([:instance, :instance_thumbnail])
|
||||
background = Pleroma.Web.Endpoint.url() <> Pleroma.Config.get([:instance, :background_image])
|
||||
|
||||
# if no WebFinger domain is configured (without protocol)
|
||||
uri = Pleroma.Web.Endpoint.host()
|
||||
|
||||
# Note: not checking for "max_toot_chars" since it's optional
|
||||
assert %{
|
||||
"uri" => _,
|
||||
"uri" => ^uri,
|
||||
"title" => _,
|
||||
"description" => _,
|
||||
"short_description" => _,
|
||||
|
@ -55,6 +58,15 @@ test "get instance information", %{conn: conn} do
|
|||
assert background == from_config_background
|
||||
end
|
||||
|
||||
test "get instance information prefers WebFinger domain for uri", %{conn: conn} do
|
||||
webfinger_domain = "webfinger.example"
|
||||
clear_config([Pleroma.Web.WebFinger, :domain], webfinger_domain)
|
||||
conn = get(conn, "/api/v1/instance")
|
||||
|
||||
assert result = json_response_and_validate_schema(conn, 200)
|
||||
assert match?(%{"uri" => ^webfinger_domain}, result)
|
||||
end
|
||||
|
||||
test "get instance stats", %{conn: conn} do
|
||||
user = insert(:user, %{local: true})
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue