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.

at forgejo 81 lines 2.3 kB view raw
1// Copyright The Forgejo Authors. 2// SPDX-License-Identifier: MIT 3 4package user 5 6import ( 7 "bytes" 8 "image" 9 "image/png" 10 "os" 11 "testing" 12 13 "forgejo.org/models/db" 14 "forgejo.org/models/unittest" 15 user_model "forgejo.org/models/user" 16 "forgejo.org/modules/storage" 17 "forgejo.org/modules/test" 18 19 "github.com/stretchr/testify/assert" 20 "github.com/stretchr/testify/require" 21) 22 23type alreadyDeletedStorage struct { 24 storage.DiscardStorage 25} 26 27func (s alreadyDeletedStorage) Delete(_ string) error { 28 return os.ErrNotExist 29} 30 31func TestUserDeleteAvatar(t *testing.T) { 32 myImage := image.NewRGBA(image.Rect(0, 0, 1, 1)) 33 var buff bytes.Buffer 34 png.Encode(&buff, myImage) 35 36 t.Run("AtomicStorageFailure", func(t *testing.T) { 37 defer test.MockProtect[storage.ObjectStorage](&storage.Avatars)() 38 39 require.NoError(t, unittest.PrepareTestDatabase()) 40 user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1}) 41 42 err := UploadAvatar(db.DefaultContext, user, buff.Bytes()) 43 require.NoError(t, err) 44 verification := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1}) 45 assert.NotEmpty(t, verification.Avatar) 46 47 // fail to delete ... 48 storage.Avatars = storage.UninitializedStorage 49 err = DeleteAvatar(db.DefaultContext, user) 50 require.Error(t, err) 51 52 // ... the avatar is not removed from the database 53 verification = unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1}) 54 assert.True(t, verification.UseCustomAvatar) 55 56 // already deleted ... 57 storage.Avatars = alreadyDeletedStorage{} 58 err = DeleteAvatar(db.DefaultContext, user) 59 require.NoError(t, err) 60 61 // ... the avatar is removed from the database 62 verification = unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1}) 63 assert.Empty(t, verification.Avatar) 64 }) 65 66 t.Run("Success", func(t *testing.T) { 67 require.NoError(t, unittest.PrepareTestDatabase()) 68 user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1}) 69 70 err := UploadAvatar(db.DefaultContext, user, buff.Bytes()) 71 require.NoError(t, err) 72 verification := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1}) 73 assert.NotEmpty(t, verification.Avatar) 74 75 err = DeleteAvatar(db.DefaultContext, user) 76 require.NoError(t, err) 77 78 verification = unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1}) 79 assert.Empty(t, verification.Avatar) 80 }) 81}