summaryrefslogtreecommitdiff
path: root/internal/db/bundb/account_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/db/bundb/account_test.go')
-rw-r--r--internal/db/bundb/account_test.go125
1 files changed, 44 insertions, 81 deletions
diff --git a/internal/db/bundb/account_test.go b/internal/db/bundb/account_test.go
index e3d36855e..ffd44de79 100644
--- a/internal/db/bundb/account_test.go
+++ b/internal/db/bundb/account_test.go
@@ -32,11 +32,10 @@ import (
"github.com/stretchr/testify/suite"
"github.com/superseriousbusiness/gotosocial/internal/ap"
"github.com/superseriousbusiness/gotosocial/internal/db"
- "github.com/superseriousbusiness/gotosocial/internal/db/bundb"
+ "github.com/superseriousbusiness/gotosocial/internal/gtscontext"
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
"github.com/superseriousbusiness/gotosocial/internal/paging"
"github.com/superseriousbusiness/gotosocial/internal/util"
- "github.com/uptrace/bun"
)
type AccountTestSuite struct {
@@ -255,7 +254,20 @@ func (suite *AccountTestSuite) TestGetAccountBy() {
if account.URL == "" {
return nil, sentinelErr
}
- return suite.db.GetAccountByURL(ctx, account.URL)
+ return suite.db.GetOneAccountByURL(ctx, account.URL)
+ },
+
+ "url_multi": func() (*gtsmodel.Account, error) {
+ if account.URL == "" {
+ return nil, sentinelErr
+ }
+
+ accounts, err := suite.db.GetAccountsByURL(ctx, account.URL)
+ if err != nil {
+ return nil, err
+ }
+
+ return accounts[0], nil
},
"username@domain": func() (*gtsmodel.Account, error) {
@@ -281,28 +293,14 @@ func (suite *AccountTestSuite) TestGetAccountBy() {
if account.InboxURI == "" {
return nil, sentinelErr
}
- return suite.db.GetAccountByInboxURI(ctx, account.InboxURI)
+ return suite.db.GetOneAccountByInboxURI(ctx, account.InboxURI)
},
"outbox_uri": func() (*gtsmodel.Account, error) {
if account.OutboxURI == "" {
return nil, sentinelErr
}
- return suite.db.GetAccountByOutboxURI(ctx, account.OutboxURI)
- },
-
- "following_uri": func() (*gtsmodel.Account, error) {
- if account.FollowingURI == "" {
- return nil, sentinelErr
- }
- return suite.db.GetAccountByFollowingURI(ctx, account.FollowingURI)
- },
-
- "followers_uri": func() (*gtsmodel.Account, error) {
- if account.FollowersURI == "" {
- return nil, sentinelErr
- }
- return suite.db.GetAccountByFollowersURI(ctx, account.FollowersURI)
+ return suite.db.GetOneAccountByOutboxURI(ctx, account.OutboxURI)
},
} {
@@ -345,71 +343,37 @@ func (suite *AccountTestSuite) TestGetAccountBy() {
}
}
-func (suite *AccountTestSuite) TestUpdateAccount() {
+func (suite *AccountTestSuite) TestGetAccountsByURLMulti() {
ctx := context.Background()
- testAccount := suite.testAccounts["local_account_1"]
-
- testAccount.DisplayName = "new display name!"
- testAccount.EmojiIDs = []string{"01GD36ZKWTKY3T1JJ24JR7KY1Q", "01GD36ZV904SHBHNAYV6DX5QEF"}
-
- err := suite.db.UpdateAccount(ctx, testAccount)
- suite.NoError(err)
-
- updated, err := suite.db.GetAccountByID(ctx, testAccount.ID)
- suite.NoError(err)
- suite.Equal("new display name!", updated.DisplayName)
- suite.Equal([]string{"01GD36ZKWTKY3T1JJ24JR7KY1Q", "01GD36ZV904SHBHNAYV6DX5QEF"}, updated.EmojiIDs)
- suite.WithinDuration(time.Now(), updated.UpdatedAt, 5*time.Second)
-
- // get account without cache + make sure it's really in the db as desired
- dbService, ok := suite.db.(*bundb.DBService)
- if !ok {
- panic("db was not *bundb.DBService")
+ // Update admin account to have the same url as zork.
+ testAccount1 := suite.testAccounts["local_account_1"]
+ testAccount2 := new(gtsmodel.Account)
+ *testAccount2 = *suite.testAccounts["admin_account"]
+ testAccount2.URL = testAccount1.URL
+ if err := suite.state.DB.UpdateAccount(ctx, testAccount2, "url"); err != nil {
+ suite.FailNow(err.Error())
}
- noCache := &gtsmodel.Account{}
- err = dbService.DB().
- NewSelect().
- Model(noCache).
- Where("? = ?", bun.Ident("account.id"), testAccount.ID).
- Relation("AvatarMediaAttachment").
- Relation("HeaderMediaAttachment").
- Relation("Emojis").
- Scan(ctx)
-
- suite.NoError(err)
- suite.Equal("new display name!", noCache.DisplayName)
- suite.Equal([]string{"01GD36ZKWTKY3T1JJ24JR7KY1Q", "01GD36ZV904SHBHNAYV6DX5QEF"}, noCache.EmojiIDs)
- suite.WithinDuration(time.Now(), noCache.UpdatedAt, 5*time.Second)
- suite.NotNil(noCache.AvatarMediaAttachment)
- suite.NotNil(noCache.HeaderMediaAttachment)
-
- // update again to remove emoji associations
- testAccount.EmojiIDs = []string{}
-
- err = suite.db.UpdateAccount(ctx, testAccount)
- suite.NoError(err)
-
- updated, err = suite.db.GetAccountByID(ctx, testAccount.ID)
- suite.NoError(err)
- suite.Equal("new display name!", updated.DisplayName)
- suite.Empty(updated.EmojiIDs)
- suite.WithinDuration(time.Now(), updated.UpdatedAt, 5*time.Second)
-
- err = dbService.DB().
- NewSelect().
- Model(noCache).
- Where("? = ?", bun.Ident("account.id"), testAccount.ID).
- Relation("AvatarMediaAttachment").
- Relation("HeaderMediaAttachment").
- Relation("Emojis").
- Scan(ctx)
+ // Select all accounts with that URL.
+ // Should return 2.
+ accounts, err := suite.state.DB.GetAccountsByURL(
+ gtscontext.SetBarebones(ctx),
+ testAccount1.URL,
+ )
+ if err != nil {
+ suite.FailNow(err.Error())
+ }
+ suite.Len(accounts, 2)
- suite.NoError(err)
- suite.Equal("new display name!", noCache.DisplayName)
- suite.Empty(noCache.EmojiIDs)
- suite.WithinDuration(time.Now(), noCache.UpdatedAt, 5*time.Second)
+ // Try to select one account with that URL.
+ // Should error.
+ account, err := suite.state.DB.GetOneAccountByURL(
+ gtscontext.SetBarebones(ctx),
+ testAccount1.URL,
+ )
+ suite.Nil(account)
+ suite.ErrorIs(err, db.ErrMultipleEntries)
}
func (suite *AccountTestSuite) TestInsertAccountWithDefaults() {
@@ -422,7 +386,7 @@ func (suite *AccountTestSuite) TestInsertAccountWithDefaults() {
Domain: "example.org",
URI: "https://example.org/users/test_service",
URL: "https://example.org/@test_service",
- ActorType: ap.ActorService,
+ ActorType: gtsmodel.AccountActorTypeService,
PublicKey: &key.PublicKey,
PublicKeyURI: "https://example.org/users/test_service#main-key",
}
@@ -433,7 +397,6 @@ func (suite *AccountTestSuite) TestInsertAccountWithDefaults() {
suite.WithinDuration(time.Now(), newAccount.CreatedAt, 30*time.Second)
suite.WithinDuration(time.Now(), newAccount.UpdatedAt, 30*time.Second)
suite.True(*newAccount.Locked)
- suite.False(*newAccount.Bot)
suite.False(*newAccount.Discoverable)
}