[bugfix] Allow self-boosting for any visibility but direct (#510)

* create visibility filter for boostability and allow self-boosting for any visbility but direct messages

* add a followers-only status to local_account_2

* fix typo in comment

* add license header, unwrap errors, be explicit about non-boostable visibility settings to avoid rogue boosting from miscoded clients, use ID compare for checking if self-boosting

* add tests for statusboostable filter

* fix tests that were affected by adding a new status to the test data

* fix the rest of tests affected by adding a status to the textrig data
This commit is contained in:
Adelie Paull 2022-05-02 09:23:37 -04:00 committed by GitHub
commit 9265a09a65
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 268 additions and 22 deletions

View file

@ -84,8 +84,8 @@ func (suite *GetTestSuite) TestGetDefault() {
suite.FailNow(err.Error())
}
// we only have 15 statuses in the test suite
suite.Len(statuses, 15)
// we only have 16 statuses in the test suite
suite.Len(statuses, 16)
// statuses should be sorted highest to lowest ID
var highest string
@ -177,8 +177,8 @@ func (suite *GetTestSuite) TestGetMinID() {
suite.FailNow(err.Error())
}
// we should only get 8 statuses back, since we asked for a min ID that excludes some of our entries
suite.Len(statuses, 8)
// we should only get 9 statuses back, since we asked for a min ID that excludes some of our entries
suite.Len(statuses, 9)
// statuses should be sorted highest to lowest ID
var highest string
@ -199,8 +199,8 @@ func (suite *GetTestSuite) TestGetSinceID() {
suite.FailNow(err.Error())
}
// we should only get 8 statuses back, since we asked for a since ID that excludes some of our entries
suite.Len(statuses, 8)
// we should only get 9 statuses back, since we asked for a since ID that excludes some of our entries
suite.Len(statuses, 9)
// statuses should be sorted highest to lowest ID
var highest string
@ -221,8 +221,8 @@ func (suite *GetTestSuite) TestGetSinceIDPrepareNext() {
suite.FailNow(err.Error())
}
// we should only get 8 statuses back, since we asked for a since ID that excludes some of our entries
suite.Len(statuses, 8)
// we should only get 9 statuses back, since we asked for a since ID that excludes some of our entries
suite.Len(statuses, 9)
// statuses should be sorted highest to lowest ID
var highest string

View file

@ -76,7 +76,7 @@ func (suite *IndexTestSuite) TestIndexBeforeLowID() {
postID, err := suite.timeline.OldestIndexedItemID(context.Background())
suite.NoError(err)
suite.Equal("01F8MHBBN8120SYH7D5S050MGK", postID)
suite.Equal("01F8MHBQCBTDKN6X5VHGMMN4MA", postID)
indexLength := suite.timeline.ItemIndexLength(context.Background())
suite.Equal(9, indexLength)
@ -105,7 +105,7 @@ func (suite *IndexTestSuite) TestIndexBehindHighID() {
// the newest indexed post should be the highest one we have in our testrig
postID, err := suite.timeline.NewestIndexedItemID(context.Background())
suite.NoError(err)
suite.Equal("01FN3VJGFH10KR7S2PB0GFJZYG", postID)
suite.Equal("01G20ZM733MGN8J344T4ZDDFY1", postID)
// indexLength should be 9 because that's all this user has hometimelineable
indexLength := suite.timeline.ItemIndexLength(context.Background())

View file

@ -77,9 +77,9 @@ func (suite *ManagerTestSuite) TestManagerIntegration() {
err = suite.manager.PrepareXFromTop(context.Background(), testAccount.ID, 20)
suite.NoError(err)
// local_account_1 can see 14 statuses out of the testrig statuses in its home timeline
// local_account_1 can see 15 statuses out of the testrig statuses in its home timeline
indexedLen = suite.manager.GetIndexedLength(context.Background(), testAccount.ID)
suite.Equal(14, indexedLen)
suite.Equal(15, indexedLen)
// oldest should now be set
oldestIndexed, err = suite.manager.GetOldestIndexedID(context.Background(), testAccount.ID)
@ -89,7 +89,7 @@ func (suite *ManagerTestSuite) TestManagerIntegration() {
// get hometimeline
statuses, err := suite.manager.GetTimeline(context.Background(), testAccount.ID, "", "", "", 20, false)
suite.NoError(err)
suite.Len(statuses, 14)
suite.Len(statuses, 15)
// now wipe the last status from all timelines, as though it had been deleted by the owner
err = suite.manager.WipeItemFromAllTimelines(context.Background(), "01F8MH75CBF9JFX4ZAD54N0W0R")
@ -97,7 +97,7 @@ func (suite *ManagerTestSuite) TestManagerIntegration() {
// timeline should be shorter
indexedLen = suite.manager.GetIndexedLength(context.Background(), testAccount.ID)
suite.Equal(13, indexedLen)
suite.Equal(14, indexedLen)
// oldest should now be different
oldestIndexed, err = suite.manager.GetOldestIndexedID(context.Background(), testAccount.ID)
@ -111,7 +111,7 @@ func (suite *ManagerTestSuite) TestManagerIntegration() {
// timeline should be shorter
indexedLen = suite.manager.GetIndexedLength(context.Background(), testAccount.ID)
suite.Equal(12, indexedLen)
suite.Equal(13, indexedLen)
// oldest should now be different
oldestIndexed, err = suite.manager.GetOldestIndexedID(context.Background(), testAccount.ID)