119 lines
2.8 KiB
Go
119 lines
2.8 KiB
Go
package oidc
|
|
|
|
import (
|
|
"encoding/json"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestUserInfo_AppendClaims(t *testing.T) {
|
|
u := new(UserInfo)
|
|
u.AppendClaims("a", "b")
|
|
want := map[string]any{"a": "b"}
|
|
assert.Equal(t, want, u.Claims)
|
|
|
|
u.AppendClaims("d", "e")
|
|
want["d"] = "e"
|
|
assert.Equal(t, want, u.Claims)
|
|
}
|
|
|
|
func TestUserInfo_GetAddress(t *testing.T) {
|
|
// nil address
|
|
u := new(UserInfo)
|
|
assert.Equal(t, &UserInfoAddress{}, u.GetAddress())
|
|
|
|
u.Address = &UserInfoAddress{PostalCode: "1234"}
|
|
assert.Equal(t, u.Address, u.GetAddress())
|
|
}
|
|
|
|
func TestUserInfoMarshal(t *testing.T) {
|
|
userinfo := &UserInfo{
|
|
Subject: "test",
|
|
Address: &UserInfoAddress{
|
|
StreetAddress: "Test 789\nPostfach 2",
|
|
},
|
|
UserInfoEmail: UserInfoEmail{
|
|
Email: "test",
|
|
EmailVerified: true,
|
|
},
|
|
UserInfoPhone: UserInfoPhone{
|
|
PhoneNumber: "0791234567",
|
|
PhoneNumberVerified: true,
|
|
},
|
|
UserInfoProfile: UserInfoProfile{
|
|
Name: "Test",
|
|
},
|
|
Claims: map[string]any{"private_claim": "test"},
|
|
}
|
|
|
|
marshal, err := json.Marshal(userinfo)
|
|
assert.NoError(t, err)
|
|
|
|
out := new(UserInfo)
|
|
assert.NoError(t, json.Unmarshal(marshal, out))
|
|
expected, err := json.Marshal(out)
|
|
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, expected, marshal)
|
|
|
|
out2 := new(UserInfo)
|
|
assert.NoError(t, json.Unmarshal(expected, out2))
|
|
assert.Equal(t, out, out2)
|
|
}
|
|
|
|
func TestUserInfoEmailVerifiedUnmarshal(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
t.Run("unmarshal email_verified from json bool true", func(t *testing.T) {
|
|
jsonBool := []byte(`{"email": "my@email.com", "email_verified": true}`)
|
|
|
|
var uie UserInfoEmail
|
|
|
|
err := json.Unmarshal(jsonBool, &uie)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, UserInfoEmail{
|
|
Email: "my@email.com",
|
|
EmailVerified: true,
|
|
}, uie)
|
|
})
|
|
|
|
t.Run("unmarshal email_verified from json string true", func(t *testing.T) {
|
|
jsonBool := []byte(`{"email": "my@email.com", "email_verified": "true"}`)
|
|
|
|
var uie UserInfoEmail
|
|
|
|
err := json.Unmarshal(jsonBool, &uie)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, UserInfoEmail{
|
|
Email: "my@email.com",
|
|
EmailVerified: true,
|
|
}, uie)
|
|
})
|
|
|
|
t.Run("unmarshal email_verified from json bool false", func(t *testing.T) {
|
|
jsonBool := []byte(`{"email": "my@email.com", "email_verified": false}`)
|
|
|
|
var uie UserInfoEmail
|
|
|
|
err := json.Unmarshal(jsonBool, &uie)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, UserInfoEmail{
|
|
Email: "my@email.com",
|
|
EmailVerified: false,
|
|
}, uie)
|
|
})
|
|
|
|
t.Run("unmarshal email_verified from json string false", func(t *testing.T) {
|
|
jsonBool := []byte(`{"email": "my@email.com", "email_verified": "false"}`)
|
|
|
|
var uie UserInfoEmail
|
|
|
|
err := json.Unmarshal(jsonBool, &uie)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, UserInfoEmail{
|
|
Email: "my@email.com",
|
|
EmailVerified: false,
|
|
}, uie)
|
|
})
|
|
}
|