mirror of
https://github.com/status-im/consul.git
synced 2025-01-09 21:35:52 +00:00
d68edcecf4
Now that testutil uses t.Cleanup to remove the directory the caller no longer has to manage the removal
171 lines
3.3 KiB
Go
171 lines
3.3 KiB
Go
package authmethodlist
|
|
|
|
import (
|
|
"encoding/json"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/hashicorp/consul/agent"
|
|
"github.com/hashicorp/consul/api"
|
|
"github.com/hashicorp/consul/testrpc"
|
|
"github.com/hashicorp/go-uuid"
|
|
"github.com/mitchellh/cli"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
|
|
// activate testing auth method
|
|
_ "github.com/hashicorp/consul/agent/consul/authmethod/testauth"
|
|
)
|
|
|
|
func TestAuthMethodListCommand_noTabs(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
if strings.ContainsRune(New(cli.NewMockUi()).Help(), '\t') {
|
|
t.Fatal("help has tabs")
|
|
}
|
|
}
|
|
|
|
func TestAuthMethodListCommand(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
a := agent.NewTestAgent(t, `
|
|
primary_datacenter = "dc1"
|
|
acl {
|
|
enabled = true
|
|
tokens {
|
|
master = "root"
|
|
}
|
|
}`)
|
|
|
|
defer a.Shutdown()
|
|
testrpc.WaitForLeader(t, a.RPC, "dc1")
|
|
|
|
t.Run("found none", func(t *testing.T) {
|
|
ui := cli.NewMockUi()
|
|
cmd := New(ui)
|
|
|
|
args := []string{
|
|
"-http-addr=" + a.HTTPAddr(),
|
|
"-token=root",
|
|
}
|
|
|
|
code := cmd.Run(args)
|
|
require.Equal(t, code, 0)
|
|
require.Empty(t, ui.ErrorWriter.String())
|
|
require.Empty(t, ui.OutputWriter.String())
|
|
})
|
|
|
|
client := a.Client()
|
|
|
|
createAuthMethod := func(t *testing.T) string {
|
|
id, err := uuid.GenerateUUID()
|
|
require.NoError(t, err)
|
|
|
|
methodName := "test-" + id
|
|
|
|
_, _, err = client.ACL().AuthMethodCreate(
|
|
&api.ACLAuthMethod{
|
|
Name: methodName,
|
|
Type: "testing",
|
|
Description: "test",
|
|
},
|
|
&api.WriteOptions{Token: "root"},
|
|
)
|
|
require.NoError(t, err)
|
|
|
|
return methodName
|
|
}
|
|
|
|
var methodNames []string
|
|
for i := 0; i < 5; i++ {
|
|
methodName := createAuthMethod(t)
|
|
methodNames = append(methodNames, methodName)
|
|
}
|
|
|
|
t.Run("found some", func(t *testing.T) {
|
|
ui := cli.NewMockUi()
|
|
cmd := New(ui)
|
|
|
|
args := []string{
|
|
"-http-addr=" + a.HTTPAddr(),
|
|
"-token=root",
|
|
}
|
|
|
|
code := cmd.Run(args)
|
|
require.Equal(t, code, 0)
|
|
require.Empty(t, ui.ErrorWriter.String())
|
|
output := ui.OutputWriter.String()
|
|
|
|
for _, methodName := range methodNames {
|
|
require.Contains(t, output, methodName)
|
|
}
|
|
})
|
|
}
|
|
|
|
func TestAuthMethodListCommand_JSON(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
a := agent.NewTestAgent(t, `
|
|
primary_datacenter = "dc1"
|
|
acl {
|
|
enabled = true
|
|
tokens {
|
|
master = "root"
|
|
}
|
|
}`)
|
|
|
|
defer a.Shutdown()
|
|
testrpc.WaitForLeader(t, a.RPC, "dc1")
|
|
|
|
client := a.Client()
|
|
|
|
createAuthMethod := func(t *testing.T) string {
|
|
id, err := uuid.GenerateUUID()
|
|
require.NoError(t, err)
|
|
|
|
methodName := "test-" + id
|
|
|
|
_, _, err = client.ACL().AuthMethodCreate(
|
|
&api.ACLAuthMethod{
|
|
Name: methodName,
|
|
Type: "testing",
|
|
Description: "test",
|
|
},
|
|
&api.WriteOptions{Token: "root"},
|
|
)
|
|
require.NoError(t, err)
|
|
|
|
return methodName
|
|
}
|
|
|
|
var methodNames []string
|
|
for i := 0; i < 5; i++ {
|
|
methodName := createAuthMethod(t)
|
|
methodNames = append(methodNames, methodName)
|
|
}
|
|
|
|
t.Run("found some", func(t *testing.T) {
|
|
ui := cli.NewMockUi()
|
|
cmd := New(ui)
|
|
|
|
args := []string{
|
|
"-http-addr=" + a.HTTPAddr(),
|
|
"-token=root",
|
|
"-format=json",
|
|
}
|
|
|
|
code := cmd.Run(args)
|
|
require.Equal(t, code, 0)
|
|
require.Empty(t, ui.ErrorWriter.String())
|
|
output := ui.OutputWriter.String()
|
|
|
|
for _, methodName := range methodNames {
|
|
require.Contains(t, output, methodName)
|
|
}
|
|
|
|
var jsonOutput json.RawMessage
|
|
err := json.Unmarshal([]byte(output), &jsonOutput)
|
|
assert.NoError(t, err)
|
|
})
|
|
}
|