Skip to content

Commit e2c348f

Browse files
author
Dariusz Jedrzejczyk
committed
Added a test for ACL token passing
1 parent 033c1a2 commit e2c348f

File tree

2 files changed

+93
-0
lines changed

2 files changed

+93
-0
lines changed

consul/consul_test.go

+48
Original file line numberDiff line numberDiff line change
@@ -1057,3 +1057,51 @@ func Test_substituteEnvironment(t *testing.T) {
10571057
})
10581058
}
10591059
}
1060+
1061+
func TestACLTokenPassing(t *testing.T) {
1062+
// given
1063+
t.Parallel()
1064+
server := CreateSecuredTestServer(t)
1065+
defer server.Stop()
1066+
1067+
bareClient := ClientAtServer(server)
1068+
bareClient.config.Tag = "marathon"
1069+
1070+
clientWithToken := SecuredClientAtServer(server)
1071+
clientWithToken.config.Tag = "marathon"
1072+
1073+
// and
1074+
app := utils.ConsulApp("serviceA", 1)
1075+
app.Tasks[0].Host = server.Config.Bind
1076+
app.Labels["test"] = "tag"
1077+
1078+
// when
1079+
err := bareClient.Register(&app.Tasks[0], app)
1080+
1081+
// then
1082+
assert.NoError(t, err, "Though it seems surprising, consul should not report an error here")
1083+
1084+
// when
1085+
services, _ := clientWithToken.GetAllServices()
1086+
1087+
// then
1088+
assert.Len(t, services, 0, "Registration without ACL token should be blocked by ACLs")
1089+
1090+
// when
1091+
err = clientWithToken.Register(&app.Tasks[0], app)
1092+
assert.NoError(t, err, "Registering service with proper ACL token should not report errors")
1093+
1094+
// when
1095+
services, _ = clientWithToken.GetAllServices()
1096+
1097+
// then
1098+
assert.Len(t, services, 1, "Expecting a registered service after using ACL token")
1099+
assert.Equal(t, "serviceA", services[0].Name)
1100+
assert.Equal(t, []string{"marathon", "test", "marathon-task:serviceA.0"}, services[0].Tags)
1101+
1102+
// when
1103+
services, _ = clientWithToken.GetAllServices()
1104+
1105+
// then
1106+
assert.Len(t, services, 0, "Reading services list without ACL token should yield empty response")
1107+
}

consul/consul_test_server.go

+45
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,32 @@ func CreateTestServer(t *testing.T) *testutil.TestServer {
3232
return server
3333
}
3434

35+
const MasterToken = "masterToken"
36+
37+
func CreateSecuredTestServer(t *testing.T) *testutil.TestServer {
38+
ports, err := getPorts(6)
39+
assert.NoError(t, err)
40+
41+
server, err := testutil.NewTestServerConfig(func(c *testutil.TestServerConfig) {
42+
c.Datacenter = fmt.Sprint("dc-", time.Now().UnixNano())
43+
c.Ports = &testutil.TestPortConfig{
44+
DNS: ports[0],
45+
HTTP: ports[1],
46+
RPC: ports[2],
47+
SerfLan: ports[3],
48+
SerfWan: ports[4],
49+
Server: ports[5],
50+
}
51+
c.ACLDatacenter = c.Datacenter
52+
c.ACLDefaultPolicy = "deny"
53+
c.ACLMasterToken = MasterToken
54+
})
55+
56+
assert.NoError(t, err)
57+
58+
return server
59+
}
60+
3561
// Ask the kernel for free open ports that are ready to use
3662
func getPorts(number int) ([]int, error) {
3763
ports := make([]int, number)
@@ -61,6 +87,10 @@ func ClientAtServer(server *testutil.TestServer) *Consul {
6187
return consulClientAtAddress(server.Config.Bind, server.Config.Ports.HTTP)
6288
}
6389

90+
func SecuredClientAtServer(server *testutil.TestServer) *Consul {
91+
return secureConsulClientAtAddress(server.Config.Bind, server.Config.Ports.HTTP)
92+
}
93+
6494
func FailingClient() *Consul {
6595
host, port := "192.0.2.5", 5555
6696
config := Config{
@@ -87,3 +117,18 @@ func consulClientAtAddress(host string, port int) *Consul {
87117
consul.AddAgent(host)
88118
return consul
89119
}
120+
121+
func secureConsulClientAtAddress(host string, port int) *Consul {
122+
config := Config{
123+
Timeout: timeutil.Interval{Duration: 10 * time.Second},
124+
Port: fmt.Sprintf("%d", port),
125+
ConsulNameSeparator: ".",
126+
EnableTagOverride: true,
127+
LocalAgentHost: host,
128+
Token: MasterToken,
129+
}
130+
consul := New(config)
131+
// initialize the agents cache with a single client pointing at provided location
132+
consul.AddAgent(host)
133+
return consul
134+
}

0 commit comments

Comments
 (0)