mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-11-15 07:09:47 +01:00
Merge pull request '[GITEA] notifies admins on new user registration (squash) fix locale' (#1892) from earl-warren/forgejo:wip-v1.21-notify-admin-new-user into v1.21/forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/1892
This commit is contained in:
commit
72bbb30f9d
3 changed files with 27 additions and 17 deletions
|
@ -59,7 +59,7 @@ func mailNewUser(ctx context.Context, u *user_model.User, lang string, tos []str
|
|||
"Subject": subject,
|
||||
"Body": body,
|
||||
"Language": locale.Language(),
|
||||
"locale": locale,
|
||||
"Locale": locale,
|
||||
"Str2html": templates.Str2html,
|
||||
}
|
||||
|
||||
|
|
|
@ -6,22 +6,25 @@ package mailer
|
|||
import (
|
||||
"context"
|
||||
"strconv"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"code.gitea.io/gitea/models/db"
|
||||
user_model "code.gitea.io/gitea/models/user"
|
||||
"code.gitea.io/gitea/modules/setting"
|
||||
"code.gitea.io/gitea/modules/translation"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func getTestUsers() []*user_model.User {
|
||||
func getTestUsers(t *testing.T) []*user_model.User {
|
||||
t.Helper()
|
||||
admin := new(user_model.User)
|
||||
admin.Name = "admin"
|
||||
admin.Name = "testadmin"
|
||||
admin.IsAdmin = true
|
||||
admin.Language = "en_US"
|
||||
admin.Email = "admin@example.com"
|
||||
require.NoError(t, user_model.CreateUser(db.DefaultContext, admin))
|
||||
|
||||
newUser := new(user_model.User)
|
||||
newUser.Name = "new_user"
|
||||
|
@ -30,15 +33,9 @@ func getTestUsers() []*user_model.User {
|
|||
newUser.Email = "new_user@example.com"
|
||||
newUser.LastLoginUnix = 1693648327
|
||||
newUser.CreatedUnix = 1693648027
|
||||
require.NoError(t, user_model.CreateUser(db.DefaultContext, newUser))
|
||||
|
||||
user_model.CreateUser(db.DefaultContext, admin)
|
||||
user_model.CreateUser(db.DefaultContext, newUser)
|
||||
|
||||
users := make([]*user_model.User, 0)
|
||||
users = append(users, admin)
|
||||
users = append(users, newUser)
|
||||
|
||||
return users
|
||||
return []*user_model.User{admin, newUser}
|
||||
}
|
||||
|
||||
func cleanUpUsers(ctx context.Context, users []*user_model.User) {
|
||||
|
@ -48,6 +45,12 @@ func cleanUpUsers(ctx context.Context, users []*user_model.User) {
|
|||
}
|
||||
|
||||
func TestAdminNotificationMail_test(t *testing.T) {
|
||||
translation.InitLocales(context.Background())
|
||||
locale := translation.NewLocale("")
|
||||
key := "mail.admin.new_user.user_info"
|
||||
translatedKey := locale.Tr(key)
|
||||
require.NotEqualValues(t, key, translatedKey)
|
||||
|
||||
mailService := setting.Mailer{
|
||||
From: "test@example.com",
|
||||
Protocol: "dummy",
|
||||
|
@ -63,20 +66,28 @@ func TestAdminNotificationMail_test(t *testing.T) {
|
|||
ctx := context.Background()
|
||||
NewContext(ctx)
|
||||
|
||||
users := getTestUsers()
|
||||
users := getTestUsers(t)
|
||||
oldSendAsync := sa
|
||||
defer func() {
|
||||
sa = oldSendAsync
|
||||
cleanUpUsers(ctx, users)
|
||||
}()
|
||||
|
||||
called := false
|
||||
sa = func(msgs ...*Message) {
|
||||
assert.Equal(t, len(msgs), 1, "Test provides only one admin user, so only one email must be sent")
|
||||
assert.Equal(t, msgs[0].To, users[0].Email, "checks if the recipient is the admin of the instance")
|
||||
manageUserURL := "/admin/users/" + strconv.FormatInt(users[1].ID, 10)
|
||||
assert.True(t, strings.ContainsAny(msgs[0].Body, manageUserURL), "checks if the message contains the link to manage the newly created user from the admin panel")
|
||||
assert.Contains(t, msgs[0].Body, manageUserURL)
|
||||
assert.Contains(t, msgs[0].Body, translatedKey, "the .Locale translates to nothing")
|
||||
assert.Contains(t, msgs[0].Body, users[1].Name, "user name of the newly created user")
|
||||
for _, untranslated := range []string{"mail.admin", "admin.users"} {
|
||||
assert.NotContains(t, msgs[0].Body, untranslated, "this is an untranslated placeholder prefix")
|
||||
}
|
||||
called = true
|
||||
}
|
||||
MailNewUser(ctx, users[1])
|
||||
assert.True(t, called)
|
||||
|
||||
// test with SEND_NOTIFICATION_EMAIL_ON_NEW_USER disabled; emails shouldn't be sent
|
||||
setting.Admin.SendNotificationEmailOnNewUser = false
|
||||
|
|
|
@ -13,9 +13,8 @@
|
|||
|
||||
<body>
|
||||
<ul>
|
||||
<h3>{{ctx.Locale.Tr "mail.admin.new_user.user_info"}}</h3>
|
||||
<li>{{ctx.Locale.Tr "admin.users.created"}}: {{DateTime "full" .NewUser.LastLoginUnix}}</li>
|
||||
<li>{{ctx.Locale.Tr "admin.users.last_login"}}: {{DateTime "full" .NewUser.CreatedUnix}}</li>
|
||||
<h3>{{.Locale.Tr "mail.admin.new_user.user_info" | Str2html}}: {{.NewUser.Name}}</h3>
|
||||
<li>{{.Locale.Tr "admin.users.created" | Str2html}}: {{DateTime "full" .NewUser.CreatedUnix}}</li>
|
||||
</ul>
|
||||
<p> {{.Body | Str2html}} </p>
|
||||
</body>
|
||||
|
|
Loading…
Reference in a new issue