mirror of
https://github.com/pocketbase/pocketbase.git
synced 2026-10-16 11:08:14 +02:00
[#7815] added checks for missing providers prop
This commit is contained in:
1 parent
da18302785
commit
bc8ffed4e7
2 files changed
+64
-28
No files matched your search
@@ -442,6 +442,11 @@ func (c *OAuth2Config) UnmarshalJSON(b []byte) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// no providers were submitted
|
||||||
|
if len(plain.Providers) == 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
if len(c.Providers) != len(plain.Providers) {
|
if len(c.Providers) != len(plain.Providers) {
|
||||||
return errors.New("the length of the plain unmarshalized providers and the ones from the config doesn't match")
|
return errors.New("the length of the plain unmarshalized providers and the ones from the config doesn't match")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -713,41 +713,72 @@ func TestPasswordAuthConfigValidate(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestOAuth2ConfigUnmarshalJSON(t *testing.T) {
|
func TestOAuth2ConfigUnmarshalJSON(t *testing.T) {
|
||||||
config := core.OAuth2Config{
|
t.Parallel()
|
||||||
Enabled: false,
|
|
||||||
MappedFields: core.OAuth2KnownFields{
|
scenarios := []struct {
|
||||||
Name: "name_test",
|
name string
|
||||||
|
newJSON string
|
||||||
|
expected string
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
"missing",
|
||||||
|
`{
|
||||||
|
"enabled": true,
|
||||||
|
"mappedFields": {"username": "username_test"}
|
||||||
|
}`,
|
||||||
|
`{"providers":[{"pkce":null,"name":"a","clientId":"a_clientId","clientSecret":"a_clientSecret","authURL":"","tokenURL":"","userInfoURL":"","displayName":"","extra":{}},{"pkce":null,"name":"b","clientId":"b_clientId","clientSecret":"b_clientSecret","authURL":"","tokenURL":"","userInfoURL":"","displayName":"","extra":{}}],"mappedFields":{"id":"","name":"name_test","username":"username_test","avatarURL":""},"enabled":true}`,
|
||||||
},
|
},
|
||||||
Providers: []core.OAuth2ProviderConfig{
|
{
|
||||||
{Name: "a", ClientId: "a_clientId", ClientSecret: "a_clientSecret"},
|
"empty",
|
||||||
{Name: "b", ClientId: "b_clientId", ClientSecret: "b_clientSecret"},
|
`{
|
||||||
|
"enabled": true,
|
||||||
|
"mappedFields": {"username": "username_test"},
|
||||||
|
"providers": []
|
||||||
|
}`,
|
||||||
|
`{"providers":[],"mappedFields":{"id":"","name":"name_test","username":"username_test","avatarURL":""},"enabled":true}`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"non-empty",
|
||||||
|
`{
|
||||||
|
"enabled": true,
|
||||||
|
"mappedFields": {"username": "username_test"},
|
||||||
|
"providers": [
|
||||||
|
{"name": "c", "clientId": "c_clientId", "clientSecret": "c_clientSecret"},
|
||||||
|
{"name": "a", "displayName": "a_displayName"}
|
||||||
|
]
|
||||||
|
}`,
|
||||||
|
`{"providers":[{"pkce":null,"name":"c","clientId":"c_clientId","clientSecret":"c_clientSecret","authURL":"","tokenURL":"","userInfoURL":"","displayName":"","extra":{}},{"pkce":null,"name":"a","clientId":"a_clientId","clientSecret":"a_clientSecret","authURL":"","tokenURL":"","userInfoURL":"","displayName":"a_displayName","extra":{}}],"mappedFields":{"id":"","name":"name_test","username":"username_test","avatarURL":""},"enabled":true}`,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
newRaw := []byte(`{
|
for _, s := range scenarios {
|
||||||
"enabled": true,
|
t.Run(s.name, func(t *testing.T) {
|
||||||
"mappedFields": {"username": "username_test"},
|
config := core.OAuth2Config{
|
||||||
"providers": [
|
Enabled: false,
|
||||||
{"name": "c", "clientId": "c_clientId", "clientSecret": "c_clientSecret"},
|
MappedFields: core.OAuth2KnownFields{
|
||||||
{"name": "a", "displayName": "a_displayName"}
|
Name: "name_test",
|
||||||
]
|
},
|
||||||
}`)
|
Providers: []core.OAuth2ProviderConfig{
|
||||||
|
{Name: "a", ClientId: "a_clientId", ClientSecret: "a_clientSecret"},
|
||||||
|
{Name: "b", ClientId: "b_clientId", ClientSecret: "b_clientSecret"},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
err := json.Unmarshal(newRaw, &config)
|
err := json.Unmarshal([]byte(s.newJSON), &config)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
raw, err := json.Marshal(config, json.Deterministic(true))
|
raw, err := json.Marshal(config, json.Deterministic(true))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
rawStr := string(raw)
|
rawStr := string(raw)
|
||||||
|
|
||||||
expected := `{"providers":[{"pkce":null,"name":"c","clientId":"c_clientId","clientSecret":"c_clientSecret","authURL":"","tokenURL":"","userInfoURL":"","displayName":"","extra":{}},{"pkce":null,"name":"a","clientId":"a_clientId","clientSecret":"a_clientSecret","authURL":"","tokenURL":"","userInfoURL":"","displayName":"a_displayName","extra":{}}],"mappedFields":{"id":"","name":"name_test","username":"username_test","avatarURL":""},"enabled":true}`
|
if rawStr != s.expected {
|
||||||
|
t.Fatalf("Expected OAuth2ProviderConfig\n%s\ngot\n%s", s.expected, rawStr)
|
||||||
if rawStr != expected {
|
}
|
||||||
t.Fatalf("Expected OAuth2ProviderConfig\n%s\ngot\n%s", expected, rawStr)
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user