mirror of https://github.com/go-gitea/gitea.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
2.0 KiB
66 lines
2.0 KiB
// Copyright 2024 The Gitea Authors. All rights reserved. |
|
// SPDX-License-Identifier: MIT |
|
|
|
package user |
|
|
|
import ( |
|
"io" |
|
"strings" |
|
"testing" |
|
|
|
"code.gitea.io/gitea/models/unittest" |
|
"code.gitea.io/gitea/modules/setting" |
|
"code.gitea.io/gitea/modules/storage" |
|
"code.gitea.io/gitea/modules/test" |
|
|
|
"github.com/stretchr/testify/assert" |
|
"github.com/stretchr/testify/require" |
|
) |
|
|
|
func TestUserAvatarLink(t *testing.T) { |
|
defer test.MockVariableValue(&setting.AppURL, "https://localhost/")() |
|
defer test.MockVariableValue(&setting.AppSubURL, "")() |
|
|
|
u := &User{ID: 1, Avatar: "avatar.png"} |
|
link := u.AvatarLink(t.Context()) |
|
assert.Equal(t, "https://localhost/avatars/avatar.png", link) |
|
|
|
setting.AppURL = "https://localhost/sub-path/" |
|
setting.AppSubURL = "/sub-path" |
|
link = u.AvatarLink(t.Context()) |
|
assert.Equal(t, "https://localhost/sub-path/avatars/avatar.png", link) |
|
} |
|
|
|
func TestUserAvatarGenerate(t *testing.T) { |
|
assert.NoError(t, unittest.PrepareTestDatabase()) |
|
var err error |
|
tmpDir := t.TempDir() |
|
storage.Avatars, err = storage.NewLocalStorage(t.Context(), &setting.Storage{Path: tmpDir}) |
|
require.NoError(t, err) |
|
|
|
u := unittest.AssertExistsAndLoadBean(t, &User{ID: 2}) |
|
|
|
// there was no avatar, generate a new one |
|
assert.Empty(t, u.Avatar) |
|
err = GenerateRandomAvatar(t.Context(), u) |
|
require.NoError(t, err) |
|
assert.NotEmpty(t, u.Avatar) |
|
|
|
// make sure the generated one exists |
|
oldAvatarPath := u.CustomAvatarRelativePath() |
|
_, err = storage.Avatars.Stat(u.CustomAvatarRelativePath()) |
|
require.NoError(t, err) |
|
// and try to change its content |
|
_, err = storage.Avatars.Save(u.CustomAvatarRelativePath(), strings.NewReader("abcd"), 4) |
|
require.NoError(t, err) |
|
|
|
// try to generate again |
|
err = GenerateRandomAvatar(t.Context(), u) |
|
require.NoError(t, err) |
|
assert.Equal(t, oldAvatarPath, u.CustomAvatarRelativePath()) |
|
f, err := storage.Avatars.Open(u.CustomAvatarRelativePath()) |
|
require.NoError(t, err) |
|
defer f.Close() |
|
content, _ := io.ReadAll(f) |
|
assert.Equal(t, "abcd", string(content)) |
|
}
|
|
|