14285: Add token middleware. Require management token for metrics.
[arvados.git] / services / keepstore / mounts_test.go
index 66a212456d51c78e09cc12dc41bdccb17bf953df..31b1a684fe6a077ebbbfebf7bb846f6f508a00b5 100644 (file)
@@ -27,8 +27,9 @@ func (s *MountsSuite) SetUpTest(c *check.C) {
        KeepVM = s.vm
        theConfig = DefaultConfig()
        theConfig.systemAuthToken = arvadostest.DataManagerToken
+       theConfig.ManagementToken = arvadostest.ManagementToken
        theConfig.Start()
-       s.rtr = MakeRESTRouter()
+       s.rtr = MakeRESTRouter(testCluster)
 }
 
 func (s *MountsSuite) TearDownTest(c *check.C) {
@@ -46,11 +47,11 @@ func (s *MountsSuite) TestMounts(c *check.C) {
        resp := s.call("GET", "/mounts", "", nil)
        c.Check(resp.Code, check.Equals, http.StatusOK)
        var mntList []struct {
-               UUID           string
-               DeviceID       string
-               ReadOnly       bool
-               Replication    int
-               StorageClasses []string
+               UUID           string   `json:"uuid"`
+               DeviceID       string   `json:"device_id"`
+               ReadOnly       bool     `json:"read_only"`
+               Replication    int      `json:"replication"`
+               StorageClasses []string `json:"storage_classes"`
        }
        err := json.Unmarshal(resp.Body.Bytes(), &mntList)
        c.Assert(err, check.IsNil)
@@ -104,6 +105,10 @@ func (s *MountsSuite) TestMetrics(c *check.C) {
        s.call("PUT", "/"+TestHash, "", TestBlock)
        s.call("PUT", "/"+TestHash2, "", TestBlock2)
        resp := s.call("GET", "/metrics.json", "", nil)
+       c.Check(resp.Code, check.Equals, http.StatusUnauthorized)
+       resp = s.call("GET", "/metrics.json", "foobar", nil)
+       c.Check(resp.Code, check.Equals, http.StatusForbidden)
+       resp = s.call("GET", "/metrics.json", arvadostest.ManagementToken, nil)
        c.Check(resp.Code, check.Equals, http.StatusOK)
        var j []struct {
                Name   string
@@ -144,7 +149,7 @@ func (s *MountsSuite) call(method, path, tok string, body []byte) *httptest.Resp
        resp := httptest.NewRecorder()
        req, _ := http.NewRequest(method, path, bytes.NewReader(body))
        if tok != "" {
-               req.Header.Set("Authorization", "OAuth2 "+tok)
+               req.Header.Set("Authorization", "Bearer "+tok)
        }
        s.rtr.ServeHTTP(resp, req)
        return resp