[agent/codex:gpt-5.4-mini] Read docs/RFC.md fully. Find ONE feature described in the sp... #44
2 changed files with 41 additions and 0 deletions
10
action.go
10
action.go
|
|
@ -165,6 +165,16 @@ func (service *Service) RegisterActions(registrar ActionRegistrar) {
|
|||
}
|
||||
}
|
||||
|
||||
// NewServiceWithRegistrar builds a DNS service and registers its actions in one step.
|
||||
//
|
||||
// service := dns.NewServiceWithRegistrar(dns.ServiceOptions{}, registrar)
|
||||
// // registrar now exposes dns.resolve, dns.resolve.txt, dns.resolve.all, dns.reverse, dns.serve, dns.health, dns.discover
|
||||
func NewServiceWithRegistrar(options ServiceOptions, registrar ActionRegistrar) *Service {
|
||||
service := NewService(options)
|
||||
service.RegisterActions(registrar)
|
||||
return service
|
||||
}
|
||||
|
||||
// HandleAction executes a DNS action by name.
|
||||
//
|
||||
// payload, ok, err := service.HandleAction(ActionResolve, map[string]any{
|
||||
|
|
|
|||
|
|
@ -1566,6 +1566,37 @@ func TestServiceRegisterActionsPublishesAllActionsInOrder(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestNewServiceWithRegistrarBuildsAndRegistersInOneStep(t *testing.T) {
|
||||
registrar := &actionRecorder{}
|
||||
service := NewServiceWithRegistrar(ServiceOptions{
|
||||
Records: map[string]NameRecords{
|
||||
"gateway.charon.lthn": {
|
||||
A: []string{"10.10.10.10"},
|
||||
},
|
||||
},
|
||||
}, registrar)
|
||||
|
||||
if service == nil {
|
||||
t.Fatal("expected service to be built")
|
||||
}
|
||||
|
||||
if len(registrar.names) != len(service.ActionNames()) {
|
||||
t.Fatalf("expected helper to register all actions, got %#v", registrar.names)
|
||||
}
|
||||
|
||||
payload, ok, err := registrar.handlers[ActionResolve](map[string]any{"name": "gateway.charon.lthn"})
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected registered handler error: %v", err)
|
||||
}
|
||||
if !ok {
|
||||
t.Fatal("expected registered handler to resolve")
|
||||
}
|
||||
result, ok := payload.(ResolveAddressResult)
|
||||
if !ok || len(result.Addresses) != 1 || result.Addresses[0] != "10.10.10.10" {
|
||||
t.Fatalf("unexpected registered handler payload: %#v", payload)
|
||||
}
|
||||
}
|
||||
|
||||
func TestServiceActionDefinitionsHaveInvokers(t *testing.T) {
|
||||
service := NewService(ServiceOptions{
|
||||
Records: map[string]NameRecords{
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue