loading up the forgejo repo on tangled to test page performance
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge pull request '[BUG] Don't delete inactive emails explicitly' (#2880) from gusted/forgejo-inactive-email into forgejo

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/2880
Reviewed-by: Otto <otto@codeberg.org>

+33 -9
-8
models/user/email_address.go
··· 278 278 return db.GetEngine(ctx).Where("lower_email=?", strings.ToLower(email)).Get(&EmailAddress{}) 279 279 } 280 280 281 - // DeleteInactiveEmailAddresses deletes inactive email addresses 282 - func DeleteInactiveEmailAddresses(ctx context.Context) error { 283 - _, err := db.GetEngine(ctx). 284 - Where("is_activated = ?", false). 285 - Delete(new(EmailAddress)) 286 - return err 287 - } 288 - 289 281 // ActivateEmail activates the email address to given user. 290 282 func ActivateEmail(ctx context.Context, email *EmailAddress) error { 291 283 ctx, committer, err := db.TxContext(ctx)
+1 -1
services/user/user.go
··· 304 304 } 305 305 } 306 306 307 - return user_model.DeleteInactiveEmailAddresses(ctx) 307 + return nil 308 308 }
+32
services/user/user_test.go
··· 7 7 "fmt" 8 8 "strings" 9 9 "testing" 10 + "time" 10 11 11 12 "code.gitea.io/gitea/models" 12 13 "code.gitea.io/gitea/models/auth" ··· 16 17 "code.gitea.io/gitea/models/unittest" 17 18 user_model "code.gitea.io/gitea/models/user" 18 19 "code.gitea.io/gitea/modules/setting" 20 + "code.gitea.io/gitea/modules/timeutil" 19 21 20 22 "github.com/stretchr/testify/assert" 21 23 ) ··· 184 186 assert.NoError(t, DeleteUser(db.DefaultContext, v.user, false)) 185 187 } 186 188 } 189 + 190 + func TestDeleteInactiveUsers(t *testing.T) { 191 + assert.NoError(t, unittest.PrepareTestDatabase()) 192 + // Add an inactive user older than a minute, with an associated email_address record. 193 + oldUser := &user_model.User{Name: "OldInactive", LowerName: "oldinactive", Email: "old@example.com", CreatedUnix: timeutil.TimeStampNow().Add(-120)} 194 + _, err := db.GetEngine(db.DefaultContext).NoAutoTime().Insert(oldUser) 195 + assert.NoError(t, err) 196 + oldEmail := &user_model.EmailAddress{UID: oldUser.ID, IsPrimary: true, Email: "old@example.com", LowerEmail: "old@example.com"} 197 + err = db.Insert(db.DefaultContext, oldEmail) 198 + assert.NoError(t, err) 199 + 200 + // Add an inactive user that's not older than a minute, with an associated email_address record. 201 + newUser := &user_model.User{Name: "NewInactive", LowerName: "newinactive", Email: "new@example.com"} 202 + err = db.Insert(db.DefaultContext, newUser) 203 + assert.NoError(t, err) 204 + newEmail := &user_model.EmailAddress{UID: newUser.ID, IsPrimary: true, Email: "new@example.com", LowerEmail: "new@example.com"} 205 + err = db.Insert(db.DefaultContext, newEmail) 206 + assert.NoError(t, err) 207 + 208 + err = DeleteInactiveUsers(db.DefaultContext, time.Minute) 209 + assert.NoError(t, err) 210 + 211 + // User older than a minute should be deleted along with their email address. 212 + unittest.AssertExistsIf(t, false, oldUser) 213 + unittest.AssertExistsIf(t, false, oldEmail) 214 + 215 + // User not older than a minute shouldn't be deleted and their emaill address should still exist. 216 + unittest.AssertExistsIf(t, true, newUser) 217 + unittest.AssertExistsIf(t, true, newEmail) 218 + }