diff --git a/models/fixtures/user.yml b/models/fixtures/user.yml index aa1d80d6f03..e8f13b93bd5 100644 --- a/models/fixtures/user.yml +++ b/models/fixtures/user.yml @@ -9,7 +9,7 @@ salt: salt is_admin: true avatar: avatar1 - avatar_email: user2@example.com + avatar_email: user1@example.com num_repos: 0 - @@ -69,6 +69,7 @@ avatar_email: user5@example.com num_repos: 1 allow_create_organization: false + is_active: true - id: 6 @@ -99,3 +100,35 @@ avatar_email: user7@example.com num_repos: 0 num_members: 1 + +- + id: 8 + lower_name: user8 + name: user8 + full_name: User Eight + email: user8@example.com + passwd: password + type: 0 # user + salt: salt + is_admin: false + avatar: avatar8 + avatar_email: user8@example.com + num_repos: 0 + num_members: 1 + is_active: true + +- + id: 9 + lower_name: user9 + name: user9 + full_name: User Nine + email: user9@example.com + passwd: password + type: 0 # user + salt: salt + is_admin: false + avatar: avatar9 + avatar_email: user9@example.com + num_repos: 0 + num_members: 1 + is_active: false diff --git a/models/user.go b/models/user.go index 306b695bf33..7d4f536242d 100644 --- a/models/user.go +++ b/models/user.go @@ -537,6 +537,12 @@ func (u *User) ShortName(length int) string { return base.EllipsisString(u.Name, length) } +// IsMailable checks if a user is elegible +// to receive emails. +func (u *User) IsMailable() bool { + return u.IsActive +} + // IsUserExist checks if given user name exist, // the user name should be noncased unique. // If uid is presented, then check will rule out that one, @@ -1047,7 +1053,9 @@ func GetUserEmailsByNames(names []string) []string { if err != nil { continue } - mails = append(mails, u.Email) + if u.IsMailable() { + mails = append(mails, u.Email) + } } return mails } diff --git a/models/user_test.go b/models/user_test.go new file mode 100644 index 00000000000..fb3c46d223b --- /dev/null +++ b/models/user_test.go @@ -0,0 +1,19 @@ +// Copyright 2017 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package models + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestGetUserEmailsByNames(t *testing.T) { + assert.NoError(t, PrepareTestDatabase()) + + // ignore none active user email + assert.Equal(t, []string{"user8@example.com"}, GetUserEmailsByNames([]string{"user8", "user9"})) + assert.Equal(t, []string{"user8@example.com", "user5@example.com"}, GetUserEmailsByNames([]string{"user8", "user5"})) +}