telegraf/services/enterprise/enterprise_test.go

62 lines
1.3 KiB
Go
Raw Normal View History

2016-02-10 19:54:34 +00:00
package enterprise_test
import (
2016-02-10 20:42:07 +00:00
"encoding/json"
2016-02-10 19:54:34 +00:00
"net/http"
"net/http/httptest"
"testing"
"time"
"github.com/influxdata/enterprise-client/v2"
"github.com/influxdata/telegraf/services/enterprise"
)
2016-02-10 20:42:07 +00:00
func mockEnterprise(srvFunc func(*client.Product, error)) (chan struct{}, *httptest.Server) {
2016-02-10 19:54:34 +00:00
success := make(chan struct{})
2016-02-10 20:42:07 +00:00
me := http.NewServeMux()
me.HandleFunc("/api/v2/products", func(rw http.ResponseWriter, r *http.Request) {
2016-02-10 19:54:34 +00:00
if r.Method == "POST" {
2016-02-10 20:42:07 +00:00
c := &client.Product{}
d := json.NewDecoder(r.Body)
err := d.Decode(c)
srvFunc(c, err)
2016-02-10 19:54:34 +00:00
close(success)
}
})
2016-02-10 20:42:07 +00:00
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
})
2016-02-10 19:54:34 +00:00
defer srv.Close()
c := enterprise.Config{
Hosts: []*client.Host{
&client.Host{URL: srv.URL},
},
}
2016-02-10 20:42:07 +00:00
e := enterprise.NewEnterprise(c, expected)
2016-02-10 19:54:34 +00:00
e.Open()
2016-02-10 20:42:07 +00:00
timeout := time.After(1 * time.Millisecond)
2016-02-10 19:54:34 +00:00
for {
select {
case <-success:
2016-02-10 20:42:07 +00:00
if actualHostname != expected {
t.Errorf("Expected hostname to be %s but was %s", expected, actualHostname)
}
2016-02-10 19:54:34 +00:00
return
case <-timeout:
t.Fatal("Expected to receive call to Enterprise API, but received none")
}
}
}