aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwxiaoguang <wxiaoguang@gmail.com>2025-05-11 02:47:58 +0800
committerGitHub <noreply@github.com>2025-05-10 11:47:58 -0700
commit9b8609e017aef8376eb59d9fd3e428e35f9caeda (patch)
treef874cf1ebb976c08d7c69b021ccac79ee413f935
parent0f63a5ef48b23c6ab26a4b13cfd26edbe4efbfa3 (diff)
downloadgitea-9b8609e017aef8376eb59d9fd3e428e35f9caeda.tar.gz
gitea-9b8609e017aef8376eb59d9fd3e428e35f9caeda.zip
Fix GetUsersByEmails (#34423)
Fix #34418, fix #34353
-rw-r--r--models/user/user.go4
-rw-r--r--models/user/user_test.go24
-rw-r--r--tests/integration/repo_commits_test.go36
3 files changed, 29 insertions, 35 deletions
diff --git a/models/user/user.go b/models/user/user.go
index fd420f79c7..d7331d79f0 100644
--- a/models/user/user.go
+++ b/models/user/user.go
@@ -1203,7 +1203,8 @@ func GetUsersByEmails(ctx context.Context, emails []string) (map[string]*User, e
for _, email := range emailAddresses {
user := users[email.UID]
if user != nil {
- results[user.GetEmail()] = user
+ results[user.Email] = user
+ results[user.GetPlaceholderEmail()] = user
}
}
}
@@ -1213,6 +1214,7 @@ func GetUsersByEmails(ctx context.Context, emails []string) (map[string]*User, e
return nil, err
}
for _, user := range users {
+ results[user.Email] = user
results[user.GetPlaceholderEmail()] = user
}
return results, nil
diff --git a/models/user/user_test.go b/models/user/user_test.go
index 90e8bf13a8..dd232abe2e 100644
--- a/models/user/user_test.go
+++ b/models/user/user_test.go
@@ -23,6 +23,7 @@ import (
"code.gitea.io/gitea/modules/timeutil"
"github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
)
func TestIsUsableUsername(t *testing.T) {
@@ -48,14 +49,23 @@ func TestOAuth2Application_LoadUser(t *testing.T) {
assert.NotNil(t, user)
}
-func TestGetUserEmailsByNames(t *testing.T) {
+func TestUserEmails(t *testing.T) {
assert.NoError(t, unittest.PrepareTestDatabase())
-
- // ignore none active user email
- assert.ElementsMatch(t, []string{"user8@example.com"}, user_model.GetUserEmailsByNames(db.DefaultContext, []string{"user8", "user9"}))
- assert.ElementsMatch(t, []string{"user8@example.com", "user5@example.com"}, user_model.GetUserEmailsByNames(db.DefaultContext, []string{"user8", "user5"}))
-
- assert.ElementsMatch(t, []string{"user8@example.com"}, user_model.GetUserEmailsByNames(db.DefaultContext, []string{"user8", "org7"}))
+ t.Run("GetUserEmailsByNames", func(t *testing.T) {
+ // ignore none active user email
+ assert.ElementsMatch(t, []string{"user8@example.com"}, user_model.GetUserEmailsByNames(db.DefaultContext, []string{"user8", "user9"}))
+ assert.ElementsMatch(t, []string{"user8@example.com", "user5@example.com"}, user_model.GetUserEmailsByNames(db.DefaultContext, []string{"user8", "user5"}))
+ assert.ElementsMatch(t, []string{"user8@example.com"}, user_model.GetUserEmailsByNames(db.DefaultContext, []string{"user8", "org7"}))
+ })
+ t.Run("GetUsersByEmails", func(t *testing.T) {
+ m, err := user_model.GetUsersByEmails(db.DefaultContext, []string{"user1@example.com", "user2@" + setting.Service.NoReplyAddress})
+ require.NoError(t, err)
+ require.Len(t, m, 4)
+ assert.EqualValues(t, 1, m["user1@example.com"].ID)
+ assert.EqualValues(t, 1, m["user1@"+setting.Service.NoReplyAddress].ID)
+ assert.EqualValues(t, 2, m["user2@example.com"].ID)
+ assert.EqualValues(t, 2, m["user2@"+setting.Service.NoReplyAddress].ID)
+ })
}
func TestCanCreateOrganization(t *testing.T) {
diff --git a/tests/integration/repo_commits_test.go b/tests/integration/repo_commits_test.go
index dee0aa6176..504d2adacc 100644
--- a/tests/integration/repo_commits_test.go
+++ b/tests/integration/repo_commits_test.go
@@ -12,8 +12,6 @@ import (
"testing"
auth_model "code.gitea.io/gitea/models/auth"
- "code.gitea.io/gitea/models/unittest"
- user_model "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/setting"
api "code.gitea.io/gitea/modules/structs"
@@ -40,40 +38,24 @@ func TestRepoCommits(t *testing.T) {
func Test_ReposGitCommitListNotMaster(t *testing.T) {
defer tests.PrepareTestEnv(t)()
- user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
- // Login as User2.
- session := loginUser(t, user.Name)
-
- // Test getting commits (Page 1)
- req := NewRequestf(t, "GET", "/%s/repo16/commits/branch/master", user.Name)
+ session := loginUser(t, "user2")
+ req := NewRequest(t, "GET", "/user2/repo16/commits/branch/master")
resp := session.MakeRequest(t, req, http.StatusOK)
doc := NewHTMLParser(t, resp.Body)
- commits := []string{}
+ var commits []string
doc.doc.Find("#commits-table .commit-id-short").Each(func(i int, s *goquery.Selection) {
- commitURL, exists := s.Attr("href")
- assert.True(t, exists)
- assert.NotEmpty(t, commitURL)
+ commitURL, _ := s.Attr("href")
commits = append(commits, path.Base(commitURL))
})
+ assert.Equal(t, []string{"69554a64c1e6030f051e5c3f94bfbd773cd6a324", "27566bd5738fc8b4e3fef3c5e72cce608537bd95", "5099b81332712fe655e34e8dd63574f503f61811"}, commits)
- assert.Len(t, commits, 3)
- assert.Equal(t, "69554a64c1e6030f051e5c3f94bfbd773cd6a324", commits[0])
- assert.Equal(t, "27566bd5738fc8b4e3fef3c5e72cce608537bd95", commits[1])
- assert.Equal(t, "5099b81332712fe655e34e8dd63574f503f61811", commits[2])
-
- userNames := []string{}
+ var userHrefs []string
doc.doc.Find("#commits-table .author-wrapper").Each(func(i int, s *goquery.Selection) {
- userPath, exists := s.Attr("href")
- assert.True(t, exists)
- assert.NotEmpty(t, userPath)
- userNames = append(userNames, path.Base(userPath))
+ userHref, _ := s.Attr("href")
+ userHrefs = append(userHrefs, userHref)
})
-
- assert.Len(t, userNames, 3)
- assert.Equal(t, "User2", userNames[0])
- assert.Equal(t, "user21", userNames[1])
- assert.Equal(t, "User2", userNames[2])
+ assert.Equal(t, []string{"/user2", "/user21", "/user2"}, userHrefs)
}
func doTestRepoCommitWithStatus(t *testing.T, state string, classes ...string) {