1faf1110aa
This is necessary as consul-api's tests require a real consul instance to be running. We can't directly import an agent to fire up an instance, due to the way this would create an import cycle. These tests instead will start a consul instance using the binary in $PATH (if it exists).
149 lines
2.3 KiB
Go
149 lines
2.3 KiB
Go
package api
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
)
|
|
|
|
// ROOT is a management token for the tests
|
|
var CONSUL_ROOT string
|
|
|
|
func init() {
|
|
CONSUL_ROOT = os.Getenv("CONSUL_ROOT")
|
|
}
|
|
|
|
func TestACL_CreateDestroy(t *testing.T) {
|
|
if CONSUL_ROOT == "" {
|
|
t.SkipNow()
|
|
}
|
|
c, s := makeClient(t)
|
|
defer s.stop()
|
|
|
|
c.config.Token = CONSUL_ROOT
|
|
acl := c.ACL()
|
|
|
|
ae := ACLEntry{
|
|
Name: "API test",
|
|
Type: ACLClientType,
|
|
Rules: `key "" { policy = "deny" }`,
|
|
}
|
|
|
|
id, wm, err := acl.Create(&ae, nil)
|
|
if err != nil {
|
|
t.Fatalf("err: %v", err)
|
|
}
|
|
|
|
if wm.RequestTime == 0 {
|
|
t.Fatalf("bad: %v", wm)
|
|
}
|
|
|
|
if id == "" {
|
|
t.Fatalf("invalid: %v", id)
|
|
}
|
|
|
|
ae2, _, err := acl.Info(id, nil)
|
|
if err != nil {
|
|
t.Fatalf("err: %v", err)
|
|
}
|
|
|
|
if ae2.Name != ae.Name || ae2.Type != ae.Type || ae2.Rules != ae.Rules {
|
|
t.Fatalf("Bad: %#v", ae2)
|
|
}
|
|
|
|
wm, err = acl.Destroy(id, nil)
|
|
if err != nil {
|
|
t.Fatalf("err: %v", err)
|
|
}
|
|
|
|
if wm.RequestTime == 0 {
|
|
t.Fatalf("bad: %v", wm)
|
|
}
|
|
}
|
|
|
|
func TestACL_CloneDestroy(t *testing.T) {
|
|
if CONSUL_ROOT == "" {
|
|
t.SkipNow()
|
|
}
|
|
c, s := makeClient(t)
|
|
defer s.stop()
|
|
|
|
c.config.Token = CONSUL_ROOT
|
|
acl := c.ACL()
|
|
|
|
id, wm, err := acl.Clone(CONSUL_ROOT, nil)
|
|
if err != nil {
|
|
t.Fatalf("err: %v", err)
|
|
}
|
|
|
|
if wm.RequestTime == 0 {
|
|
t.Fatalf("bad: %v", wm)
|
|
}
|
|
|
|
if id == "" {
|
|
t.Fatalf("invalid: %v", id)
|
|
}
|
|
|
|
wm, err = acl.Destroy(id, nil)
|
|
if err != nil {
|
|
t.Fatalf("err: %v", err)
|
|
}
|
|
|
|
if wm.RequestTime == 0 {
|
|
t.Fatalf("bad: %v", wm)
|
|
}
|
|
}
|
|
|
|
func TestACL_Info(t *testing.T) {
|
|
if CONSUL_ROOT == "" {
|
|
t.SkipNow()
|
|
}
|
|
c, s := makeClient(t)
|
|
defer s.stop()
|
|
|
|
c.config.Token = CONSUL_ROOT
|
|
acl := c.ACL()
|
|
|
|
ae, qm, err := acl.Info(CONSUL_ROOT, nil)
|
|
if err != nil {
|
|
t.Fatalf("err: %v", err)
|
|
}
|
|
|
|
if qm.LastIndex == 0 {
|
|
t.Fatalf("bad: %v", qm)
|
|
}
|
|
if !qm.KnownLeader {
|
|
t.Fatalf("bad: %v", qm)
|
|
}
|
|
|
|
if ae == nil || ae.ID != CONSUL_ROOT || ae.Type != ACLManagementType {
|
|
t.Fatalf("bad: %#v", ae)
|
|
}
|
|
}
|
|
|
|
func TestACL_List(t *testing.T) {
|
|
if CONSUL_ROOT == "" {
|
|
t.SkipNow()
|
|
}
|
|
c, s := makeClient(t)
|
|
defer s.stop()
|
|
|
|
c.config.Token = CONSUL_ROOT
|
|
acl := c.ACL()
|
|
|
|
acls, qm, err := acl.List(nil)
|
|
if err != nil {
|
|
t.Fatalf("err: %v", err)
|
|
}
|
|
|
|
if len(acls) < 2 {
|
|
t.Fatalf("bad: %v", acls)
|
|
}
|
|
|
|
if qm.LastIndex == 0 {
|
|
t.Fatalf("bad: %v", qm)
|
|
}
|
|
if !qm.KnownLeader {
|
|
t.Fatalf("bad: %v", qm)
|
|
}
|
|
}
|