Skip to content

Commit 437d1a8

Browse files
committed
Keeping PhoneNumber in fetched UserInfo to avoid breaking changes
1 parent e6d19a8 commit 437d1a8

File tree

3 files changed

+115
-3
lines changed

3 files changed

+115
-3
lines changed

auth/user_mgt.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -713,7 +713,6 @@ func validateAndFormatMfaSettings(mfaSettings MultiFactorSettings, methodType st
713713
multiFactorInfo.PhoneMultiFactorInfo = &PhoneMultiFactorInfo{
714714
PhoneNumber: multiFactorInfo.PhoneNumber,
715715
}
716-
fmt.Println("`PhoneNumber` is deprecated, use `PhoneMultiFactorInfo` instead")
717716
} else {
718717
// Both PhoneMultiFactorInfo and deprecated PhoneNumber are missing.
719718
return nil, fmt.Errorf("\"PhoneMultiFactorInfo\" must be defined")
@@ -1121,6 +1120,7 @@ func (r *userQueryResponse) makeExportedUserRecord() (*ExportedUserRecord, error
11211120
DisplayName: factor.DisplayName,
11221121
EnrollmentTimestamp: enrollmentTimestamp,
11231122
FactorID: phoneMultiFactorID,
1123+
PhoneNumber: factor.PhoneInfo,
11241124
PhoneMultiFactorInfo: &PhoneMultiFactorInfo{
11251125
PhoneNumber: factor.PhoneInfo,
11261126
},

auth/user_mgt_test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ var testUser = &UserRecord{
7575
PhoneMultiFactorInfo: &PhoneMultiFactorInfo{
7676
PhoneNumber: "+1234567890",
7777
},
78+
PhoneNumber: "+1234567890",
7879
DisplayName: "My MFA Phone",
7980
},
8081
{
@@ -1088,12 +1089,14 @@ var updateUserCases = []struct {
10881089
PhoneMultiFactorInfo: &PhoneMultiFactorInfo{
10891090
PhoneNumber: "+11234567890",
10901091
},
1092+
PhoneNumber: "+11234567890",
10911093
DisplayName: "Spouse's phone number",
10921094
FactorID: "phone",
10931095
}, {
10941096
PhoneMultiFactorInfo: &PhoneMultiFactorInfo{
10951097
PhoneNumber: "+11234567890",
10961098
},
1099+
PhoneNumber: "+11234567890",
10971100
DisplayName: "Spouse's phone number",
10981101
FactorID: "phone",
10991102
},

integration/auth/user_mgt_test.go

Lines changed: 111 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ import (
3030

3131
"firebase.google.com/go/v4/auth"
3232
"firebase.google.com/go/v4/auth/hash"
33-
"github.com/google/go-cmp/cmp"
3433
"google.golang.org/api/iterator"
3534
)
3635

@@ -461,6 +460,7 @@ func TestCreateUserMFA(t *testing.T) {
461460
PhoneMultiFactorInfo: &auth.PhoneMultiFactorInfo{
462461
PhoneNumber: "+11234567890",
463462
},
463+
PhoneNumber: "+11234567890",
464464
EnrollmentTimestamp: user.MultiFactor.EnrolledFactors[0].EnrollmentTimestamp,
465465
},
466466
{
@@ -470,6 +470,7 @@ func TestCreateUserMFA(t *testing.T) {
470470
PhoneMultiFactorInfo: &auth.PhoneMultiFactorInfo{
471471
PhoneNumber: "+19876543210",
472472
},
473+
PhoneNumber: "+19876543210",
473474
EnrollmentTimestamp: user.MultiFactor.EnrolledFactors[1].EnrollmentTimestamp,
474475
},
475476
}
@@ -489,7 +490,6 @@ func TestCreateUserMFA(t *testing.T) {
489490
},
490491
}
491492
if !reflect.DeepEqual(*user, want) {
492-
fmt.Println(cmp.Diff(*user, want))
493493
t.Errorf("CreateUser() = %#v; want = %#v", *user, want)
494494
}
495495
}
@@ -730,6 +730,115 @@ func TestUpdateUser(t *testing.T) {
730730
})
731731
}
732732

733+
func TestUpdateUserMFA(t *testing.T) {
734+
// Creates a new user for testing purposes. The user's uid will be
735+
// '$name_$tenRandomChars' and email will be
736+
737+
createTestUserWithMFA := func(name string) *auth.UserRecord {
738+
// TODO(rsgowman: This function could usefully be employed throughout
739+
// this file.
740+
tenRandomChars := generateRandomAlphaNumericString(10)
741+
userRecord, err := client.CreateUser(context.Background(),
742+
(&auth.UserToCreate{}).
743+
Email(name+"_"+tenRandomChars+"@example.com").
744+
EmailVerified(true).
745+
MFASettings(auth.MultiFactorSettings{
746+
EnrolledFactors: []*auth.MultiFactorInfo{
747+
{
748+
PhoneMultiFactorInfo: &auth.PhoneMultiFactorInfo{
749+
PhoneNumber: "+11234567890",
750+
},
751+
DisplayName: "Phone Number active",
752+
FactorID: "phone",
753+
},
754+
{
755+
PhoneNumber: "+19876543210",
756+
DisplayName: "Phone Number deprecated",
757+
FactorID: "phone",
758+
},
759+
},
760+
}),
761+
)
762+
if err != nil {
763+
t.Fatal(err)
764+
}
765+
return userRecord
766+
}
767+
// Create a test user with MFA settings for testing
768+
user := createTestUserWithMFA("UpdateUserMFA")
769+
defer deleteUser(user.UID)
770+
771+
// Define the updated MFA factors
772+
updatedFactors := []*auth.MultiFactorInfo{
773+
{
774+
UID: user.MultiFactor.EnrolledFactors[0].UID,
775+
DisplayName: "Phone Number active updated",
776+
FactorID: "phone",
777+
PhoneMultiFactorInfo: &auth.PhoneMultiFactorInfo{
778+
PhoneNumber: "+11234567890",
779+
},
780+
},
781+
{
782+
UID: user.MultiFactor.EnrolledFactors[1].UID,
783+
DisplayName: "Phone Number deprecated updated",
784+
FactorID: "phone",
785+
PhoneNumber: "+19876543210",
786+
},
787+
}
788+
789+
// Update the MFA settings
790+
params := (&auth.UserToUpdate{}).MFASettings(auth.MultiFactorSettings{
791+
EnrolledFactors: updatedFactors,
792+
})
793+
794+
updatedUser, err := client.UpdateUser(context.Background(), user.UID, params)
795+
if err != nil {
796+
t.Fatal(err)
797+
}
798+
799+
want := auth.UserRecord{
800+
EmailVerified: true,
801+
UserInfo: &auth.UserInfo{
802+
Email: user.Email,
803+
UID: user.UID,
804+
ProviderID: "firebase",
805+
},
806+
UserMetadata: &auth.UserMetadata{
807+
CreationTimestamp: user.UserMetadata.CreationTimestamp,
808+
},
809+
TokensValidAfterMillis: user.TokensValidAfterMillis,
810+
MultiFactor: &auth.MultiFactorSettings{
811+
EnrolledFactors: []*auth.MultiFactorInfo{
812+
{
813+
UID: user.MultiFactor.EnrolledFactors[0].UID,
814+
PhoneMultiFactorInfo: &auth.PhoneMultiFactorInfo{
815+
PhoneNumber: "+11234567890",
816+
},
817+
PhoneNumber: "+11234567890",
818+
DisplayName: "Phone Number active updated",
819+
FactorID: "phone",
820+
EnrollmentTimestamp: user.MultiFactor.EnrolledFactors[0].EnrollmentTimestamp,
821+
},
822+
{
823+
UID: user.MultiFactor.EnrolledFactors[1].UID,
824+
PhoneMultiFactorInfo: &auth.PhoneMultiFactorInfo{
825+
PhoneNumber: "+19876543210",
826+
},
827+
PhoneNumber: "+19876543210",
828+
DisplayName: "Phone Number deprecated updated",
829+
FactorID: "phone",
830+
EnrollmentTimestamp: user.MultiFactor.EnrolledFactors[1].EnrollmentTimestamp,
831+
},
832+
},
833+
},
834+
}
835+
836+
// Compare the updated user with the expected user record
837+
if !reflect.DeepEqual(*updatedUser, want) {
838+
t.Errorf("UpdateUser() = %#v; want = %#v", *updatedUser, want)
839+
}
840+
}
841+
733842
func TestDisableUser(t *testing.T) {
734843
user := newUserWithParams(t)
735844
defer deleteUser(user.UID)

0 commit comments

Comments
 (0)