diff --git a/pkg/oidc/userinfo.go b/pkg/oidc/userinfo.go index 6bc0016..2ae2acb 100644 --- a/pkg/oidc/userinfo.go +++ b/pkg/oidc/userinfo.go @@ -360,6 +360,7 @@ func (i *userinfo) MarshalJSON() ([]byte, error) { func (i *userinfo) UnmarshalJSON(data []byte) error { type Alias userinfo a := &struct { + Address *userInfoAddress `json:"address,omitempty"` *Alias UpdatedAt int64 `json:"update_at,omitempty"` }{ @@ -368,7 +369,7 @@ func (i *userinfo) UnmarshalJSON(data []byte) error { if err := json.Unmarshal(data, &a); err != nil { return err } - + i.Address = a.Address i.UpdatedAt = Time(time.Unix(a.UpdatedAt, 0).UTC()) if err := json.Unmarshal(data, &i.claims); err != nil { diff --git a/pkg/oidc/userinfo_test.go b/pkg/oidc/userinfo_test.go new file mode 100644 index 0000000..c3c8b7b --- /dev/null +++ b/pkg/oidc/userinfo_test.go @@ -0,0 +1,26 @@ +package oidc + +import ( + "encoding/json" + "github.com/stretchr/testify/assert" + "testing" +) + +func TestUserInfoMarshal(t *testing.T) { + userinfo := NewUserInfo() + userinfo.SetSubject("test") + userinfo.SetAddress(NewUserInfoAddress("Test 789\nPostfach 2", "", "", "", "", "")) + userinfo.SetEmail("test", true) + userinfo.SetPhone("0791234567", true) + userinfo.SetName("Test") + userinfo.AppendClaims("private_claim", "test") + + marshal, err := json.Marshal(userinfo) + out := NewUserInfo() + assert.NoError(t, err) + assert.NoError(t, json.Unmarshal(marshal, out)) + assert.Equal(t, userinfo.GetAddress(), out.GetAddress()) + expected, err := json.Marshal(out) + assert.NoError(t, err) + assert.Equal(t, expected, marshal) +}