9 "git.curoverse.com/arvados.git/sdk/go/arvados"
10 "git.curoverse.com/arvados.git/sdk/go/arvadostest"
11 check "gopkg.in/check.v1"
14 var _ = check.Suite(&serverSuite{})
16 type serverSuite struct {
22 func (s *serverSuite) SetUpTest(c *check.C) {
23 s.cfg = s.testConfig()
24 s.srv = &server{wsConfig: s.cfg}
27 func (*serverSuite) testConfig() *wsConfig {
28 cfg := defaultConfig()
29 cfg.Client = *(arvados.NewClientFromEnv())
30 cfg.Postgres = testDBConfig()
32 cfg.ManagementToken = arvadostest.ManagementToken
36 // TestBadDB ensures Run() returns an error (instead of panicking or
37 // deadlocking) if it can't connect to the database server at startup.
38 func (s *serverSuite) TestBadDB(c *check.C) {
39 s.cfg.Postgres["password"] = "1234"
45 c.Check(err, check.NotNil)
54 done := make(chan bool)
61 case <-time.After(10 * time.Second):
66 func (s *serverSuite) TestHealth(c *check.C) {
70 for _, token := range []string{"", "foo", s.cfg.ManagementToken} {
71 req, err := http.NewRequest("GET", "http://"+s.srv.listener.Addr().String()+"/_health/ping", nil)
72 c.Assert(err, check.IsNil)
74 req.Header.Add("Authorization", "Bearer "+token)
76 resp, err := http.DefaultClient.Do(req)
77 c.Check(err, check.IsNil)
78 if token == s.cfg.ManagementToken {
79 c.Check(resp.StatusCode, check.Equals, http.StatusOK)
80 buf, err := ioutil.ReadAll(resp.Body)
81 c.Check(err, check.IsNil)
82 c.Check(string(buf), check.Equals, `{"health":"OK"}`+"\n")
84 c.Check(resp.StatusCode, check.Not(check.Equals), http.StatusOK)
89 func (s *serverSuite) TestHealthDisabled(c *check.C) {
90 s.cfg.ManagementToken = ""
96 req, err := http.NewRequest("GET", "http://"+s.srv.listener.Addr().String()+"/_health/ping", nil)
97 c.Assert(err, check.IsNil)
98 req.Header.Add("Authorization", "Bearer "+arvadostest.ManagementToken)
99 resp, err := http.DefaultClient.Do(req)
100 c.Check(err, check.IsNil)
101 c.Check(resp.StatusCode, check.Equals, http.StatusNotFound)