diff --git a/services/enterprise/enterprise.go b/services/enterprise/enterprise.go index 95ba82686..02537f1fb 100644 --- a/services/enterprise/enterprise.go +++ b/services/enterprise/enterprise.go @@ -12,14 +12,16 @@ type Config struct { } type Service struct { - hosts []*client.Host - logger *log.Logger + hosts []*client.Host + logger *log.Logger + hostname string } -func NewEnterprise(c Config) *Service { +func NewEnterprise(c Config, hostname string) *Service { return &Service{ - hosts: c.Hosts, - logger: log.New(os.Stdout, "[enterprise]", log.Ldate|log.Ltime), + hosts: c.Hosts, + hostname: hostname, + logger: log.New(os.Stdout, "[enterprise]", log.Ldate|log.Ltime), } } @@ -35,7 +37,7 @@ func (s *Service) Open() { func (s *Service) registerProduct(cl *client.Client) { p := client.Product{ ProductID: "telegraf", - Host: "localhost", + Host: s.hostname, } _, err := cl.Register(&p) diff --git a/services/enterprise/enterprise_test.go b/services/enterprise/enterprise_test.go index 43e567ac2..94a38edf3 100644 --- a/services/enterprise/enterprise_test.go +++ b/services/enterprise/enterprise_test.go @@ -1,6 +1,7 @@ package enterprise_test import ( + "encoding/json" "net/http" "net/http/httptest" "testing" @@ -10,15 +11,31 @@ import ( "github.com/influxdata/telegraf/services/enterprise" ) -func Test_RegistersWithEnterprise(t *testing.T) { +func mockEnterprise(srvFunc func(*client.Product, error)) (chan struct{}, *httptest.Server) { success := make(chan struct{}) - mockEnterprise := http.NewServeMux() - mockEnterprise.HandleFunc("/api/v2/products", func(rw http.ResponseWriter, r *http.Request) { + me := http.NewServeMux() + me.HandleFunc("/api/v2/products", func(rw http.ResponseWriter, r *http.Request) { if r.Method == "POST" { + c := &client.Product{} + d := json.NewDecoder(r.Body) + err := d.Decode(c) + srvFunc(c, err) close(success) } }) - srv := httptest.NewServer(mockEnterprise) + srv := httptest.NewServer(me) + return success, srv +} + +func Test_RegistersWithEnterprise(t *testing.T) { + expected := "www.example.com" + var actualHostname string + success, srv := mockEnterprise(func(c *client.Product, err error) { + if err != nil { + t.Error(err.Error()) + } + actualHostname = c.Host + }) defer srv.Close() c := enterprise.Config{ @@ -26,13 +43,16 @@ func Test_RegistersWithEnterprise(t *testing.T) { &client.Host{URL: srv.URL}, }, } - e := enterprise.NewEnterprise(c) + e := enterprise.NewEnterprise(c, expected) e.Open() - timeout := time.After(50 * time.Millisecond) + timeout := time.After(1 * time.Millisecond) for { select { case <-success: + if actualHostname != expected { + t.Errorf("Expected hostname to be %s but was %s", expected, actualHostname) + } return case <-timeout: t.Fatal("Expected to receive call to Enterprise API, but received none")