11809: Add tests for /status.json.
authorTom Clegg <tom@curoverse.com>
Wed, 7 Jun 2017 15:28:22 +0000 (11:28 -0400)
committerTom Clegg <tom@curoverse.com>
Wed, 7 Jun 2017 15:38:44 +0000 (11:38 -0400)
Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tom@curoverse.com>

services/keep-web/status_test.go [new file with mode: 0644]

diff --git a/services/keep-web/status_test.go b/services/keep-web/status_test.go
new file mode 100644 (file)
index 0000000..e40c1d0
--- /dev/null
@@ -0,0 +1,46 @@
+package main
+
+import (
+       "encoding/json"
+       "net/http"
+       "net/http/httptest"
+       "net/url"
+
+       "git.curoverse.com/arvados.git/sdk/go/arvadostest"
+       "gopkg.in/check.v1"
+)
+
+func (s *UnitSuite) TestStatus(c *check.C) {
+       h := handler{Config: DefaultConfig()}
+       u, _ := url.Parse("http://keep-web.example/status.json")
+       req := &http.Request{
+               Method:     "GET",
+               Host:       u.Host,
+               URL:        u,
+               RequestURI: u.RequestURI(),
+       }
+       resp := httptest.NewRecorder()
+       h.ServeHTTP(resp, req)
+       c.Check(resp.Code, check.Equals, http.StatusOK)
+
+       var status map[string]interface{}
+       err := json.NewDecoder(resp.Body).Decode(&status)
+       c.Check(err, check.IsNil)
+       c.Check(status["Cache.Requests"], check.Equals, float64(0))
+}
+
+func (s *IntegrationSuite) TestNoStatusFromVHost(c *check.C) {
+       u, _ := url.Parse("http://" + arvadostest.FooCollection + "--keep-web.example/status.json")
+       req := &http.Request{
+               Method:     "GET",
+               Host:       u.Host,
+               URL:        u,
+               RequestURI: u.RequestURI(),
+               Header: http.Header{
+                       "Authorization": {"OAuth2 " + arvadostest.ActiveToken},
+               },
+       }
+       resp := httptest.NewRecorder()
+       s.testServer.Handler.ServeHTTP(resp, req)
+       c.Check(resp.Code, check.Equals, http.StatusNotFound)
+}