package influxql_test import ( "context" "io" "net/http" "net/http/httptest" "testing" "github.com/influxdata/influxdb/v2/query" "github.com/influxdata/influxdb/v2/query/influxql" ) func TestService(t *testing.T) { server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { // Verify the parameters were passed correctly. if want, got := "POST", r.Method; want != got { t.Errorf("unexpected method -want/+got\n\t- %q\n\t+ %q", want, got) } if want, got := "SHOW DATABASES", r.FormValue("q"); want != got { t.Errorf("unexpected query -want/+got\n\t- %q\n\t+ %q", want, got) } if want, got := "db0", r.FormValue("db"); want != got { t.Errorf("unexpected database -want/+got\n\t- %q\n\t+ %q", want, got) } if want, got := "rp0", r.FormValue("rp"); want != got { t.Errorf("unexpected retention policy -want/+got\n\t- %q\n\t+ %q", want, got) } user, pass, ok := r.BasicAuth() if !ok { w.WriteHeader(http.StatusUnauthorized) return } if want, got := "me", user; want != got { t.Errorf("unexpected username -want/+got\n\t- %q\n\t+ %q", want, got) } if want, got := "secretpassword", pass; want != got { t.Errorf("unexpected password -want/+got\n\t- %q\n\t+ %q", want, got) } io.WriteString(w, `{"results":[{"statement_id":0,"series":[{"name":"databases","columns":["name"],"values":[["db0"]]}]}]}`) })) defer server.Close() service := &influxql.Service{ Endpoints: map[string]influxql.Endpoint{ "myserver": { URL: server.URL, Username: "me", Password: "secretpassword", }, }, } req := &query.Request{Compiler: &influxql.Compiler{ Cluster: "myserver", DB: "db0", RP: "rp0", Query: "SHOW DATABASES", }} results, err := service.Query(context.Background(), req) if err != nil { t.Fatalf("unexpected error: %s", err) } defer results.Release() _, err = service.QueryRawJSON(context.Background(), req) if err != nil { t.Fatalf("unexpected error: %s", err) } }