package api
import (
"testing"
)
func TestAPI_ACLBootstrap ( t * testing . T ) {
// TODO (slackpad) We currently can't inject the version, and the
// version in the binary depends on Git tags, so we can't reliably
// test this until we are just running an agent in-process here and
// have full control over the config.
}
func TestAPI_ACLCreateDestroy ( t * testing . T ) {
t . Parallel ( )
c , s := makeACLClient ( t )
defer s . Stop ( )
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 TestAPI_ACLCloneDestroy ( t * testing . T ) {
t . Parallel ( )
c , s := makeACLClient ( t )
defer s . Stop ( )
acl := c . ACL ( )
id , wm , err := acl . Clone ( c . config . Token , 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 TestAPI_ACLInfo ( t * testing . T ) {
t . Parallel ( )
c , s := makeACLClient ( t )
defer s . Stop ( )
acl := c . ACL ( )
ae , qm , err := acl . Info ( c . config . Token , 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 != c . config . Token || ae . Type != ACLManagementType {
t . Fatalf ( "bad: %#v" , ae )
}
}
func TestAPI_ACLList ( t * testing . T ) {
t . Parallel ( )
c , s := makeACLClient ( t )
defer s . Stop ( )
acl := c . ACL ( )
acls , qm , err := acl . List ( nil )
if err != nil {
t . Fatalf ( "err: %v" , err )
}
// anon token is a new token
if len ( acls ) < 1 {
t . Fatalf ( "bad: %v" , acls )
}
if qm . LastIndex == 0 {
t . Fatalf ( "bad: %v" , qm )
}
if ! qm . KnownLeader {
t . Fatalf ( "bad: %v" , qm )
}
}
func TestAPI_ACLReplication ( t * testing . T ) {
t . Parallel ( )
c , s := makeACLClient ( t )
defer s . Stop ( )
acl := c . ACL ( )
repl , qm , err := acl . Replication ( nil )
if err != nil {
t . Fatalf ( "err: %v" , err )
}
if repl == nil {
t . Fatalf ( "bad: %v" , repl )
}
if repl . Running {
t . Fatal ( "bad: repl should not be running" )
}
if repl . Enabled {
t . Fatal ( "bad: repl should not be enabled" )
}
if qm . RequestTime == 0 {
t . Fatalf ( "bad: %v" , qm )
}
}