agent: Test ACL token resolution
This commit is contained in:
parent
8fb86d14ab
commit
0c2951c5f9
|
@ -429,6 +429,67 @@ func TestParseConsistency_Invalid(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Test ACL token is resolved in correct order
|
||||||
|
func TestACLResolution(t *testing.T) {
|
||||||
|
var token string
|
||||||
|
// Request without token
|
||||||
|
req, err := http.NewRequest("GET",
|
||||||
|
"/v1/catalog/nodes", nil)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("err: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Request with explicit token
|
||||||
|
reqToken, err := http.NewRequest("GET",
|
||||||
|
"/v1/catalog/nodes?token=foo", nil)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("err: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
httpTest(t, func(srv *HTTPServer) {
|
||||||
|
// Check when no token is set
|
||||||
|
srv.agent.config.ACLToken = ""
|
||||||
|
srv.parseToken(req, &token)
|
||||||
|
if token != "" {
|
||||||
|
t.Fatalf("bad: %s", token)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check when ACLToken set
|
||||||
|
srv.agent.config.ACLToken = "agent"
|
||||||
|
srv.parseToken(req, &token)
|
||||||
|
if token != "agent" {
|
||||||
|
t.Fatalf("bad: %s", token)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check when AtlasACLToken set, wrong server
|
||||||
|
srv.agent.config.AtlasACLToken = "atlas"
|
||||||
|
srv.parseToken(req, &token)
|
||||||
|
if token != "agent" {
|
||||||
|
t.Fatalf("bad: %s", token)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check when AtlasACLToken set, correct server
|
||||||
|
srv.addr = scadaHTTPAddr
|
||||||
|
srv.parseToken(req, &token)
|
||||||
|
if token != "atlas" {
|
||||||
|
t.Fatalf("bad: %s", token)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check when AtlasACLToken not, correct server
|
||||||
|
srv.agent.config.AtlasACLToken = ""
|
||||||
|
srv.parseToken(req, &token)
|
||||||
|
if token != "agent" {
|
||||||
|
t.Fatalf("bad: %s", token)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Explicit token has highest precedence
|
||||||
|
srv.parseToken(reqToken, &token)
|
||||||
|
if token != "foo" {
|
||||||
|
t.Fatalf("bad: %s", token)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// assertIndex tests that X-Consul-Index is set and non-zero
|
// assertIndex tests that X-Consul-Index is set and non-zero
|
||||||
func assertIndex(t *testing.T, resp *httptest.ResponseRecorder) {
|
func assertIndex(t *testing.T, resp *httptest.ResponseRecorder) {
|
||||||
header := resp.Header().Get("X-Consul-Index")
|
header := resp.Header().Get("X-Consul-Index")
|
||||||
|
|
Loading…
Reference in New Issue