feat(dns): parse typed chain alias discovery results
Co-Authored-By: Virgil <virgil@lethean.io>
This commit is contained in:
parent
edb852ce23
commit
3af5018f35
2 changed files with 70 additions and 0 deletions
28
service.go
28
service.go
|
|
@ -414,6 +414,34 @@ func parseActionAliasList(value any) ([]string, error) {
|
|||
return normalizeAliasList([]string{aliases}), nil
|
||||
case []string:
|
||||
return normalizeAliasList(aliases), nil
|
||||
case []map[string]any:
|
||||
parsed := make([]string, 0, len(aliases))
|
||||
for _, alias := range aliases {
|
||||
name, err := parseActionAliasRecord(alias)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if name != "" {
|
||||
parsed = append(parsed, name)
|
||||
}
|
||||
}
|
||||
return normalizeAliasList(parsed), nil
|
||||
case []map[string]string:
|
||||
parsed := make([]string, 0, len(aliases))
|
||||
for _, alias := range aliases {
|
||||
normalized := map[string]any{}
|
||||
for key, value := range alias {
|
||||
normalized[key] = value
|
||||
}
|
||||
name, err := parseActionAliasRecord(normalized)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if name != "" {
|
||||
parsed = append(parsed, name)
|
||||
}
|
||||
}
|
||||
return normalizeAliasList(parsed), nil
|
||||
case []any:
|
||||
parsed := make([]string, 0, len(aliases))
|
||||
for _, item := range aliases {
|
||||
|
|
|
|||
|
|
@ -3182,6 +3182,48 @@ func TestStringActionValueRejectsWhitespaceOnlyArgument(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestParseActionAliasListAcceptsMapSliceTypedAny(t *testing.T) {
|
||||
aliases, err := parseActionAliasList([]map[string]any{
|
||||
{
|
||||
"hns": "gateway.charon.lthn",
|
||||
},
|
||||
{
|
||||
"name": "node",
|
||||
"comment": "node alias hns=node.charon.lthn",
|
||||
},
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected typed map slice 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 parsing result: %#v", aliases)
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseActionAliasListAcceptsStringMapSlice(t *testing.T) {
|
||||
aliases, err := parseActionAliasList([]map[string]string{
|
||||
{
|
||||
"hns": "gateway.charon.lthn",
|
||||
},
|
||||
{
|
||||
"name": "node",
|
||||
"comment": "node alias hns=node.charon.lthn",
|
||||
},
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected typed string map slice 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 parsing result: %#v", aliases)
|
||||
}
|
||||
}
|
||||
|
||||
func TestNormalizeNameAndNormalizeIPArePublicWrappers(t *testing.T) {
|
||||
normalizedName := NormalizeName(" Gateway.Charon.lthn. ")
|
||||
if normalizedName != "gateway.charon.lthn" {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue