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 {
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 ""
}
}

View File

@@ -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)