summaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorLibravatar tobi <31960611+tsmethurst@users.noreply.github.com>2024-09-24 19:28:46 +0200
committerLibravatar GitHub <noreply@github.com>2024-09-24 17:28:46 +0000
commit713e73300cc4e3cf5047edd4fba6eab9a8b92e75 (patch)
treebd35f53cb31093c49f4e4ef9cec442ed8131a03d /internal
parent[chore] Roll otel deps back to `v1.29.0` / `v0.51.0` (#3337) (diff)
downloadgotosocial-713e73300cc4e3cf5047edd4fba6eab9a8b92e75.tar.xz
[bugfix] Fix incorrect reply shown in interaction request (#3344)
Diffstat (limited to 'internal')
-rw-r--r--internal/typeutils/converter_test.go28
-rw-r--r--internal/typeutils/internaltofrontend.go2
-rw-r--r--internal/typeutils/internaltofrontend_test.go238
3 files changed, 254 insertions, 14 deletions
diff --git a/internal/typeutils/converter_test.go b/internal/typeutils/converter_test.go
index fc873a94b..0676bea1b 100644
--- a/internal/typeutils/converter_test.go
+++ b/internal/typeutils/converter_test.go
@@ -473,19 +473,20 @@ const (
type TypeUtilsTestSuite struct {
suite.Suite
- db db.DB
- state state.State
- testAccounts map[string]*gtsmodel.Account
- testStatuses map[string]*gtsmodel.Status
- testAttachments map[string]*gtsmodel.MediaAttachment
- testPeople map[string]vocab.ActivityStreamsPerson
- testEmojis map[string]*gtsmodel.Emoji
- testReports map[string]*gtsmodel.Report
- testMentions map[string]*gtsmodel.Mention
- testPollVotes map[string]*gtsmodel.PollVote
- testFilters map[string]*gtsmodel.Filter
- testFilterKeywords map[string]*gtsmodel.FilterKeyword
- testFilterStatues map[string]*gtsmodel.FilterStatus
+ db db.DB
+ state state.State
+ testAccounts map[string]*gtsmodel.Account
+ testStatuses map[string]*gtsmodel.Status
+ testAttachments map[string]*gtsmodel.MediaAttachment
+ testPeople map[string]vocab.ActivityStreamsPerson
+ testEmojis map[string]*gtsmodel.Emoji
+ testReports map[string]*gtsmodel.Report
+ testMentions map[string]*gtsmodel.Mention
+ testPollVotes map[string]*gtsmodel.PollVote
+ testFilters map[string]*gtsmodel.Filter
+ testFilterKeywords map[string]*gtsmodel.FilterKeyword
+ testFilterStatues map[string]*gtsmodel.FilterStatus
+ testInteractionRequests map[string]*gtsmodel.InteractionRequest
typeconverter *typeutils.Converter
}
@@ -512,6 +513,7 @@ func (suite *TypeUtilsTestSuite) SetupTest() {
suite.testFilters = testrig.NewTestFilters()
suite.testFilterKeywords = testrig.NewTestFilterKeywords()
suite.testFilterStatues = testrig.NewTestFilterStatuses()
+ suite.testInteractionRequests = testrig.NewTestInteractionRequests()
suite.typeconverter = typeutils.NewConverter(&suite.state)
testrig.StandardDBSetup(suite.db, nil)
diff --git a/internal/typeutils/internaltofrontend.go b/internal/typeutils/internaltofrontend.go
index f36175eab..4e76837cd 100644
--- a/internal/typeutils/internaltofrontend.go
+++ b/internal/typeutils/internaltofrontend.go
@@ -2683,7 +2683,7 @@ func (c *Converter) InteractionReqToAPIInteractionReq(
if req.InteractionType == gtsmodel.InteractionReply {
reply, err = c.statusToAPIStatus(
ctx,
- req.Status,
+ req.Reply,
requestingAcct,
statusfilter.FilterContextNone,
nil, // No filters.
diff --git a/internal/typeutils/internaltofrontend_test.go b/internal/typeutils/internaltofrontend_test.go
index dbb6d6a5d..61faf1c21 100644
--- a/internal/typeutils/internaltofrontend_test.go
+++ b/internal/typeutils/internaltofrontend_test.go
@@ -3120,6 +3120,244 @@ func (suite *InternalToFrontendTestSuite) TestRelationshipFollowRequested() {
}`, string(b))
}
+func (suite *InternalToFrontendTestSuite) TestIntReqToAPI() {
+ requestingAccount := suite.testAccounts["local_account_2"]
+ adminReport, err := suite.typeconverter.InteractionReqToAPIInteractionReq(
+ context.Background(),
+ suite.testInteractionRequests["admin_account_reply_turtle"],
+ requestingAccount,
+ )
+ if err != nil {
+ suite.FailNow(err.Error())
+ }
+
+ b, err := json.MarshalIndent(adminReport, "", " ")
+ if err != nil {
+ suite.FailNow(err.Error())
+ }
+
+ suite.Equal(`{
+ "id": "01J5QVXCCEATJYSXM9H6MZT4JR",
+ "type": "reply",
+ "created_at": "2024-02-20T10:41:37.000Z",
+ "account": {
+ "id": "01F8MH17FWEB39HZJ76B6VXSKF",
+ "username": "admin",
+ "acct": "admin",
+ "display_name": "",
+ "locked": false,
+ "discoverable": true,
+ "bot": false,
+ "created_at": "2022-05-17T13:10:59.000Z",
+ "note": "",
+ "url": "http://localhost:8080/@admin",
+ "avatar": "",
+ "avatar_static": "",
+ "header": "http://localhost:8080/assets/default_header.webp",
+ "header_static": "http://localhost:8080/assets/default_header.webp",
+ "followers_count": 1,
+ "following_count": 1,
+ "statuses_count": 4,
+ "last_status_at": "2021-10-20T10:41:37.000Z",
+ "emojis": [],
+ "fields": [],
+ "enable_rss": true,
+ "roles": [
+ {
+ "id": "admin",
+ "name": "admin",
+ "color": ""
+ }
+ ]
+ },
+ "status": {
+ "id": "01F8MHC8VWDRBQR0N1BATDDEM5",
+ "created_at": "2021-10-20T10:40:37.000Z",
+ "in_reply_to_id": null,
+ "in_reply_to_account_id": null,
+ "sensitive": true,
+ "spoiler_text": "you won't be able to reply to this without my approval",
+ "visibility": "unlisted",
+ "language": "en",
+ "uri": "http://localhost:8080/users/1happyturtle/statuses/01F8MHC8VWDRBQR0N1BATDDEM5",
+ "url": "http://localhost:8080/@1happyturtle/statuses/01F8MHC8VWDRBQR0N1BATDDEM5",
+ "replies_count": 1,
+ "reblogs_count": 0,
+ "favourites_count": 0,
+ "favourited": false,
+ "reblogged": false,
+ "muted": false,
+ "bookmarked": false,
+ "pinned": false,
+ "content": "🐢 i don't mind people sharing and liking this one but I want to moderate replies to it 🐢",
+ "reblog": null,
+ "application": {
+ "name": "kindaweird",
+ "website": "https://kindaweird.app"
+ },
+ "account": {
+ "id": "01F8MH5NBDF2MV7CTC4Q5128HF",
+ "username": "1happyturtle",
+ "acct": "1happyturtle",
+ "display_name": "happy little turtle :3",
+ "locked": true,
+ "discoverable": false,
+ "bot": false,
+ "created_at": "2022-06-04T13:12:00.000Z",
+ "note": "\u003cp\u003ei post about things that concern me\u003c/p\u003e",
+ "url": "http://localhost:8080/@1happyturtle",
+ "avatar": "",
+ "avatar_static": "",
+ "header": "http://localhost:8080/assets/default_header.webp",
+ "header_static": "http://localhost:8080/assets/default_header.webp",
+ "followers_count": 1,
+ "following_count": 1,
+ "statuses_count": 8,
+ "last_status_at": "2021-07-28T08:40:37.000Z",
+ "emojis": [],
+ "fields": [
+ {
+ "name": "should you follow me?",
+ "value": "maybe!",
+ "verified_at": null
+ },
+ {
+ "name": "age",
+ "value": "120",
+ "verified_at": null
+ }
+ ],
+ "hide_collections": true
+ },
+ "media_attachments": [],
+ "mentions": [],
+ "tags": [],
+ "emojis": [],
+ "card": null,
+ "poll": null,
+ "text": "🐢 i don't mind people sharing and liking this one but I want to moderate replies to it 🐢",
+ "interaction_policy": {
+ "can_favourite": {
+ "always": [
+ "public",
+ "me"
+ ],
+ "with_approval": []
+ },
+ "can_reply": {
+ "always": [
+ "author",
+ "me"
+ ],
+ "with_approval": [
+ "public"
+ ]
+ },
+ "can_reblog": {
+ "always": [
+ "public",
+ "me"
+ ],
+ "with_approval": []
+ }
+ }
+ },
+ "reply": {
+ "id": "01J5QVB9VC76NPPRQ207GG4DRZ",
+ "created_at": "2024-02-20T10:41:37.000Z",
+ "in_reply_to_id": "01F8MHC8VWDRBQR0N1BATDDEM5",
+ "in_reply_to_account_id": "01F8MH5NBDF2MV7CTC4Q5128HF",
+ "sensitive": false,
+ "spoiler_text": "",
+ "visibility": "unlisted",
+ "language": null,
+ "uri": "http://localhost:8080/users/admin/statuses/01J5QVB9VC76NPPRQ207GG4DRZ",
+ "url": "http://localhost:8080/@admin/statuses/01J5QVB9VC76NPPRQ207GG4DRZ",
+ "replies_count": 0,
+ "reblogs_count": 0,
+ "favourites_count": 0,
+ "favourited": false,
+ "reblogged": false,
+ "muted": false,
+ "bookmarked": false,
+ "pinned": false,
+ "content": "\u003cp\u003eHi \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, can I reply?\u003c/p\u003e",
+ "reblog": null,
+ "application": {
+ "name": "superseriousbusiness",
+ "website": "https://superserious.business"
+ },
+ "account": {
+ "id": "01F8MH17FWEB39HZJ76B6VXSKF",
+ "username": "admin",
+ "acct": "admin",
+ "display_name": "",
+ "locked": false,
+ "discoverable": true,
+ "bot": false,
+ "created_at": "2022-05-17T13:10:59.000Z",
+ "note": "",
+ "url": "http://localhost:8080/@admin",
+ "avatar": "",
+ "avatar_static": "",
+ "header": "http://localhost:8080/assets/default_header.webp",
+ "header_static": "http://localhost:8080/assets/default_header.webp",
+ "followers_count": 1,
+ "following_count": 1,
+ "statuses_count": 4,
+ "last_status_at": "2021-10-20T10:41:37.000Z",
+ "emojis": [],
+ "fields": [],
+ "enable_rss": true,
+ "roles": [
+ {
+ "id": "admin",
+ "name": "admin",
+ "color": ""
+ }
+ ]
+ },
+ "media_attachments": [],
+ "mentions": [
+ {
+ "id": "01F8MH5NBDF2MV7CTC4Q5128HF",
+ "username": "1happyturtle",
+ "url": "http://localhost:8080/@1happyturtle",
+ "acct": "1happyturtle"
+ }
+ ],
+ "tags": [],
+ "emojis": [],
+ "card": null,
+ "poll": null,
+ "text": "Hi @1happyturtle, can I reply?",
+ "interaction_policy": {
+ "can_favourite": {
+ "always": [
+ "public",
+ "me"
+ ],
+ "with_approval": []
+ },
+ "can_reply": {
+ "always": [
+ "public",
+ "me"
+ ],
+ "with_approval": []
+ },
+ "can_reblog": {
+ "always": [
+ "public",
+ "me"
+ ],
+ "with_approval": []
+ }
+ }
+ }
+}`, string(b))
+}
+
func TestInternalToFrontendTestSuite(t *testing.T) {
suite.Run(t, new(InternalToFrontendTestSuite))
}