diff --git a/service.go b/service.go index 74fff66..9af31b2 100644 --- a/service.go +++ b/service.go @@ -199,26 +199,24 @@ func NewService(options ServiceOptions) *Service { if mainchainURL == "" { mainchainURL = strings.TrimSpace(options.HSDURL) } - if mainchainURL != "" { - mainchainPassword := options.MainchainPassword - mainchainUsername := options.MainchainUsername - if strings.TrimSpace(options.MainchainURL) == "" { + mainchainPassword := options.MainchainPassword + mainchainUsername := options.MainchainUsername + if strings.TrimSpace(options.MainchainURL) == "" { + if mainchainPassword == "" { + mainchainPassword = options.HSDPassword if mainchainPassword == "" { - mainchainPassword = options.HSDPassword - if mainchainPassword == "" { - mainchainPassword = options.HSDApiKey - } - } - if mainchainUsername == "" { - mainchainUsername = options.HSDUsername + mainchainPassword = options.HSDApiKey } } - mainchainClient = NewMainchainAliasClient(MainchainClientOptions{ - URL: mainchainURL, - Username: mainchainUsername, - Password: mainchainPassword, - }) + if mainchainUsername == "" { + mainchainUsername = options.HSDUsername + } } + mainchainClient = NewMainchainAliasClient(MainchainClientOptions{ + URL: mainchainURL, + Username: mainchainUsername, + Password: mainchainPassword, + }) } cached := make(map[string]NameRecords, len(options.Records)) diff --git a/service_test.go b/service_test.go index 5b25b8f..f45283c 100644 --- a/service_test.go +++ b/service_test.go @@ -1587,12 +1587,13 @@ func TestServiceDiscoverFromChainAliasesIgnoresMissingDiscoverers(t *testing.T) }, }, }) + service.mainchainAliasClient = nil client := NewHSDClient(HSDClientOptions{ URL: server.URL, }) if err := service.DiscoverFromChainAliases(context.Background(), client); err != nil { - t.Fatalf("expected no-op when no alias discoverer configured: %v", err) + t.Fatalf("expected no-op when no alias discoverer configured and no mainchain client: %v", err) } result, ok := service.Resolve("gateway.charon.lthn") @@ -1623,9 +1624,10 @@ func TestServiceDiscoverAliasesReturnsNilWithoutDiscovererOrHSDClient(t *testing }, }, }) + service.mainchainAliasClient = nil if err := service.DiscoverAliases(context.Background()); err != nil { - t.Fatalf("expected discover aliases to no-op without sources or HSD client: %v", err) + t.Fatalf("expected discover aliases to no-op without sources or HSD client when no explicit mainchain client: %v", err) } result, ok := service.Resolve("gateway.charon.lthn") @@ -2675,6 +2677,19 @@ func TestServiceDiscoverAliasesFallsBackToMainchainAliasRPCUsingHSDURL(t *testin } } +func TestNewServiceBuildsMainchainAliasClientByDefault(t *testing.T) { + service := NewService(ServiceOptions{ + Records: map[string]NameRecords{}, + }) + + if service.mainchainAliasClient == nil { + t.Fatal("expected default mainchain alias client when none is provided") + } + if got := service.mainchainAliasClient.baseURL; got != "http://127.0.0.1:14037" { + t.Fatalf("expected fallback mainchain alias client URL %q, got %q", "http://127.0.0.1:14037", got) + } +} + func TestStringActionValueTrimsWhitespaceForRequiredArgument(t *testing.T) { value, err := stringActionValue(map[string]any{ actionArgName: " gateway.charon.lthn ",