github.com/blixtra/nomad@v0.7.2-0.20171221000451-da9a1d7bb050/command/agent/stats_endpoint_test.go (about) 1 package agent 2 3 import ( 4 "net/http" 5 "net/http/httptest" 6 "testing" 7 8 "github.com/hashicorp/nomad/acl" 9 "github.com/hashicorp/nomad/nomad/mock" 10 "github.com/hashicorp/nomad/nomad/structs" 11 "github.com/stretchr/testify/assert" 12 ) 13 14 func TestClientStatsRequest(t *testing.T) { 15 t.Parallel() 16 httpTest(t, nil, func(s *TestAgent) { 17 req, err := http.NewRequest("GET", "/v1/client/stats/?since=foo", nil) 18 if err != nil { 19 t.Fatalf("err: %v", err) 20 } 21 22 respW := httptest.NewRecorder() 23 _, err = s.Server.ClientStatsRequest(respW, req) 24 if err != nil { 25 t.Fatalf("unexpected err: %v", err) 26 } 27 }) 28 } 29 30 func TestClientStatsRequest_ACL(t *testing.T) { 31 t.Parallel() 32 assert := assert.New(t) 33 httpACLTest(t, nil, func(s *TestAgent) { 34 state := s.Agent.server.State() 35 req, err := http.NewRequest("GET", "/v1/client/stats/", nil) 36 assert.Nil(err) 37 38 // Try request without a token and expect failure 39 { 40 respW := httptest.NewRecorder() 41 _, err := s.Server.ClientStatsRequest(respW, req) 42 assert.NotNil(err) 43 assert.Equal(err.Error(), structs.ErrPermissionDenied.Error()) 44 } 45 46 // Try request with an invalid token and expect failure 47 { 48 respW := httptest.NewRecorder() 49 token := mock.CreatePolicyAndToken(t, state, 1005, "invalid", mock.NodePolicy(acl.PolicyDeny)) 50 setToken(req, token) 51 _, err := s.Server.ClientStatsRequest(respW, req) 52 assert.NotNil(err) 53 assert.Equal(err.Error(), structs.ErrPermissionDenied.Error()) 54 } 55 56 // Try request with a valid token 57 { 58 respW := httptest.NewRecorder() 59 token := mock.CreatePolicyAndToken(t, state, 1007, "valid", mock.NodePolicy(acl.PolicyRead)) 60 setToken(req, token) 61 _, err := s.Server.ClientStatsRequest(respW, req) 62 assert.Nil(err) 63 assert.Equal(http.StatusOK, respW.Code) 64 } 65 66 // Try request with a management token 67 { 68 respW := httptest.NewRecorder() 69 setToken(req, s.RootToken) 70 _, err := s.Server.ClientStatsRequest(respW, req) 71 assert.Nil(err) 72 assert.Equal(http.StatusOK, respW.Code) 73 } 74 }) 75 }