generated from VLADIMIR/template
add local
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
package users_service
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestLocalAccountOperationsDoNotChangeUsers(t *testing.T) {
|
||||
for _, test := range []struct {
|
||||
name string
|
||||
run func(*UsersService) error
|
||||
}{
|
||||
{"signup", func(s *UsersService) error {
|
||||
return s.AddUser(context.Background(), "Local", "local@example.com", true, true, "", "")
|
||||
}},
|
||||
{"password reset", func(s *UsersService) error {
|
||||
return s.RefreshPassword(context.Background(), "local@example.com")
|
||||
}},
|
||||
} {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
repo := newFakeRepo()
|
||||
repo.seed("local@example.com", "unchanged-hash")
|
||||
s := &UsersService{usersRepo: repo}
|
||||
if err := test.run(s); !errors.Is(err, ErrEmailUnavailable) {
|
||||
t.Fatalf("error = %v", err)
|
||||
}
|
||||
user, err := repo.GetUserByEmail(context.Background(), "local@example.com")
|
||||
if err != nil || repo.userCount() != 1 || user.PasswordHash != "unchanged-hash" {
|
||||
t.Fatalf("account changed: user=%v, error=%v", user, err)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -76,6 +76,8 @@ func NewUsersService(
|
||||
}
|
||||
|
||||
var (
|
||||
// ErrEmailUnavailable indicates that email-based account operations are disabled.
|
||||
ErrEmailUnavailable = errors.New("почтовые операции отключены на локальной площадке; обратитесь к организатору")
|
||||
ErrTermsNotAccepted = errors.New("необходимо принять пользовательское соглашение и политику конфиденциальности")
|
||||
// ErrInvalidEmail indicates that an email address is invalid.
|
||||
ErrInvalidEmail = errors.New("некорректный email")
|
||||
@@ -99,6 +101,9 @@ func (s *UsersService) AddUser(
|
||||
ip string,
|
||||
userAgent string,
|
||||
) error {
|
||||
if s.emailSender == nil {
|
||||
return ErrEmailUnavailable
|
||||
}
|
||||
if !acceptTerms || !acceptPrivacy {
|
||||
return ErrTermsNotAccepted
|
||||
}
|
||||
@@ -184,6 +189,9 @@ func (s *UsersService) RefreshPassword(
|
||||
ctx context.Context,
|
||||
email string,
|
||||
) error {
|
||||
if s.emailSender == nil {
|
||||
return ErrEmailUnavailable
|
||||
}
|
||||
email = strings.TrimSpace(email)
|
||||
if err := validateEmail(email); err != nil {
|
||||
return err
|
||||
|
||||
Reference in New Issue
Block a user