package profile import ( "encoding/json" "fmt" "testing" "github.com/stretchr/testify/assert" ) func TestProfile_WithoutAddress(t *testing.T) { p := &Profile{ Subject: "subject_1", Organization: "organization_1", Roles: "roles_1", GivenName: "given_name_1", } res, _ := json.Marshal(p) fmt.Println(string(res)) expectedJSON := "{\"sub\":\"subject_1\",\"org\":\"organization_1\",\"rls\":\"roles_1\",\"given_name\":\"given_name_1\",\"last_updated\":0,\"alias\":\"\"}" assert.Equal(t, expectedJSON, string(res)) var unmarshalled Profile json.Unmarshal(res, &unmarshalled) //nolint:errcheck assert.Equal(t, "subject_1", unmarshalled.Subject) assert.Equal(t, "organization_1", unmarshalled.Organization) assert.Equal(t, "roles_1", unmarshalled.Roles) assert.Equal(t, "", unmarshalled.Alias) assert.Equal(t, int64(0), unmarshalled.LastUpdated) //assert the names assert.Equal(t, "given_name_1", unmarshalled.GivenName) assert.Equal(t, "", unmarshalled.FamilyName) assert.Equal(t, "", unmarshalled.FullName) //assert the e-mail assert.Equal(t, "", unmarshalled.Email) //assert the address assert.Nil(t, unmarshalled.Address) } func TestProfile_WithAddress(t *testing.T) { p := &Profile{ Subject: "subject_1", Organization: "organization_1", Roles: "roles_1", GivenName: "given_name_1", Address: &AddressClaim{ Street: "street_1", }, } res, _ := json.Marshal(p) fmt.Println(string(res)) expectedJSON := "{\"sub\":\"subject_1\",\"org\":\"organization_1\",\"rls\":\"roles_1\",\"given_name\":\"given_name_1\",\"address\":{\"street_address\":\"street_1\"},\"last_updated\":0,\"alias\":\"\"}" assert.Equal(t, expectedJSON, string(res)) var unmarshalled Profile json.Unmarshal(res, &unmarshalled) //nolint:errcheck assert.Equal(t, "subject_1", unmarshalled.Subject) assert.Equal(t, "organization_1", unmarshalled.Organization) assert.Equal(t, "roles_1", unmarshalled.Roles) assert.Equal(t, "", unmarshalled.Alias) assert.Equal(t, int64(0), unmarshalled.LastUpdated) //assert the names assert.Equal(t, "given_name_1", unmarshalled.GivenName) assert.Equal(t, "", unmarshalled.FamilyName) assert.Equal(t, "", unmarshalled.FullName) //assert the e-mail assert.Equal(t, "", unmarshalled.Email) //assert the address assert.Equal(t, "street_1", unmarshalled.Address.Street) assert.Equal(t, "", unmarshalled.Address.Country) assert.Equal(t, "", unmarshalled.Address.Locality) assert.Equal(t, "", unmarshalled.Address.PostalCode) assert.Equal(t, "", unmarshalled.Address.Region) assert.Equal(t, "", unmarshalled.Address.Formatted) } func Test_ProvisioningUserProfileResponse_WithAddress(t *testing.T) { r := &ProvisioningUserProfileResponse{ GivenName: "Eyal", Email: "ew@gmail.com", Address: &Address{ City: "Tel-Aviv", }, } res, _ := json.Marshal(r) fmt.Println(string(res)) expectedJSON := "{\"givenName\":\"Eyal\",\"email\":\"ew@gmail.com\",\"address\":{\"city\":\"Tel-Aviv\"}}" assert.Equal(t, expectedJSON, string(res)) var unmarshalled ProvisioningUserProfileResponse json.Unmarshal(res, &unmarshalled) //nolint:errcheck //assert the names assert.Equal(t, "Eyal", unmarshalled.GivenName) assert.Equal(t, "", unmarshalled.FamilyName) assert.Equal(t, "", unmarshalled.FullName) //assert the e-mail assert.Equal(t, "ew@gmail.com", unmarshalled.Email) //assert the address assert.Equal(t, "Tel-Aviv", unmarshalled.Address.City) assert.Equal(t, "", unmarshalled.Address.Street) assert.Equal(t, "", unmarshalled.Address.Country) assert.Equal(t, "", unmarshalled.Address.State) assert.Equal(t, "", unmarshalled.Address.PostalCode) } func Test_ProvisioningUserProfileResponse_WithoutAddress(t *testing.T) { r := &ProvisioningUserProfileResponse{ GivenName: "Eyal", Email: "ew@gmail.com", } res, _ := json.Marshal(r) fmt.Println(string(res)) expectedJSON := "{\"givenName\":\"Eyal\",\"email\":\"ew@gmail.com\"}" assert.Equal(t, expectedJSON, string(res)) var unmarshalled ProvisioningUserProfileResponse json.Unmarshal(res, &unmarshalled) //nolint:errcheck //assert the names assert.Equal(t, "Eyal", unmarshalled.GivenName) assert.Equal(t, "", unmarshalled.FamilyName) assert.Equal(t, "", unmarshalled.FullName) //assert the e-mail assert.Equal(t, "ew@gmail.com", unmarshalled.Email) //assert the address assert.Nil(t, unmarshalled.Address) }