Skip to content

Commit f8fdcc3

Browse files
authored
fix: Removing empty/unspecified fields from UserProvider (#477)
Prevent serializing empty strings for unspecified fields in auth.UserProvider.
1 parent ffc7617 commit f8fdcc3

File tree

2 files changed

+59
-3
lines changed

2 files changed

+59
-3
lines changed

auth/import_users.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -195,9 +195,9 @@ func (u *UserToImport) set(key string, value interface{}) *UserToImport {
195195
type UserProvider struct {
196196
UID string `json:"rawId"`
197197
ProviderID string `json:"providerId"`
198-
Email string `json:"email"`
199-
DisplayName string `json:"displayName"`
200-
PhotoURL string `json:"photoUrl"`
198+
Email string `json:"email,omitempty"`
199+
DisplayName string `json:"displayName,omitempty"`
200+
PhotoURL string `json:"photoUrl,omitempty"`
201201
}
202202

203203
// ProviderData setter.

auth/user_mgt_test.go

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1134,6 +1134,62 @@ func TestSetCustomUserClaims(t *testing.T) {
11341134
}
11351135
}
11361136

1137+
func TestUserProvider(t *testing.T) {
1138+
cases := []struct {
1139+
provider *UserProvider
1140+
want map[string]interface{}
1141+
}{
1142+
{
1143+
provider: &UserProvider{UID: "test", ProviderID: "google.com"},
1144+
want: map[string]interface{}{"rawId": "test", "providerId": "google.com"},
1145+
},
1146+
{
1147+
provider: &UserProvider{
1148+
UID: "test",
1149+
ProviderID: "google.com",
1150+
DisplayName: "Test User",
1151+
},
1152+
want: map[string]interface{}{
1153+
"rawId": "test",
1154+
"providerId": "google.com",
1155+
"displayName": "Test User",
1156+
},
1157+
},
1158+
{
1159+
provider: &UserProvider{
1160+
UID: "test",
1161+
ProviderID: "google.com",
1162+
DisplayName: "Test User",
1163+
Email: "test@example.com",
1164+
PhotoURL: "https://test.com/user.png",
1165+
},
1166+
want: map[string]interface{}{
1167+
"rawId": "test",
1168+
"providerId": "google.com",
1169+
"displayName": "Test User",
1170+
"email": "test@example.com",
1171+
"photoUrl": "https://test.com/user.png",
1172+
},
1173+
},
1174+
}
1175+
1176+
for idx, tc := range cases {
1177+
b, err := json.Marshal(tc.provider)
1178+
if err != nil {
1179+
t.Fatal(err)
1180+
}
1181+
1182+
var got map[string]interface{}
1183+
if err := json.Unmarshal(b, &got); err != nil {
1184+
t.Fatal(err)
1185+
}
1186+
1187+
if !reflect.DeepEqual(got, tc.want) {
1188+
t.Errorf("[%d] UserProvider = %#v; want = %#v", idx, got, tc.want)
1189+
}
1190+
}
1191+
}
1192+
11371193
func TestUserToImport(t *testing.T) {
11381194
cases := []struct {
11391195
user *UserToImport

0 commit comments

Comments
 (0)