From 08e0d201e1028f308a930f6bcdab0c064f662a39 Mon Sep 17 00:00:00 2001 From: Virgil Date: Sat, 4 Apr 2026 00:08:28 +0000 Subject: [PATCH] feat(dns): parse chain alias action maps Co-Authored-By: Virgil --- service.go | 13 +++++++++++++ service_test.go | 16 ++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/service.go b/service.go index 7443be7..c7817df 100644 --- a/service.go +++ b/service.go @@ -475,6 +475,19 @@ func parseActionAliasList(value any) ([]string, error) { if name != "" { return []string{name}, nil } + if len(aliases) > 0 { + parsed := make([]string, 0, len(aliases)) + for _, rawAlias := range aliases { + alias, err := parseActionAliasValue(rawAlias) + if err != nil { + continue + } + if alias != "" { + parsed = append(parsed, alias) + } + } + return normalizeAliasList(parsed), nil + } } return nil, fmt.Errorf("blockchain.chain.aliases action returned unsupported result type %T", value) diff --git a/service_test.go b/service_test.go index 818e468..3101e97 100644 --- a/service_test.go +++ b/service_test.go @@ -3399,6 +3399,22 @@ func TestParseActionAliasListAcceptsStringMapSlice(t *testing.T) { } } +func TestParseActionAliasListAcceptsAliasMap(t *testing.T) { + aliases, err := parseActionAliasList(map[string]any{ + "gateway": "gateway.charon.lthn", + "node": "node.charon.lthn", + }) + if err != nil { + t.Fatalf("unexpected alias map parse error: %v", err) + } + if len(aliases) != 2 { + t.Fatalf("expected two aliases, got %#v", aliases) + } + if aliases[0] != "gateway.charon.lthn" || aliases[1] != "node.charon.lthn" { + t.Fatalf("unexpected alias map parsing result: %#v", aliases) + } +} + func TestNormalizeNameAndNormalizeIPArePublicWrappers(t *testing.T) { normalizedName := NormalizeName(" Gateway.Charon.lthn. ") if normalizedName != "gateway.charon.lthn" {