44package user
55
66import (
7+ "context"
8+ "io"
9+ "strings"
710 "testing"
811
912 "code.gitea.io/gitea/models/db"
13+ "code.gitea.io/gitea/models/unittest"
1014 "code.gitea.io/gitea/modules/setting"
15+ "code.gitea.io/gitea/modules/storage"
1116 "code.gitea.io/gitea/modules/test"
1217
1318 "github.com/stretchr/testify/assert"
19+ "github.com/stretchr/testify/require"
1420)
1521
1622func TestUserAvatarLink (t * testing.T ) {
@@ -26,3 +32,37 @@ func TestUserAvatarLink(t *testing.T) {
2632 link = u .AvatarLink (db .DefaultContext )
2733 assert .Equal (t , "https://localhost/sub-path/avatars/avatar.png" , link )
2834}
35+
36+ func TestUserAvatarGenerate (t * testing.T ) {
37+ assert .NoError (t , unittest .PrepareTestDatabase ())
38+ var err error
39+ tmpDir := t .TempDir ()
40+ storage .Avatars , err = storage .NewLocalStorage (context .Background (), & setting.Storage {Path : tmpDir })
41+ require .NoError (t , err )
42+
43+ u := unittest .AssertExistsAndLoadBean (t , & User {ID : 2 })
44+
45+ // there was no avatar, generate a new one
46+ assert .Empty (t , u .Avatar )
47+ err = GenerateRandomAvatar (db .DefaultContext , u )
48+ require .NoError (t , err )
49+ assert .NotEmpty (t , u .Avatar )
50+
51+ // make sure the generated one exists
52+ oldAvatarPath := u .CustomAvatarRelativePath ()
53+ _ , err = storage .Avatars .Stat (u .CustomAvatarRelativePath ())
54+ require .NoError (t , err )
55+ // and try to change its content
56+ _ , err = storage .Avatars .Save (u .CustomAvatarRelativePath (), strings .NewReader ("abcd" ), 4 )
57+ require .NoError (t , err )
58+
59+ // try to generate again
60+ err = GenerateRandomAvatar (db .DefaultContext , u )
61+ require .NoError (t , err )
62+ assert .Equal (t , oldAvatarPath , u .CustomAvatarRelativePath ())
63+ f , err := storage .Avatars .Open (u .CustomAvatarRelativePath ())
64+ require .NoError (t , err )
65+ defer f .Close ()
66+ content , _ := io .ReadAll (f )
67+ assert .Equal (t , "abcd" , string (content ))
68+ }
0 commit comments