From da8954858afb4d5a3a2faf55e77d7da3be0ea3db Mon Sep 17 00:00:00 2001 From: tobi <31960611+tsmethurst@users.noreply.github.com> Date: Thu, 24 Nov 2022 13:54:49 +0100 Subject: [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 --- internal/visibility/statushometimelineable_test.go | 40 ++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'internal/visibility/statushometimelineable_test.go') 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() -- cgit v1.2.3