Skip to content

Commit 9b8609e

Browse files
authored
Fix GetUsersByEmails (#34423)
Fix #34418, fix #34353
1 parent 0f63a5e commit 9b8609e

File tree

3 files changed

+29
-35
lines changed

3 files changed

+29
-35
lines changed

models/user/user.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -1203,7 +1203,8 @@ func GetUsersByEmails(ctx context.Context, emails []string) (map[string]*User, e
12031203
for _, email := range emailAddresses {
12041204
user := users[email.UID]
12051205
if user != nil {
1206-
results[user.GetEmail()] = user
1206+
results[user.Email] = user
1207+
results[user.GetPlaceholderEmail()] = user
12071208
}
12081209
}
12091210
}
@@ -1213,6 +1214,7 @@ func GetUsersByEmails(ctx context.Context, emails []string) (map[string]*User, e
12131214
return nil, err
12141215
}
12151216
for _, user := range users {
1217+
results[user.Email] = user
12161218
results[user.GetPlaceholderEmail()] = user
12171219
}
12181220
return results, nil

models/user/user_test.go

+17-7
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
"code.gitea.io/gitea/modules/timeutil"
2424

2525
"github.com/stretchr/testify/assert"
26+
"github.com/stretchr/testify/require"
2627
)
2728

2829
func TestIsUsableUsername(t *testing.T) {
@@ -48,14 +49,23 @@ func TestOAuth2Application_LoadUser(t *testing.T) {
4849
assert.NotNil(t, user)
4950
}
5051

51-
func TestGetUserEmailsByNames(t *testing.T) {
52+
func TestUserEmails(t *testing.T) {
5253
assert.NoError(t, unittest.PrepareTestDatabase())
53-
54-
// ignore none active user email
55-
assert.ElementsMatch(t, []string{"[email protected]"}, user_model.GetUserEmailsByNames(db.DefaultContext, []string{"user8", "user9"}))
56-
assert.ElementsMatch(t, []string{"[email protected]", "[email protected]"}, user_model.GetUserEmailsByNames(db.DefaultContext, []string{"user8", "user5"}))
57-
58-
assert.ElementsMatch(t, []string{"[email protected]"}, user_model.GetUserEmailsByNames(db.DefaultContext, []string{"user8", "org7"}))
54+
t.Run("GetUserEmailsByNames", func(t *testing.T) {
55+
// ignore none active user email
56+
assert.ElementsMatch(t, []string{"[email protected]"}, user_model.GetUserEmailsByNames(db.DefaultContext, []string{"user8", "user9"}))
57+
assert.ElementsMatch(t, []string{"[email protected]", "[email protected]"}, user_model.GetUserEmailsByNames(db.DefaultContext, []string{"user8", "user5"}))
58+
assert.ElementsMatch(t, []string{"[email protected]"}, user_model.GetUserEmailsByNames(db.DefaultContext, []string{"user8", "org7"}))
59+
})
60+
t.Run("GetUsersByEmails", func(t *testing.T) {
61+
m, err := user_model.GetUsersByEmails(db.DefaultContext, []string{"[email protected]", "user2@" + setting.Service.NoReplyAddress})
62+
require.NoError(t, err)
63+
require.Len(t, m, 4)
64+
assert.EqualValues(t, 1, m["[email protected]"].ID)
65+
assert.EqualValues(t, 1, m["user1@"+setting.Service.NoReplyAddress].ID)
66+
assert.EqualValues(t, 2, m["[email protected]"].ID)
67+
assert.EqualValues(t, 2, m["user2@"+setting.Service.NoReplyAddress].ID)
68+
})
5969
}
6070

6171
func TestCanCreateOrganization(t *testing.T) {

tests/integration/repo_commits_test.go

+9-27
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ import (
1212
"testing"
1313

1414
auth_model "code.gitea.io/gitea/models/auth"
15-
"code.gitea.io/gitea/models/unittest"
16-
user_model "code.gitea.io/gitea/models/user"
1715
"code.gitea.io/gitea/modules/json"
1816
"code.gitea.io/gitea/modules/setting"
1917
api "code.gitea.io/gitea/modules/structs"
@@ -40,40 +38,24 @@ func TestRepoCommits(t *testing.T) {
4038

4139
func Test_ReposGitCommitListNotMaster(t *testing.T) {
4240
defer tests.PrepareTestEnv(t)()
43-
user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
44-
// Login as User2.
45-
session := loginUser(t, user.Name)
46-
47-
// Test getting commits (Page 1)
48-
req := NewRequestf(t, "GET", "/%s/repo16/commits/branch/master", user.Name)
41+
session := loginUser(t, "user2")
42+
req := NewRequest(t, "GET", "/user2/repo16/commits/branch/master")
4943
resp := session.MakeRequest(t, req, http.StatusOK)
5044

5145
doc := NewHTMLParser(t, resp.Body)
52-
commits := []string{}
46+
var commits []string
5347
doc.doc.Find("#commits-table .commit-id-short").Each(func(i int, s *goquery.Selection) {
54-
commitURL, exists := s.Attr("href")
55-
assert.True(t, exists)
56-
assert.NotEmpty(t, commitURL)
48+
commitURL, _ := s.Attr("href")
5749
commits = append(commits, path.Base(commitURL))
5850
})
51+
assert.Equal(t, []string{"69554a64c1e6030f051e5c3f94bfbd773cd6a324", "27566bd5738fc8b4e3fef3c5e72cce608537bd95", "5099b81332712fe655e34e8dd63574f503f61811"}, commits)
5952

60-
assert.Len(t, commits, 3)
61-
assert.Equal(t, "69554a64c1e6030f051e5c3f94bfbd773cd6a324", commits[0])
62-
assert.Equal(t, "27566bd5738fc8b4e3fef3c5e72cce608537bd95", commits[1])
63-
assert.Equal(t, "5099b81332712fe655e34e8dd63574f503f61811", commits[2])
64-
65-
userNames := []string{}
53+
var userHrefs []string
6654
doc.doc.Find("#commits-table .author-wrapper").Each(func(i int, s *goquery.Selection) {
67-
userPath, exists := s.Attr("href")
68-
assert.True(t, exists)
69-
assert.NotEmpty(t, userPath)
70-
userNames = append(userNames, path.Base(userPath))
55+
userHref, _ := s.Attr("href")
56+
userHrefs = append(userHrefs, userHref)
7157
})
72-
73-
assert.Len(t, userNames, 3)
74-
assert.Equal(t, "User2", userNames[0])
75-
assert.Equal(t, "user21", userNames[1])
76-
assert.Equal(t, "User2", userNames[2])
58+
assert.Equal(t, []string{"/user2", "/user21", "/user2"}, userHrefs)
7759
}
7860

7961
func doTestRepoCommitWithStatus(t *testing.T, state string, classes ...string) {

0 commit comments

Comments
 (0)