From 19eb8f3064de2466b7179ac0c0e6b19fbf5bbf13 Mon Sep 17 00:00:00 2001 From: Stavros Date: Thu, 17 Jul 2025 00:31:24 +0300 Subject: [PATCH] refactor: handle oauth groups response as an any array of any --- internal/utils/utils.go | 15 ++++++++++++--- internal/utils/utils_test.go | 10 +++++----- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/internal/utils/utils.go b/internal/utils/utils.go index ac5c9ca..39b1518 100644 --- a/internal/utils/utils.go +++ b/internal/utils/utils.go @@ -330,12 +330,21 @@ func DeriveKey(secret string, info string) (string, error) { func CoalesceToString(value any) string { switch v := value.(type) { - case []string: - return strings.Join(v, ",") + case []any: + 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: return v 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 "" } } diff --git a/internal/utils/utils_test.go b/internal/utils/utils_test.go index 957bfae..5ae7e89 100644 --- a/internal/utils/utils_test.go +++ b/internal/utils/utils_test.go @@ -515,7 +515,7 @@ func TestDeriveKey(t *testing.T) { func TestCoalesceToString(t *testing.T) { t.Log("Testing coalesce to string with a string") - value := "test" + value := any("test") expected := "test" result := utils.CoalesceToString(value) @@ -526,10 +526,10 @@ func TestCoalesceToString(t *testing.T) { 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" - result = utils.CoalesceToString(valueSlice) + result = utils.CoalesceToString(value) if result != expected { 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") - valueUnsupported := 12345 + value = 12345 expected = "" - result = utils.CoalesceToString(valueUnsupported) + result = utils.CoalesceToString(value) if result != expected { t.Fatalf("Expected %v, got %v", expected, result)