diff options
Diffstat (limited to 'internal/api')
-rw-r--r-- | internal/api/client/account/accountverify_test.go | 4 | ||||
-rw-r--r-- | internal/api/client/admin/accountaction.go | 2 | ||||
-rw-r--r-- | internal/api/client/admin/domainblockcreate.go | 2 | ||||
-rw-r--r-- | internal/api/client/admin/domainblockdelete.go | 2 | ||||
-rw-r--r-- | internal/api/client/admin/domainblockget.go | 2 | ||||
-rw-r--r-- | internal/api/client/admin/domainblocksget.go | 2 | ||||
-rw-r--r-- | internal/api/client/admin/emojicreate.go | 2 | ||||
-rw-r--r-- | internal/api/client/admin/emojicreate_test.go | 4 | ||||
-rw-r--r-- | internal/api/client/admin/mediacleanup.go | 2 | ||||
-rw-r--r-- | internal/api/client/admin/mediacleanup_test.go | 12 | ||||
-rw-r--r-- | internal/api/client/auth/authorize.go | 4 | ||||
-rw-r--r-- | internal/api/client/auth/authorize_test.go | 30 | ||||
-rw-r--r-- | internal/api/client/instance/instancepatch.go | 2 | ||||
-rw-r--r-- | internal/api/client/instance/instancepeersget_test.go | 2 | ||||
-rw-r--r-- | internal/api/s2s/user/inboxpost_test.go | 4 | ||||
-rw-r--r-- | internal/api/security/tokencheck.go | 4 |
16 files changed, 43 insertions, 37 deletions
diff --git a/internal/api/client/account/accountverify_test.go b/internal/api/client/account/accountverify_test.go index 6b199d83e..886272865 100644 --- a/internal/api/client/account/accountverify_test.go +++ b/internal/api/client/account/accountverify_test.go @@ -70,8 +70,8 @@ func (suite *AccountVerifyTestSuite) TestAccountVerifyGet() { suite.Equal(testAccount.Username, apimodelAccount.Username) suite.Equal(testAccount.Username, apimodelAccount.Acct) suite.Equal(testAccount.DisplayName, apimodelAccount.DisplayName) - suite.Equal(testAccount.Locked, apimodelAccount.Locked) - suite.Equal(testAccount.Bot, apimodelAccount.Bot) + suite.Equal(*testAccount.Locked, apimodelAccount.Locked) + suite.Equal(*testAccount.Bot, apimodelAccount.Bot) suite.WithinDuration(testAccount.CreatedAt, createdAt, 30*time.Second) // we lose a bit of accuracy serializing so fuzz this a bit suite.Equal(testAccount.URL, apimodelAccount.URL) suite.Equal("http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/avatar/original/01F8MH58A357CV5K7R7TJMSH6S.jpeg", apimodelAccount.Avatar) diff --git a/internal/api/client/admin/accountaction.go b/internal/api/client/admin/accountaction.go index 072a60a9d..a9817f295 100644 --- a/internal/api/client/admin/accountaction.go +++ b/internal/api/client/admin/accountaction.go @@ -87,7 +87,7 @@ func (m *Module) AccountActionPOSTHandler(c *gin.Context) { return } - if !authed.User.Admin { + if !*authed.User.Admin { err := fmt.Errorf("user %s not an admin", authed.User.ID) api.ErrorHandler(c, gtserror.NewErrorForbidden(err, err.Error()), m.processor.InstanceGet) return diff --git a/internal/api/client/admin/domainblockcreate.go b/internal/api/client/admin/domainblockcreate.go index cc97f52ca..9ee725bef 100644 --- a/internal/api/client/admin/domainblockcreate.go +++ b/internal/api/client/admin/domainblockcreate.go @@ -123,7 +123,7 @@ func (m *Module) DomainBlocksPOSTHandler(c *gin.Context) { return } - if !authed.User.Admin { + if !*authed.User.Admin { err := fmt.Errorf("user %s not an admin", authed.User.ID) api.ErrorHandler(c, gtserror.NewErrorForbidden(err, err.Error()), m.processor.InstanceGet) return diff --git a/internal/api/client/admin/domainblockdelete.go b/internal/api/client/admin/domainblockdelete.go index d57018f72..aec1ba6df 100644 --- a/internal/api/client/admin/domainblockdelete.go +++ b/internal/api/client/admin/domainblockdelete.go @@ -75,7 +75,7 @@ func (m *Module) DomainBlockDELETEHandler(c *gin.Context) { return } - if !authed.User.Admin { + if !*authed.User.Admin { err := fmt.Errorf("user %s not an admin", authed.User.ID) api.ErrorHandler(c, gtserror.NewErrorForbidden(err, err.Error()), m.processor.InstanceGet) return diff --git a/internal/api/client/admin/domainblockget.go b/internal/api/client/admin/domainblockget.go index e9fdf549b..1aeedce51 100644 --- a/internal/api/client/admin/domainblockget.go +++ b/internal/api/client/admin/domainblockget.go @@ -76,7 +76,7 @@ func (m *Module) DomainBlockGETHandler(c *gin.Context) { return } - if !authed.User.Admin { + if !*authed.User.Admin { err := fmt.Errorf("user %s not an admin", authed.User.ID) api.ErrorHandler(c, gtserror.NewErrorForbidden(err, err.Error()), m.processor.InstanceGet) return diff --git a/internal/api/client/admin/domainblocksget.go b/internal/api/client/admin/domainblocksget.go index c3b3ec595..93bd767c4 100644 --- a/internal/api/client/admin/domainblocksget.go +++ b/internal/api/client/admin/domainblocksget.go @@ -81,7 +81,7 @@ func (m *Module) DomainBlocksGETHandler(c *gin.Context) { return } - if !authed.User.Admin { + if !*authed.User.Admin { err := fmt.Errorf("user %s not an admin", authed.User.ID) api.ErrorHandler(c, gtserror.NewErrorForbidden(err, err.Error()), m.processor.InstanceGet) return diff --git a/internal/api/client/admin/emojicreate.go b/internal/api/client/admin/emojicreate.go index c5d613312..39ebd5adf 100644 --- a/internal/api/client/admin/emojicreate.go +++ b/internal/api/client/admin/emojicreate.go @@ -90,7 +90,7 @@ func (m *Module) EmojiCreatePOSTHandler(c *gin.Context) { return } - if !authed.User.Admin { + if !*authed.User.Admin { err := fmt.Errorf("user %s not an admin", authed.User.ID) api.ErrorHandler(c, gtserror.NewErrorForbidden(err, err.Error()), m.processor.InstanceGet) return diff --git a/internal/api/client/admin/emojicreate_test.go b/internal/api/client/admin/emojicreate_test.go index fa93ce564..ebef858aa 100644 --- a/internal/api/client/admin/emojicreate_test.go +++ b/internal/api/client/admin/emojicreate_test.go @@ -97,9 +97,9 @@ func (suite *EmojiCreateTestSuite) TestEmojiCreate() { suite.Equal("image/png", dbEmoji.ImageStaticContentType) suite.Equal(36702, dbEmoji.ImageFileSize) suite.Equal(10413, dbEmoji.ImageStaticFileSize) - suite.False(dbEmoji.Disabled) + suite.False(*dbEmoji.Disabled) suite.NotEmpty(dbEmoji.URI) - suite.True(dbEmoji.VisibleInPicker) + suite.True(*dbEmoji.VisibleInPicker) suite.Empty(dbEmoji.CategoryID) // emoji should be in storage diff --git a/internal/api/client/admin/mediacleanup.go b/internal/api/client/admin/mediacleanup.go index 6065acd3b..44f0a1b52 100644 --- a/internal/api/client/admin/mediacleanup.go +++ b/internal/api/client/admin/mediacleanup.go @@ -74,7 +74,7 @@ func (m *Module) MediaCleanupPOSTHandler(c *gin.Context) { return } - if !authed.User.Admin { + if !*authed.User.Admin { err := fmt.Errorf("user %s not an admin", authed.User.ID) api.ErrorHandler(c, gtserror.NewErrorForbidden(err, err.Error()), m.processor.InstanceGet) return diff --git a/internal/api/client/admin/mediacleanup_test.go b/internal/api/client/admin/mediacleanup_test.go index 50f23b2f0..345402ad5 100644 --- a/internal/api/client/admin/mediacleanup_test.go +++ b/internal/api/client/admin/mediacleanup_test.go @@ -35,7 +35,7 @@ type MediaCleanupTestSuite struct { func (suite *MediaCleanupTestSuite) TestMediaCleanup() { testAttachment := suite.testAttachments["remote_account_1_status_1_attachment_2"] - suite.True(testAttachment.Cached) + suite.True(*testAttachment.Cached) // set up the request recorder := httptest.NewRecorder() @@ -55,12 +55,12 @@ func (suite *MediaCleanupTestSuite) TestMediaCleanup() { suite.NoError(err) // the media should no longer be cached - suite.False(prunedAttachment.Cached) + suite.False(*prunedAttachment.Cached) } func (suite *MediaCleanupTestSuite) TestMediaCleanupNoArg() { testAttachment := suite.testAttachments["remote_account_1_status_1_attachment_2"] - suite.True(testAttachment.Cached) + suite.True(*testAttachment.Cached) println("TIME: ", testAttachment.CreatedAt.String()) // set up the request @@ -81,12 +81,12 @@ func (suite *MediaCleanupTestSuite) TestMediaCleanupNoArg() { suite.NoError(err) // the media should no longer be cached - suite.False(prunedAttachment.Cached) + suite.False(*prunedAttachment.Cached) } func (suite *MediaCleanupTestSuite) TestMediaCleanupNotOldEnough() { testAttachment := suite.testAttachments["remote_account_1_status_1_attachment_2"] - suite.True(testAttachment.Cached) + suite.True(*testAttachment.Cached) // set up the request recorder := httptest.NewRecorder() @@ -106,7 +106,7 @@ func (suite *MediaCleanupTestSuite) TestMediaCleanupNotOldEnough() { suite.NoError(err) // the media should still be cached - suite.True(prunedAttachment.Cached) + suite.True(*prunedAttachment.Cached) } func TestMediaCleanupTestSuite(t *testing.T) { diff --git a/internal/api/client/auth/authorize.go b/internal/api/client/auth/authorize.go index 67325a81d..83cddd9b5 100644 --- a/internal/api/client/auth/authorize.go +++ b/internal/api/client/auth/authorize.go @@ -320,13 +320,13 @@ func ensureUserIsAuthorizedOrRedirect(ctx *gin.Context, user *gtsmodel.User, acc return } - if !user.Approved { + if !*user.Approved { ctx.Redirect(http.StatusSeeOther, WaitForApprovalPath) redirected = true return } - if user.Disabled || !account.SuspendedAt.IsZero() { + if *user.Disabled || !account.SuspendedAt.IsZero() { ctx.Redirect(http.StatusSeeOther, AccountDisabledPath) redirected = true return diff --git a/internal/api/client/auth/authorize_test.go b/internal/api/client/auth/authorize_test.go index 35b995e70..eab893416 100644 --- a/internal/api/client/auth/authorize_test.go +++ b/internal/api/client/auth/authorize_test.go @@ -11,6 +11,7 @@ import ( "github.com/stretchr/testify/suite" "github.com/superseriousbusiness/gotosocial/internal/api/client/auth" "github.com/superseriousbusiness/gotosocial/internal/gtsmodel" + "github.com/superseriousbusiness/gotosocial/testrig" ) type AuthAuthorizeTestSuite struct { @@ -19,7 +20,7 @@ type AuthAuthorizeTestSuite struct { type authorizeHandlerTestCase struct { description string - mutateUserAccount func(*gtsmodel.User, *gtsmodel.Account) + mutateUserAccount func(*gtsmodel.User, *gtsmodel.Account) []string expectedStatusCode int expectedLocationHeader string } @@ -28,40 +29,44 @@ func (suite *AuthAuthorizeTestSuite) TestAccountAuthorizeHandler() { tests := []authorizeHandlerTestCase{ { description: "user has their email unconfirmed", - mutateUserAccount: func(user *gtsmodel.User, account *gtsmodel.Account) { + mutateUserAccount: func(user *gtsmodel.User, account *gtsmodel.Account) []string { // nothing to do, weed_lord420 already has their email unconfirmed + return nil }, expectedStatusCode: http.StatusSeeOther, expectedLocationHeader: auth.CheckYourEmailPath, }, { description: "user has their email confirmed but is not approved", - mutateUserAccount: func(user *gtsmodel.User, account *gtsmodel.Account) { + mutateUserAccount: func(user *gtsmodel.User, account *gtsmodel.Account) []string { user.ConfirmedAt = time.Now() user.Email = user.UnconfirmedEmail + return []string{"confirmed_at", "email"} }, expectedStatusCode: http.StatusSeeOther, expectedLocationHeader: auth.WaitForApprovalPath, }, { description: "user has their email confirmed and is approved, but User entity has been disabled", - mutateUserAccount: func(user *gtsmodel.User, account *gtsmodel.Account) { + mutateUserAccount: func(user *gtsmodel.User, account *gtsmodel.Account) []string { user.ConfirmedAt = time.Now() user.Email = user.UnconfirmedEmail - user.Approved = true - user.Disabled = true + user.Approved = testrig.TrueBool() + user.Disabled = testrig.TrueBool() + return []string{"confirmed_at", "email", "approved", "disabled"} }, expectedStatusCode: http.StatusSeeOther, expectedLocationHeader: auth.AccountDisabledPath, }, { description: "user has their email confirmed and is approved, but Account entity has been suspended", - mutateUserAccount: func(user *gtsmodel.User, account *gtsmodel.Account) { + mutateUserAccount: func(user *gtsmodel.User, account *gtsmodel.Account) []string { user.ConfirmedAt = time.Now() user.Email = user.UnconfirmedEmail - user.Approved = true - user.Disabled = false + user.Approved = testrig.TrueBool() + user.Disabled = testrig.FalseBool() account.SuspendedAt = time.Now() + return []string{"confirmed_at", "email", "approved", "disabled"} }, expectedStatusCode: http.StatusSeeOther, expectedLocationHeader: auth.AccountDisabledPath, @@ -81,12 +86,13 @@ func (suite *AuthAuthorizeTestSuite) TestAccountAuthorizeHandler() { panic(fmt.Errorf("failed on case %s: %w", testCase.description, err)) } - testCase.mutateUserAccount(user, account) + updatingColumns := testCase.mutateUserAccount(user, account) - testCase.description = fmt.Sprintf("%s, %t, %s", user.Email, user.Disabled, account.SuspendedAt) + testCase.description = fmt.Sprintf("%s, %t, %s", user.Email, *user.Disabled, account.SuspendedAt) + updatingColumns = append(updatingColumns, "updated_at") user.UpdatedAt = time.Now() - err := suite.db.UpdateByPrimaryKey(context.Background(), user) + err := suite.db.UpdateByPrimaryKey(context.Background(), user, updatingColumns...) suite.NoError(err) _, err = suite.db.UpdateAccount(context.Background(), account) suite.NoError(err) diff --git a/internal/api/client/instance/instancepatch.go b/internal/api/client/instance/instancepatch.go index 6f1b3586b..78d0af046 100644 --- a/internal/api/client/instance/instancepatch.go +++ b/internal/api/client/instance/instancepatch.go @@ -124,7 +124,7 @@ func (m *Module) InstanceUpdatePATCHHandler(c *gin.Context) { return } - if !authed.User.Admin { + if !*authed.User.Admin { err := errors.New("user is not an admin so cannot update instance settings") api.ErrorHandler(c, gtserror.NewErrorForbidden(err, err.Error()), m.processor.InstanceGet) return diff --git a/internal/api/client/instance/instancepeersget_test.go b/internal/api/client/instance/instancepeersget_test.go index 48fb42a73..cc1adcca4 100644 --- a/internal/api/client/instance/instancepeersget_test.go +++ b/internal/api/client/instance/instancepeersget_test.go @@ -190,7 +190,7 @@ func (suite *InstancePeersGetTestSuite) TestInstancePeersGetAllWithObfuscated() Domain: "omg.just.the.worst.org.ever", CreatedByAccountID: "01F8MH17FWEB39HZJ76B6VXSKF", PublicComment: "just absolutely the worst, wowza", - Obfuscate: true, + Obfuscate: testrig.TrueBool(), }) suite.NoError(err) diff --git a/internal/api/s2s/user/inboxpost_test.go b/internal/api/s2s/user/inboxpost_test.go index b8fe73909..506fa270c 100644 --- a/internal/api/s2s/user/inboxpost_test.go +++ b/internal/api/s2s/user/inboxpost_test.go @@ -469,8 +469,8 @@ func (suite *InboxPostTestSuite) TestPostDelete() { suite.Empty(dbAccount.HeaderRemoteURL) suite.Empty(dbAccount.Reason) suite.Empty(dbAccount.Fields) - suite.True(dbAccount.HideCollections) - suite.False(dbAccount.Discoverable) + suite.True(*dbAccount.HideCollections) + suite.False(*dbAccount.Discoverable) suite.WithinDuration(time.Now(), dbAccount.SuspendedAt, 30*time.Second) suite.Equal(dbAccount.ID, dbAccount.SuspensionOrigin) } diff --git a/internal/api/security/tokencheck.go b/internal/api/security/tokencheck.go index 0e9e7bde2..3df7ee943 100644 --- a/internal/api/security/tokencheck.go +++ b/internal/api/security/tokencheck.go @@ -67,12 +67,12 @@ func (m *Module) TokenCheck(c *gin.Context) { return } - if !user.Approved { + if !*user.Approved { log.Warnf("authenticated user %s's account was never approved by an admin", userID) return } - if user.Disabled { + if *user.Disabled { log.Warnf("authenticated user %s's account was disabled'", userID) return } |