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 {
|
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)
|
return json.Unmarshal([]byte(v), s)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@ package idpsync_test
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"database/sql"
|
"database/sql"
|
||||||
|
"fmt"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/golang-jwt/jwt/v4"
|
"github.com/golang-jwt/jwt/v4"
|
||||||
@ -19,6 +20,73 @@ import (
|
|||||||
"github.com/coder/coder/v2/testutil"
|
"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) {
|
func TestParseOrganizationClaims(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user