mirror of
https://github.com/coder/coder.git
synced 2025-07-12 00:14:10 +00:00
chore: load 'assign_default' value from legacy value (#17428)
If this value was set before v2.19.0, then assign_default was in a json field that would not match. And it would default to `false`. This corrects that.
This commit is contained in:
@ -213,6 +213,17 @@ type OrganizationSyncSettings struct {
|
||||
}
|
||||
|
||||
func (s *OrganizationSyncSettings) Set(v string) error {
|
||||
legacyCheck := make(map[string]any)
|
||||
err := json.Unmarshal([]byte(v), &legacyCheck)
|
||||
if assign, ok := legacyCheck["AssignDefault"]; err == nil && ok {
|
||||
// The legacy JSON key was 'AssignDefault' instead of 'assign_default'
|
||||
// Set the default value from the legacy if it exists.
|
||||
isBool, ok := assign.(bool)
|
||||
if ok {
|
||||
s.AssignDefault = isBool
|
||||
}
|
||||
}
|
||||
|
||||
return json.Unmarshal([]byte(v), s)
|
||||
}
|
||||
|
||||
|
@ -2,6 +2,7 @@ package idpsync_test
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"github.com/golang-jwt/jwt/v4"
|
||||
@ -19,6 +20,73 @@ import (
|
||||
"github.com/coder/coder/v2/testutil"
|
||||
)
|
||||
|
||||
func TestFromLegacySettings(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
legacy := func(assignDefault bool) string {
|
||||
return fmt.Sprintf(`{
|
||||
"Field":"groups",
|
||||
"Mapping":{
|
||||
"engineering":[
|
||||
"10b2bd19-f5ca-4905-919f-bf02e95e3b6a"
|
||||
]
|
||||
},
|
||||
"AssignDefault":%t
|
||||
}`, assignDefault)
|
||||
}
|
||||
|
||||
t.Run("AssignDefault,True", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
var settings idpsync.OrganizationSyncSettings
|
||||
settings.AssignDefault = true
|
||||
err := settings.Set(legacy(true))
|
||||
require.NoError(t, err)
|
||||
|
||||
require.Equal(t, settings.Field, "groups", "field")
|
||||
require.Equal(t, settings.Mapping, map[string][]uuid.UUID{
|
||||
"engineering": {
|
||||
uuid.MustParse("10b2bd19-f5ca-4905-919f-bf02e95e3b6a"),
|
||||
},
|
||||
}, "mapping")
|
||||
require.True(t, settings.AssignDefault, "assign default")
|
||||
})
|
||||
|
||||
t.Run("AssignDefault,False", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
var settings idpsync.OrganizationSyncSettings
|
||||
settings.AssignDefault = true
|
||||
err := settings.Set(legacy(false))
|
||||
require.NoError(t, err)
|
||||
|
||||
require.Equal(t, settings.Field, "groups", "field")
|
||||
require.Equal(t, settings.Mapping, map[string][]uuid.UUID{
|
||||
"engineering": {
|
||||
uuid.MustParse("10b2bd19-f5ca-4905-919f-bf02e95e3b6a"),
|
||||
},
|
||||
}, "mapping")
|
||||
require.False(t, settings.AssignDefault, "assign default")
|
||||
})
|
||||
|
||||
t.Run("CorrectAssign", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
var settings idpsync.OrganizationSyncSettings
|
||||
settings.AssignDefault = true
|
||||
err := settings.Set(legacy(false))
|
||||
require.NoError(t, err)
|
||||
|
||||
require.Equal(t, settings.Field, "groups", "field")
|
||||
require.Equal(t, settings.Mapping, map[string][]uuid.UUID{
|
||||
"engineering": {
|
||||
uuid.MustParse("10b2bd19-f5ca-4905-919f-bf02e95e3b6a"),
|
||||
},
|
||||
}, "mapping")
|
||||
require.False(t, settings.AssignDefault, "assign default")
|
||||
})
|
||||
}
|
||||
|
||||
func TestParseOrganizationClaims(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
|
Reference in New Issue
Block a user