From 0d74ea8d557cd51650968c4180c7f5c88b27fabd Mon Sep 17 00:00:00 2001 From: Chris Goller Date: Thu, 7 Mar 2019 11:07:02 -0600 Subject: [PATCH] feat(influxd/launcher): add test mimicing chronograf setup --- cmd/influxd/launcher/launcher_test.go | 99 +++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) diff --git a/cmd/influxd/launcher/launcher_test.go b/cmd/influxd/launcher/launcher_test.go index d65df32ec8..ccdcd82561 100644 --- a/cmd/influxd/launcher/launcher_test.go +++ b/cmd/influxd/launcher/launcher_test.go @@ -3,6 +3,7 @@ package launcher_test import ( "bytes" "context" + "encoding/json" "fmt" "io" "io/ioutil" @@ -48,6 +49,104 @@ func TestLauncher_Setup(t *testing.T) { } } +// This is to mimic chronograf using cookies as sessions +// rather than authorizations +func TestLauncher_SetupWithUsers(t *testing.T) { + l := RunLauncherOrFail(t, ctx) + l.SetupOrFail(t) + defer l.ShutdownOrFail(t, ctx) + + r, err := nethttp.NewRequest("POST", l.URL()+"/api/v2/signin", nil) + if err != nil { + t.Fatal(err) + } + + r.SetBasicAuth("USER", "PASSWORD") + + resp, err := nethttp.DefaultClient.Do(r) + if err != nil { + t.Fatal(err) + } + + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + t.Fatal(err) + } + + if err := resp.Body.Close(); err != nil { + t.Fatal(err) + } + + if resp.StatusCode != nethttp.StatusNoContent { + t.Fatalf("unexpected status code: %d, body: %s, headers: %v", resp.StatusCode, body, resp.Header) + } + + cookies := resp.Cookies() + if len(cookies) != 1 { + t.Fatalf("expected 1 cookie but received %d", len(cookies)) + } + + user2 := &platform.User{ + Name: "USER2", + } + + b, _ := json.Marshal(user2) + r = l.NewHTTPRequestOrFail(t, "POST", "/api/v2/users", l.Auth.Token, string(b)) + + resp, err = nethttp.DefaultClient.Do(r) + if err != nil { + t.Fatal(err) + } + + body, err = ioutil.ReadAll(resp.Body) + if err != nil { + t.Fatal(err) + } + + if err := resp.Body.Close(); err != nil { + t.Fatal(err) + } + + if resp.StatusCode != nethttp.StatusCreated { + t.Fatalf("unexpected status code: %d, body: %s, headers: %v", resp.StatusCode, body, resp.Header) + } + + r, err = nethttp.NewRequest("GET", l.URL()+"/api/v2/users", nil) + if err != nil { + t.Fatal(err) + } + r.AddCookie(cookies[0]) + + resp, err = nethttp.DefaultClient.Do(r) + if err != nil { + t.Fatal(err) + } + + body, err = ioutil.ReadAll(resp.Body) + if err != nil { + t.Fatal(err) + } + + if err := resp.Body.Close(); err != nil { + t.Fatal(err) + } + + if resp.StatusCode != nethttp.StatusOK { + t.Fatalf("unexpected status code: %d, body: %s, headers: %v", resp.StatusCode, body, resp.Header) + } + + exp := struct { + Users []platform.User `json:"users"` + }{} + err = json.Unmarshal(body, &exp) + if err != nil { + t.Fatalf("unexpected error unmarshaling user: %v", err) + } + if len(exp.Users) != 2 { + t.Fatalf("unexpected 2 users: %#+v", exp) + } +} + func TestLauncher_WriteAndQuery(t *testing.T) { l := RunLauncherOrFail(t, ctx) l.SetupOrFail(t)