mirror of
https://github.com/andwati/zitadel.git
synced 2026-11-08 07:05:12 +00:00
fix: token for post authentication action and change phone and email (#5933)
* fix: token for post authentication action and change phone and email * fix checks and add tests * improve change checks and add tests * add more tests * remove unintended test --------- Co-authored-by: Livio Spring <[email protected]>
This commit is contained in:
co-authored by
Livio Spring
parent
4982af898a
commit
57e189e590
@@ -0,0 +1,286 @@
|
||||
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 protected]"),
|
||||
},
|
||||
},
|
||||
externalUser: &domain.ExternalUser{
|
||||
Email: domain.EmailAddress("[email protected]"),
|
||||
},
|
||||
},
|
||||
false,
|
||||
},
|
||||
{
|
||||
"same email verified",
|
||||
args{
|
||||
user: &query.User{
|
||||
Human: &query.Human{
|
||||
Email: domain.EmailAddress("[email protected]"),
|
||||
IsEmailVerified: true,
|
||||
},
|
||||
},
|
||||
externalUser: &domain.ExternalUser{
|
||||
Email: domain.EmailAddress("[email protected]"),
|
||||
IsEmailVerified: true,
|
||||
},
|
||||
},
|
||||
false,
|
||||
},
|
||||
{
|
||||
"email already verified",
|
||||
args{
|
||||
user: &query.User{
|
||||
Human: &query.Human{
|
||||
Email: domain.EmailAddress("[email protected]"),
|
||||
IsEmailVerified: true,
|
||||
},
|
||||
},
|
||||
externalUser: &domain.ExternalUser{
|
||||
Email: domain.EmailAddress("[email protected]"),
|
||||
},
|
||||
},
|
||||
false,
|
||||
},
|
||||
{
|
||||
"email changed to verified",
|
||||
args{
|
||||
user: &query.User{
|
||||
Human: &query.Human{
|
||||
Email: domain.EmailAddress("[email protected]"),
|
||||
},
|
||||
},
|
||||
externalUser: &domain.ExternalUser{
|
||||
Email: domain.EmailAddress("[email protected]"),
|
||||
IsEmailVerified: true,
|
||||
},
|
||||
},
|
||||
true,
|
||||
},
|
||||
{
|
||||
"email changed",
|
||||
args{
|
||||
user: &query.User{
|
||||
Human: &query.Human{
|
||||
Email: domain.EmailAddress("[email protected]"),
|
||||
},
|
||||
},
|
||||
externalUser: &domain.ExternalUser{
|
||||
Email: domain.EmailAddress("[email protected]"),
|
||||
},
|
||||
},
|
||||
true,
|
||||
},
|
||||
{
|
||||
"email changed and verified",
|
||||
args{
|
||||
user: &query.User{
|
||||
Human: &query.Human{
|
||||
Email: domain.EmailAddress("[email protected]"),
|
||||
IsEmailVerified: false,
|
||||
},
|
||||
},
|
||||
externalUser: &domain.ExternalUser{
|
||||
Email: domain.EmailAddress("[email protected]"),
|
||||
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)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user