agent: Adding X-Nomad-Token header parsing

This commit is contained in:
Armon Dadgar
2017-08-20 20:13:05 -07:00
parent 62a5580e53
commit 79420d78cf
2 changed files with 27 additions and 0 deletions

View File

@@ -358,9 +358,18 @@ func (s *HTTPServer) parseRegion(req *http.Request, r *string) {
}
}
// parseToken is used to parse the X-Nomad-Token param
func (s *HTTPServer) parseToken(req *http.Request, token *string) {
if other := req.Header.Get("X-Nomad-Token"); other != "" {
*token = other
return
}
}
// parse is a convenience method for endpoints that need to parse multiple flags
func (s *HTTPServer) parse(resp http.ResponseWriter, req *http.Request, r *string, b *structs.QueryOptions) bool {
s.parseRegion(req, r)
s.parseToken(req, &b.SecretID)
parseConsistency(req, b)
parsePrefix(req, b)
return parseWait(resp, req, b)

View File

@@ -338,6 +338,24 @@ func TestParseRegion(t *testing.T) {
}
}
func TestParseToken(t *testing.T) {
t.Parallel()
s := makeHTTPServer(t, nil)
defer s.Shutdown()
req, err := http.NewRequest("GET", "/v1/jobs", nil)
req.Header.Add("X-Nomad-Token", "foobar")
if err != nil {
t.Fatalf("err: %v", err)
}
var token string
s.Server.parseToken(req, &token)
if token != "foobar" {
t.Fatalf("bad %s", token)
}
}
// TestHTTP_VerifyHTTPSClient asserts that a client certificate signed by the
// appropriate CA is required when VerifyHTTPSClient=true.
func TestHTTP_VerifyHTTPSClient(t *testing.T) {