gitea源码

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. // Copyright 2024 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package user
  4. import (
  5. "io"
  6. "strings"
  7. "testing"
  8. "code.gitea.io/gitea/models/unittest"
  9. "code.gitea.io/gitea/modules/setting"
  10. "code.gitea.io/gitea/modules/storage"
  11. "code.gitea.io/gitea/modules/test"
  12. "github.com/stretchr/testify/assert"
  13. "github.com/stretchr/testify/require"
  14. )
  15. func TestUserAvatarLink(t *testing.T) {
  16. defer test.MockVariableValue(&setting.AppURL, "https://localhost/")()
  17. defer test.MockVariableValue(&setting.AppSubURL, "")()
  18. u := &User{ID: 1, Avatar: "avatar.png"}
  19. link := u.AvatarLink(t.Context())
  20. assert.Equal(t, "https://localhost/avatars/avatar.png", link)
  21. setting.AppURL = "https://localhost/sub-path/"
  22. setting.AppSubURL = "/sub-path"
  23. link = u.AvatarLink(t.Context())
  24. assert.Equal(t, "https://localhost/sub-path/avatars/avatar.png", link)
  25. }
  26. func TestUserAvatarGenerate(t *testing.T) {
  27. assert.NoError(t, unittest.PrepareTestDatabase())
  28. var err error
  29. tmpDir := t.TempDir()
  30. storage.Avatars, err = storage.NewLocalStorage(t.Context(), &setting.Storage{Path: tmpDir})
  31. require.NoError(t, err)
  32. u := unittest.AssertExistsAndLoadBean(t, &User{ID: 2})
  33. // there was no avatar, generate a new one
  34. assert.Empty(t, u.Avatar)
  35. err = GenerateRandomAvatar(t.Context(), u)
  36. require.NoError(t, err)
  37. assert.NotEmpty(t, u.Avatar)
  38. // make sure the generated one exists
  39. oldAvatarPath := u.CustomAvatarRelativePath()
  40. _, err = storage.Avatars.Stat(u.CustomAvatarRelativePath())
  41. require.NoError(t, err)
  42. // and try to change its content
  43. _, err = storage.Avatars.Save(u.CustomAvatarRelativePath(), strings.NewReader("abcd"), 4)
  44. require.NoError(t, err)
  45. // try to generate again
  46. err = GenerateRandomAvatar(t.Context(), u)
  47. require.NoError(t, err)
  48. assert.Equal(t, oldAvatarPath, u.CustomAvatarRelativePath())
  49. f, err := storage.Avatars.Open(u.CustomAvatarRelativePath())
  50. require.NoError(t, err)
  51. defer f.Close()
  52. content, _ := io.ReadAll(f)
  53. assert.Equal(t, "abcd", string(content))
  54. }