refactor: handle oauth groups response as an any array of any

This commit is contained in:
Stavros
2025-07-17 00:31:24 +03:00
parent 1a13936693
commit 19eb8f3064
2 changed files with 17 additions and 8 deletions

View File

@@ -330,12 +330,21 @@ func DeriveKey(secret string, info string) (string, error) {
func CoalesceToString(value any) string { func CoalesceToString(value any) string {
switch v := value.(type) { switch v := value.(type) {
case []string: case []any:
return strings.Join(v, ",") log.Debug().Msg("Coalescing []any to string")
strs := make([]string, 0, len(v))
for _, item := range v {
if str, ok := item.(string); ok {
strs = append(strs, str)
continue
}
log.Warn().Interface("item", item).Msg("Item in []any is not a string, skipping")
}
return strings.Join(strs, ",")
case string: case string:
return v return v
default: default:
log.Warn().Interface("value", value).Msg("Unsupported type, returning empty string") log.Warn().Interface("value", value).Interface("type", v).Msg("Unsupported type, returning empty string")
return "" return ""
} }
} }

View File

@@ -515,7 +515,7 @@ func TestDeriveKey(t *testing.T) {
func TestCoalesceToString(t *testing.T) { func TestCoalesceToString(t *testing.T) {
t.Log("Testing coalesce to string with a string") t.Log("Testing coalesce to string with a string")
value := "test" value := any("test")
expected := "test" expected := "test"
result := utils.CoalesceToString(value) result := utils.CoalesceToString(value)
@@ -526,10 +526,10 @@ func TestCoalesceToString(t *testing.T) {
t.Log("Testing coalesce to string with a slice of strings") t.Log("Testing coalesce to string with a slice of strings")
valueSlice := []string{"test1", "test2"} value = []any{any("test1"), any("test2"), any(123)}
expected = "test1,test2" expected = "test1,test2"
result = utils.CoalesceToString(valueSlice) result = utils.CoalesceToString(value)
if result != expected { if result != expected {
t.Fatalf("Expected %v, got %v", expected, result) t.Fatalf("Expected %v, got %v", expected, result)
@@ -537,10 +537,10 @@ func TestCoalesceToString(t *testing.T) {
t.Log("Testing coalesce to string with an unsupported type") t.Log("Testing coalesce to string with an unsupported type")
valueUnsupported := 12345 value = 12345
expected = "" expected = ""
result = utils.CoalesceToString(valueUnsupported) result = utils.CoalesceToString(value)
if result != expected { if result != expected {
t.Fatalf("Expected %v, got %v", expected, result) t.Fatalf("Expected %v, got %v", expected, result)