mirror of
https://github.com/zitadel/zitadel.git
synced 2025-04-27 06:30:58 +00:00
287 lines
5.6 KiB
Go
287 lines
5.6 KiB
Go
![]() |
package login
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
|
||
|
"github.com/zitadel/zitadel/internal/domain"
|
||
|
"github.com/zitadel/zitadel/internal/query"
|
||
|
)
|
||
|
|
||
|
func Test_hasEmailChanged(t *testing.T) {
|
||
|
type args struct {
|
||
|
user *query.User
|
||
|
externalUser *domain.ExternalUser
|
||
|
}
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
args args
|
||
|
want bool
|
||
|
}{
|
||
|
{
|
||
|
"no external mail",
|
||
|
args{
|
||
|
user: &query.User{},
|
||
|
externalUser: &domain.ExternalUser{},
|
||
|
},
|
||
|
false,
|
||
|
},
|
||
|
{
|
||
|
"same email unverified",
|
||
|
args{
|
||
|
user: &query.User{
|
||
|
Human: &query.Human{
|
||
|
Email: domain.EmailAddress("email@test.com"),
|
||
|
},
|
||
|
},
|
||
|
externalUser: &domain.ExternalUser{
|
||
|
Email: domain.EmailAddress("email@test.com"),
|
||
|
},
|
||
|
},
|
||
|
false,
|
||
|
},
|
||
|
{
|
||
|
"same email verified",
|
||
|
args{
|
||
|
user: &query.User{
|
||
|
Human: &query.Human{
|
||
|
Email: domain.EmailAddress("email@test.com"),
|
||
|
IsEmailVerified: true,
|
||
|
},
|
||
|
},
|
||
|
externalUser: &domain.ExternalUser{
|
||
|
Email: domain.EmailAddress("email@test.com"),
|
||
|
IsEmailVerified: true,
|
||
|
},
|
||
|
},
|
||
|
false,
|
||
|
},
|
||
|
{
|
||
|
"email already verified",
|
||
|
args{
|
||
|
user: &query.User{
|
||
|
Human: &query.Human{
|
||
|
Email: domain.EmailAddress("email@test.com"),
|
||
|
IsEmailVerified: true,
|
||
|
},
|
||
|
},
|
||
|
externalUser: &domain.ExternalUser{
|
||
|
Email: domain.EmailAddress("email@test.com"),
|
||
|
},
|
||
|
},
|
||
|
false,
|
||
|
},
|
||
|
{
|
||
|
"email changed to verified",
|
||
|
args{
|
||
|
user: &query.User{
|
||
|
Human: &query.Human{
|
||
|
Email: domain.EmailAddress("email@test.com"),
|
||
|
},
|
||
|
},
|
||
|
externalUser: &domain.ExternalUser{
|
||
|
Email: domain.EmailAddress("email@test.com"),
|
||
|
IsEmailVerified: true,
|
||
|
},
|
||
|
},
|
||
|
true,
|
||
|
},
|
||
|
{
|
||
|
"email changed",
|
||
|
args{
|
||
|
user: &query.User{
|
||
|
Human: &query.Human{
|
||
|
Email: domain.EmailAddress("email@test.com"),
|
||
|
},
|
||
|
},
|
||
|
externalUser: &domain.ExternalUser{
|
||
|
Email: domain.EmailAddress("new-email@test.com"),
|
||
|
},
|
||
|
},
|
||
|
true,
|
||
|
},
|
||
|
{
|
||
|
"email changed and verified",
|
||
|
args{
|
||
|
user: &query.User{
|
||
|
Human: &query.Human{
|
||
|
Email: domain.EmailAddress("email@test.com"),
|
||
|
IsEmailVerified: false,
|
||
|
},
|
||
|
},
|
||
|
externalUser: &domain.ExternalUser{
|
||
|
Email: domain.EmailAddress("new-email@test.com"),
|
||
|
IsEmailVerified: true,
|
||
|
},
|
||
|
},
|
||
|
true,
|
||
|
},
|
||
|
}
|
||
|
for _, tt := range tests {
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
if got := hasEmailChanged(tt.args.user, tt.args.externalUser); got != tt.want {
|
||
|
t.Errorf("hasEmailChanged() = %v, want %v", got, tt.want)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func Test_hasPhoneChanged(t *testing.T) {
|
||
|
type args struct {
|
||
|
user *query.User
|
||
|
externalUser *domain.ExternalUser
|
||
|
}
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
args args
|
||
|
want bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
"no external phone",
|
||
|
args{
|
||
|
user: &query.User{},
|
||
|
externalUser: &domain.ExternalUser{},
|
||
|
},
|
||
|
false,
|
||
|
false,
|
||
|
},
|
||
|
{
|
||
|
"invalid phone",
|
||
|
args{
|
||
|
user: &query.User{
|
||
|
Human: &query.Human{
|
||
|
Phone: domain.PhoneNumber("+41791234567"),
|
||
|
},
|
||
|
},
|
||
|
externalUser: &domain.ExternalUser{
|
||
|
Phone: domain.PhoneNumber("invalid"),
|
||
|
},
|
||
|
},
|
||
|
false,
|
||
|
true,
|
||
|
},
|
||
|
{
|
||
|
"same phone unverified",
|
||
|
args{
|
||
|
user: &query.User{
|
||
|
Human: &query.Human{
|
||
|
Phone: domain.PhoneNumber("+41791234567"),
|
||
|
},
|
||
|
},
|
||
|
externalUser: &domain.ExternalUser{
|
||
|
Phone: domain.PhoneNumber("+41791234567"),
|
||
|
},
|
||
|
},
|
||
|
false,
|
||
|
false,
|
||
|
},
|
||
|
{
|
||
|
"same phone verified",
|
||
|
args{
|
||
|
user: &query.User{
|
||
|
Human: &query.Human{
|
||
|
Phone: domain.PhoneNumber("+41791234567"),
|
||
|
IsPhoneVerified: true,
|
||
|
},
|
||
|
},
|
||
|
externalUser: &domain.ExternalUser{
|
||
|
Phone: domain.PhoneNumber("+41791234567"),
|
||
|
IsPhoneVerified: true,
|
||
|
},
|
||
|
},
|
||
|
false,
|
||
|
false,
|
||
|
},
|
||
|
{
|
||
|
"phone already verified",
|
||
|
args{
|
||
|
user: &query.User{
|
||
|
Human: &query.Human{
|
||
|
Phone: domain.PhoneNumber("+41791234567"),
|
||
|
IsPhoneVerified: true,
|
||
|
},
|
||
|
},
|
||
|
externalUser: &domain.ExternalUser{
|
||
|
Phone: domain.PhoneNumber("+41791234567"),
|
||
|
},
|
||
|
},
|
||
|
false,
|
||
|
false,
|
||
|
},
|
||
|
{
|
||
|
"phone changed to verified",
|
||
|
args{
|
||
|
user: &query.User{
|
||
|
Human: &query.Human{
|
||
|
Phone: domain.PhoneNumber("+41791234567"),
|
||
|
},
|
||
|
},
|
||
|
externalUser: &domain.ExternalUser{
|
||
|
Phone: domain.PhoneNumber("+41791234567"),
|
||
|
IsPhoneVerified: true,
|
||
|
},
|
||
|
},
|
||
|
true,
|
||
|
false,
|
||
|
},
|
||
|
{
|
||
|
"phone changed",
|
||
|
args{
|
||
|
user: &query.User{
|
||
|
Human: &query.Human{
|
||
|
Phone: domain.PhoneNumber("+41791234567"),
|
||
|
},
|
||
|
},
|
||
|
externalUser: &domain.ExternalUser{
|
||
|
Phone: domain.PhoneNumber("+4179654321"),
|
||
|
},
|
||
|
},
|
||
|
true,
|
||
|
false,
|
||
|
},
|
||
|
{
|
||
|
"phone changed",
|
||
|
args{
|
||
|
user: &query.User{
|
||
|
Human: &query.Human{
|
||
|
Phone: domain.PhoneNumber("+41791234567"),
|
||
|
},
|
||
|
},
|
||
|
externalUser: &domain.ExternalUser{
|
||
|
Phone: domain.PhoneNumber("+4179654321"),
|
||
|
IsPhoneVerified: true,
|
||
|
},
|
||
|
},
|
||
|
true,
|
||
|
false,
|
||
|
},
|
||
|
{
|
||
|
"normalized phone unchanged",
|
||
|
args{
|
||
|
user: &query.User{
|
||
|
Human: &query.Human{
|
||
|
Phone: domain.PhoneNumber("+41791234567"),
|
||
|
},
|
||
|
},
|
||
|
externalUser: &domain.ExternalUser{
|
||
|
Phone: domain.PhoneNumber("0791234567"),
|
||
|
},
|
||
|
},
|
||
|
false,
|
||
|
false,
|
||
|
},
|
||
|
}
|
||
|
for _, tt := range tests {
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
got, err := hasPhoneChanged(tt.args.user, tt.args.externalUser)
|
||
|
if (err != nil) != tt.wantErr {
|
||
|
t.Errorf("hasPhoneChanged() error = %v, wantErr %v", err, tt.wantErr)
|
||
|
return
|
||
|
}
|
||
|
if got != tt.want {
|
||
|
t.Errorf("hasPhoneChanged() got = %v, want %v", got, tt.want)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
}
|