diff options
author | 2022-11-24 13:54:49 +0100 | |
---|---|---|
committer | 2022-11-24 13:54:49 +0100 | |
commit | da8954858afb4d5a3a2faf55e77d7da3be0ea3db (patch) | |
tree | e81046ed4a4a00a9c5969115e151002deab67613 /internal/visibility/statushometimelineable_test.go | |
parent | [chore] cleanup storage implementation, no need for multiple interface types ... (diff) | |
download | gotosocial-da8954858afb4d5a3a2faf55e77d7da3be0ea3db.tar.xz |
[bugfix] Prevent future statuses entering timelines (#1134)
* [bugfix] Prevent future statuses entering timeline
Statuses created more than 5 minutes into the future are now rejected in the visibility package.
* Come on buddy
Diffstat (limited to 'internal/visibility/statushometimelineable_test.go')
-rw-r--r-- | internal/visibility/statushometimelineable_test.go | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/internal/visibility/statushometimelineable_test.go b/internal/visibility/statushometimelineable_test.go index ca80664dc..fc428af5f 100644 --- a/internal/visibility/statushometimelineable_test.go +++ b/internal/visibility/statushometimelineable_test.go @@ -21,10 +21,12 @@ package visibility_test import ( "context" "testing" + "time" "github.com/stretchr/testify/suite" "github.com/superseriousbusiness/gotosocial/internal/ap" "github.com/superseriousbusiness/gotosocial/internal/gtsmodel" + "github.com/superseriousbusiness/gotosocial/internal/id" "github.com/superseriousbusiness/gotosocial/testrig" ) @@ -65,6 +67,44 @@ func (suite *StatusStatusHometimelineableTestSuite) TestNotFollowingStatusHometi suite.False(timelineable) } +func (suite *StatusStatusHometimelineableTestSuite) TestStatusTooNewNotTimelineable() { + testStatus := >smodel.Status{} + *testStatus = *suite.testStatuses["local_account_1_status_1"] + + var err error + testStatus.ID, err = id.NewULIDFromTime(time.Now().Add(10 * time.Minute)) + if err != nil { + suite.FailNow(err.Error()) + } + + testAccount := suite.testAccounts["local_account_1"] + ctx := context.Background() + + timelineable, err := suite.filter.StatusHometimelineable(ctx, testStatus, testAccount) + suite.NoError(err) + + suite.False(timelineable) +} + +func (suite *StatusStatusHometimelineableTestSuite) TestStatusNotTooNewTimelineable() { + testStatus := >smodel.Status{} + *testStatus = *suite.testStatuses["local_account_1_status_1"] + + var err error + testStatus.ID, err = id.NewULIDFromTime(time.Now().Add(4 * time.Minute)) + if err != nil { + suite.FailNow(err.Error()) + } + + testAccount := suite.testAccounts["local_account_1"] + ctx := context.Background() + + timelineable, err := suite.filter.StatusHometimelineable(ctx, testStatus, testAccount) + suite.NoError(err) + + suite.True(timelineable) +} + func (suite *StatusStatusHometimelineableTestSuite) TestChainReplyFollowersOnly() { ctx := context.Background() |