From d8a83860bcdfa7261d1da55caae438139445f176 Mon Sep 17 00:00:00 2001 From: kim <89579420+NyaaaWhatsUpDoc@users.noreply.github.com> Date: Tue, 22 Oct 2024 14:47:28 +0000 Subject: [PATCH] [bugfix] incorrect /api/v_/instance domain uri fields (#3477) * update instance v1 / v2 endpoints to set uri / domain correctly (i.e. account domain) * fix tests relying on old instance behaviour --- .../api/client/instance/instancepatch_test.go | 12 +++++------ internal/typeutils/internaltofrontend.go | 20 +++++++++++++++---- internal/typeutils/internaltofrontend_test.go | 2 +- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/internal/api/client/instance/instancepatch_test.go b/internal/api/client/instance/instancepatch_test.go index 0b6b02356..5c7923adc 100644 --- a/internal/api/client/instance/instancepatch_test.go +++ b/internal/api/client/instance/instancepatch_test.go @@ -80,7 +80,7 @@ func (suite *InstancePatchTestSuite) TestInstancePatch1() { } suite.Equal(`{ - "uri": "http://localhost:8080", + "uri": "localhost:8080", "account_domain": "localhost:8080", "title": "Example Instance", "description": "

Here's a fuller description of the GoToSocial testrig instance.

This instance is for testing purposes only. It doesn't federate at all. Go check out https://github.com/superseriousbusiness/gotosocial/tree/main/testrig and https://github.com/superseriousbusiness/gotosocial/blob/main/CONTRIBUTING.md#testing

Users on this instance:

If you need to edit the models for the testrig, you can do so at internal/testmodels.go.

", @@ -221,7 +221,7 @@ func (suite *InstancePatchTestSuite) TestInstancePatch2() { } suite.Equal(`{ - "uri": "http://localhost:8080", + "uri": "localhost:8080", "account_domain": "localhost:8080", "title": "Geoff's Instance", "description": "

Here's a fuller description of the GoToSocial testrig instance.

This instance is for testing purposes only. It doesn't federate at all. Go check out https://github.com/superseriousbusiness/gotosocial/tree/main/testrig and https://github.com/superseriousbusiness/gotosocial/blob/main/CONTRIBUTING.md#testing

Users on this instance:

If you need to edit the models for the testrig, you can do so at internal/testmodels.go.

", @@ -362,7 +362,7 @@ func (suite *InstancePatchTestSuite) TestInstancePatch3() { } suite.Equal(`{ - "uri": "http://localhost:8080", + "uri": "localhost:8080", "account_domain": "localhost:8080", "title": "GoToSocial Testrig Instance", "description": "

Here's a fuller description of the GoToSocial testrig instance.

This instance is for testing purposes only. It doesn't federate at all. Go check out https://github.com/superseriousbusiness/gotosocial/tree/main/testrig and https://github.com/superseriousbusiness/gotosocial/blob/main/CONTRIBUTING.md#testing

Users on this instance:

If you need to edit the models for the testrig, you can do so at internal/testmodels.go.

", @@ -554,7 +554,7 @@ func (suite *InstancePatchTestSuite) TestInstancePatch6() { } suite.Equal(`{ - "uri": "http://localhost:8080", + "uri": "localhost:8080", "account_domain": "localhost:8080", "title": "GoToSocial Testrig Instance", "description": "

Here's a fuller description of the GoToSocial testrig instance.

This instance is for testing purposes only. It doesn't federate at all. Go check out https://github.com/superseriousbusiness/gotosocial/tree/main/testrig and https://github.com/superseriousbusiness/gotosocial/blob/main/CONTRIBUTING.md#testing

Users on this instance:

If you need to edit the models for the testrig, you can do so at internal/testmodels.go.

", @@ -717,7 +717,7 @@ func (suite *InstancePatchTestSuite) TestInstancePatch8() { } suite.Equal(`{ - "uri": "http://localhost:8080", + "uri": "localhost:8080", "account_domain": "localhost:8080", "title": "GoToSocial Testrig Instance", "description": "

Here's a fuller description of the GoToSocial testrig instance.

This instance is for testing purposes only. It doesn't federate at all. Go check out https://github.com/superseriousbusiness/gotosocial/tree/main/testrig and https://github.com/superseriousbusiness/gotosocial/blob/main/CONTRIBUTING.md#testing

Users on this instance:

If you need to edit the models for the testrig, you can do so at internal/testmodels.go.

", @@ -899,7 +899,7 @@ func (suite *InstancePatchTestSuite) TestInstancePatch9() { } suite.Equal(`{ - "uri": "http://localhost:8080", + "uri": "localhost:8080", "account_domain": "localhost:8080", "title": "GoToSocial Testrig Instance", "description": "

Here's a fuller description of the GoToSocial testrig instance.

This instance is for testing purposes only. It doesn't federate at all. Go check out https://github.com/superseriousbusiness/gotosocial/tree/main/testrig and https://github.com/superseriousbusiness/gotosocial/blob/main/CONTRIBUTING.md#testing

Users on this instance:

If you need to edit the models for the testrig, you can do so at internal/testmodels.go.

", diff --git a/internal/typeutils/internaltofrontend.go b/internal/typeutils/internaltofrontend.go index 11bc73dc3..03b24fc9c 100644 --- a/internal/typeutils/internaltofrontend.go +++ b/internal/typeutils/internaltofrontend.go @@ -1523,9 +1523,15 @@ func (c *Converter) InstanceRuleToAdminAPIRule(r *gtsmodel.Rule) *apimodel.Admin // InstanceToAPIV1Instance converts a gts instance into its api equivalent for serving at /api/v1/instance func (c *Converter) InstanceToAPIV1Instance(ctx context.Context, i *gtsmodel.Instance) (*apimodel.InstanceV1, error) { + domain := i.Domain + accDomain := config.GetAccountDomain() + if accDomain != "" { + domain = accDomain + } + instance := &apimodel.InstanceV1{ - URI: i.URI, - AccountDomain: config.GetAccountDomain(), + URI: domain, + AccountDomain: accDomain, Title: i.Title, Description: i.Description, DescriptionText: i.DescriptionText, @@ -1642,9 +1648,15 @@ func (c *Converter) InstanceToAPIV1Instance(ctx context.Context, i *gtsmodel.Ins // InstanceToAPIV2Instance converts a gts instance into its api equivalent for serving at /api/v2/instance func (c *Converter) InstanceToAPIV2Instance(ctx context.Context, i *gtsmodel.Instance) (*apimodel.InstanceV2, error) { + domain := i.Domain + accDomain := config.GetAccountDomain() + if accDomain != "" { + domain = accDomain + } + instance := &apimodel.InstanceV2{ - Domain: i.Domain, - AccountDomain: config.GetAccountDomain(), + Domain: domain, + AccountDomain: accDomain, Title: i.Title, Version: config.GetSoftwareVersion(), SourceURL: instanceSourceURL, diff --git a/internal/typeutils/internaltofrontend_test.go b/internal/typeutils/internaltofrontend_test.go index cfb28bdf9..a01060ebc 100644 --- a/internal/typeutils/internaltofrontend_test.go +++ b/internal/typeutils/internaltofrontend_test.go @@ -1918,7 +1918,7 @@ func (suite *InternalToFrontendTestSuite) TestInstanceV1ToFrontend() { // FIXME: "rules" is empty from the database, because it's not fetched through db.GetInstance suite.Equal(`{ - "uri": "http://localhost:8080", + "uri": "localhost:8080", "account_domain": "localhost:8080", "title": "GoToSocial Testrig Instance", "description": "\u003cp\u003eHere's a fuller description of the GoToSocial testrig instance.\u003c/p\u003e\u003cp\u003eThis instance is for testing purposes only. It doesn't federate at all. Go check out \u003ca href=\"https://github.com/superseriousbusiness/gotosocial/tree/main/testrig\" rel=\"nofollow noreferrer noopener\" target=\"_blank\"\u003ehttps://github.com/superseriousbusiness/gotosocial/tree/main/testrig\u003c/a\u003e and \u003ca href=\"https://github.com/superseriousbusiness/gotosocial/blob/main/CONTRIBUTING.md#testing\" rel=\"nofollow noreferrer noopener\" target=\"_blank\"\u003ehttps://github.com/superseriousbusiness/gotosocial/blob/main/CONTRIBUTING.md#testing\u003c/a\u003e\u003c/p\u003e\u003cp\u003eUsers on this instance:\u003c/p\u003e\u003cul\u003e\u003cli\u003e\u003cspan class=\"h-card\"\u003e\u003ca href=\"http://localhost:8080/@admin\" class=\"u-url mention\" rel=\"nofollow noreferrer noopener\" target=\"_blank\"\u003e@\u003cspan\u003eadmin\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e (admin!).\u003c/li\u003e\u003cli\u003e\u003cspan class=\"h-card\"\u003e\u003ca href=\"http://localhost:8080/@1happyturtle\" class=\"u-url mention\" rel=\"nofollow noreferrer noopener\" target=\"_blank\"\u003e@\u003cspan\u003e1happyturtle\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e (posts about turtles, we don't know why).\u003c/li\u003e\u003cli\u003e\u003cspan class=\"h-card\"\u003e\u003ca href=\"http://localhost:8080/@the_mighty_zork\" class=\"u-url mention\" rel=\"nofollow noreferrer noopener\" target=\"_blank\"\u003e@\u003cspan\u003ethe_mighty_zork\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e (who knows).\u003c/li\u003e\u003c/ul\u003e\u003cp\u003eIf you need to edit the models for the testrig, you can do so at \u003ccode\u003einternal/testmodels.go\u003c/code\u003e.\u003c/p\u003e",