mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-30 23:12:25 -05:00 
			
		
		
		
	[bugfix] Fix incorrect reply shown in interaction request (#3344)
This commit is contained in:
		
					parent
					
						
							
								de72855790
							
						
					
				
			
			
				commit
				
					
						713e73300c
					
				
			
		
					 3 changed files with 254 additions and 14 deletions
				
			
		|  | @ -473,19 +473,20 @@ const ( | ||||||
| 
 | 
 | ||||||
| type TypeUtilsTestSuite struct { | type TypeUtilsTestSuite struct { | ||||||
| 	suite.Suite | 	suite.Suite | ||||||
| 	db                 db.DB | 	db                      db.DB | ||||||
| 	state              state.State | 	state                   state.State | ||||||
| 	testAccounts       map[string]*gtsmodel.Account | 	testAccounts            map[string]*gtsmodel.Account | ||||||
| 	testStatuses       map[string]*gtsmodel.Status | 	testStatuses            map[string]*gtsmodel.Status | ||||||
| 	testAttachments    map[string]*gtsmodel.MediaAttachment | 	testAttachments         map[string]*gtsmodel.MediaAttachment | ||||||
| 	testPeople         map[string]vocab.ActivityStreamsPerson | 	testPeople              map[string]vocab.ActivityStreamsPerson | ||||||
| 	testEmojis         map[string]*gtsmodel.Emoji | 	testEmojis              map[string]*gtsmodel.Emoji | ||||||
| 	testReports        map[string]*gtsmodel.Report | 	testReports             map[string]*gtsmodel.Report | ||||||
| 	testMentions       map[string]*gtsmodel.Mention | 	testMentions            map[string]*gtsmodel.Mention | ||||||
| 	testPollVotes      map[string]*gtsmodel.PollVote | 	testPollVotes           map[string]*gtsmodel.PollVote | ||||||
| 	testFilters        map[string]*gtsmodel.Filter | 	testFilters             map[string]*gtsmodel.Filter | ||||||
| 	testFilterKeywords map[string]*gtsmodel.FilterKeyword | 	testFilterKeywords      map[string]*gtsmodel.FilterKeyword | ||||||
| 	testFilterStatues  map[string]*gtsmodel.FilterStatus | 	testFilterStatues       map[string]*gtsmodel.FilterStatus | ||||||
|  | 	testInteractionRequests map[string]*gtsmodel.InteractionRequest | ||||||
| 
 | 
 | ||||||
| 	typeconverter *typeutils.Converter | 	typeconverter *typeutils.Converter | ||||||
| } | } | ||||||
|  | @ -512,6 +513,7 @@ func (suite *TypeUtilsTestSuite) SetupTest() { | ||||||
| 	suite.testFilters = testrig.NewTestFilters() | 	suite.testFilters = testrig.NewTestFilters() | ||||||
| 	suite.testFilterKeywords = testrig.NewTestFilterKeywords() | 	suite.testFilterKeywords = testrig.NewTestFilterKeywords() | ||||||
| 	suite.testFilterStatues = testrig.NewTestFilterStatuses() | 	suite.testFilterStatues = testrig.NewTestFilterStatuses() | ||||||
|  | 	suite.testInteractionRequests = testrig.NewTestInteractionRequests() | ||||||
| 	suite.typeconverter = typeutils.NewConverter(&suite.state) | 	suite.typeconverter = typeutils.NewConverter(&suite.state) | ||||||
| 
 | 
 | ||||||
| 	testrig.StandardDBSetup(suite.db, nil) | 	testrig.StandardDBSetup(suite.db, nil) | ||||||
|  |  | ||||||
|  | @ -2683,7 +2683,7 @@ func (c *Converter) InteractionReqToAPIInteractionReq( | ||||||
| 	if req.InteractionType == gtsmodel.InteractionReply { | 	if req.InteractionType == gtsmodel.InteractionReply { | ||||||
| 		reply, err = c.statusToAPIStatus( | 		reply, err = c.statusToAPIStatus( | ||||||
| 			ctx, | 			ctx, | ||||||
| 			req.Status, | 			req.Reply, | ||||||
| 			requestingAcct, | 			requestingAcct, | ||||||
| 			statusfilter.FilterContextNone, | 			statusfilter.FilterContextNone, | ||||||
| 			nil,  // No filters. | 			nil,  // No filters. | ||||||
|  |  | ||||||
|  | @ -3120,6 +3120,244 @@ func (suite *InternalToFrontendTestSuite) TestRelationshipFollowRequested() { | ||||||
| }`, string(b)) | }`, 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) { | func TestInternalToFrontendTestSuite(t *testing.T) { | ||||||
| 	suite.Run(t, new(InternalToFrontendTestSuite)) | 	suite.Run(t, new(InternalToFrontendTestSuite)) | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue