mirror of
https://github.com/superseriousbusiness/gotosocial
synced 2025-06-05 21:59:39 +02:00
[chore] reformat GetAccount() functionality, support updating accounts based on last_fetch (#1411)
* reformat GetAccount() functionality, and add UpdateAccount() function. * use fetched_at instead of last_webfingered_at * catch local "not found" errors. small formatting / error string changes * remove now unused error type * return nil when wrapping nil error * update expected error messages * return correct url for foss satan webfinger * add AP model for Some_User * normalize local domain * return notretrievable where appropriate * expose NewErrNotRetrievable * ensure webfinger for new accounts searched by uri * update local account short circuit * allow enrich to fail for already-known accounts * remove unused LastWebfingeredAt * expose test maps on mock http client * update Update test * reformat GetAccount() functionality, and add UpdateAccount() function. * use fetched_at instead of last_webfingered_at * catch local "not found" errors. small formatting / error string changes * remove nil error checks (we shouldn't be passing nil errors to newError() initializers) * remove mutex unlock on transport init fail (it hasn't yet been locked!) * woops add back the error wrapping to use ErrNotRetrievable * caches were never being started... 🙈 --------- Signed-off-by: kim <grufwub@gmail.com> Co-authored-by: tsmethurst <tobi.smethurst@protonmail.com>
This commit is contained in:
@ -66,7 +66,7 @@ func happyAccount() *gtsmodel.Account {
|
||||
StatusFormat: "plain",
|
||||
URI: "http://localhost:8080/users/the_mighty_zork",
|
||||
URL: "http://localhost:8080/@the_mighty_zork",
|
||||
LastWebfingeredAt: time.Time{},
|
||||
FetchedAt: time.Time{},
|
||||
InboxURI: "http://localhost:8080/users/the_mighty_zork/inbox",
|
||||
OutboxURI: "http://localhost:8080/users/the_mighty_zork/outbox",
|
||||
FollowersURI: "http://localhost:8080/users/the_mighty_zork/followers",
|
||||
@ -117,14 +117,14 @@ func (suite *AccountValidateTestSuite) TestValidateAccountNoCreatedAt() {
|
||||
suite.NoError(err)
|
||||
}
|
||||
|
||||
// LastWebfingeredAt must be defined if remote account
|
||||
// FetchedAt must be defined if remote account
|
||||
func (suite *AccountValidateTestSuite) TestValidateAccountNoWebfingeredAt() {
|
||||
a := happyAccount()
|
||||
|
||||
a.Domain = "example.org"
|
||||
a.LastWebfingeredAt = time.Time{}
|
||||
a.FetchedAt = time.Time{}
|
||||
err := validate.Struct(*a)
|
||||
suite.EqualError(err, "Key: 'Account.LastWebfingeredAt' Error:Field validation for 'LastWebfingeredAt' failed on the 'required_with' tag")
|
||||
suite.EqualError(err, "Key: 'Account.FetchedAt' Error:Field validation for 'FetchedAt' failed on the 'required_with' tag")
|
||||
}
|
||||
|
||||
// Username must be set
|
||||
@ -139,7 +139,7 @@ func (suite *AccountValidateTestSuite) TestValidateAccountUsername() {
|
||||
// Domain must be either empty (for local accounts) or proper fqdn (for remote accounts)
|
||||
func (suite *AccountValidateTestSuite) TestValidateAccountDomain() {
|
||||
a := happyAccount()
|
||||
a.LastWebfingeredAt = time.Now()
|
||||
a.FetchedAt = time.Now()
|
||||
|
||||
a.Domain = ""
|
||||
err := validate.Struct(*a)
|
||||
@ -204,7 +204,7 @@ func (suite *AccountValidateTestSuite) TestValidateAttachmentRemoteURLs() {
|
||||
// Default privacy must be set if account is local
|
||||
func (suite *AccountValidateTestSuite) TestValidatePrivacy() {
|
||||
a := happyAccount()
|
||||
a.LastWebfingeredAt = time.Now()
|
||||
a.FetchedAt = time.Now()
|
||||
|
||||
a.Privacy = ""
|
||||
err := validate.Struct(*a)
|
||||
@ -261,7 +261,7 @@ func (suite *AccountValidateTestSuite) TestValidateAccountURI() {
|
||||
// ActivityPub URIs must be set on account if it's local
|
||||
func (suite *AccountValidateTestSuite) TestValidateAccountURIs() {
|
||||
a := happyAccount()
|
||||
a.LastWebfingeredAt = time.Now()
|
||||
a.FetchedAt = time.Now()
|
||||
|
||||
a.InboxURI = "invalid-uri"
|
||||
a.OutboxURI = "invalid-uri"
|
||||
@ -319,7 +319,7 @@ func (suite *AccountValidateTestSuite) TestValidateActorType() {
|
||||
// Private key must be set on local accounts
|
||||
func (suite *AccountValidateTestSuite) TestValidatePrivateKey() {
|
||||
a := happyAccount()
|
||||
a.LastWebfingeredAt = time.Now()
|
||||
a.FetchedAt = time.Now()
|
||||
|
||||
a.PrivateKey = nil
|
||||
err := validate.Struct(*a)
|
||||
|
Reference in New Issue
Block a user