consul/command/acl/token/list/token_list_test.go
Daniel Nephin c88fae0aac ci: Add staticcheck and fix most errors
Three of the checks are temporarily disabled to limit the size of the
diff, and allow us to enable all the other checks in CI.

In a follow up we can fix the issues reported by the other checks one
at a time, and enable them.
2020-05-28 11:59:58 -04:00

139 lines
2.7 KiB
Go

package tokenlist
import (
"encoding/json"
"fmt"
"os"
"strings"
"testing"
"github.com/hashicorp/consul/agent"
"github.com/hashicorp/consul/api"
"github.com/hashicorp/consul/sdk/testutil"
"github.com/hashicorp/consul/testrpc"
"github.com/mitchellh/cli"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestTokenListCommand_noTabs(t *testing.T) {
t.Parallel()
if strings.ContainsRune(New(cli.NewMockUi()).Help(), '\t') {
t.Fatal("help has tabs")
}
}
func TestTokenListCommand_Pretty(t *testing.T) {
t.Parallel()
assert := assert.New(t)
testDir := testutil.TempDir(t, "acl")
defer os.RemoveAll(testDir)
a := agent.NewTestAgent(t, `
primary_datacenter = "dc1"
acl {
enabled = true
tokens {
master = "root"
}
}`)
defer a.Shutdown()
testrpc.WaitForLeader(t, a.RPC, "dc1")
ui := cli.NewMockUi()
cmd := New(ui)
var tokenIds []string
// Create a couple tokens to list
client := a.Client()
for i := 0; i < 5; i++ {
description := fmt.Sprintf("test token %d", i)
token, _, err := client.ACL().TokenCreate(
&api.ACLToken{Description: description},
&api.WriteOptions{Token: "root"},
)
tokenIds = append(tokenIds, token.AccessorID)
assert.NoError(err)
}
args := []string{
"-http-addr=" + a.HTTPAddr(),
"-token=root",
}
code := cmd.Run(args)
assert.Equal(code, 0)
assert.Empty(ui.ErrorWriter.String())
output := ui.OutputWriter.String()
for i, v := range tokenIds {
assert.Contains(output, fmt.Sprintf("test token %d", i))
assert.Contains(output, v)
}
}
func TestTokenListCommand_JSON(t *testing.T) {
t.Parallel()
assert := assert.New(t)
testDir := testutil.TempDir(t, "acl")
defer os.RemoveAll(testDir)
a := agent.NewTestAgent(t, `
primary_datacenter = "dc1"
acl {
enabled = true
tokens {
master = "root"
}
}`)
defer a.Shutdown()
testrpc.WaitForLeader(t, a.RPC, "dc1")
ui := cli.NewMockUi()
cmd := New(ui)
var tokenIds []string
// Create a couple tokens to list
client := a.Client()
for i := 0; i < 5; i++ {
description := fmt.Sprintf("test token %d", i)
token, _, err := client.ACL().TokenCreate(
&api.ACLToken{Description: description},
&api.WriteOptions{Token: "root"},
)
tokenIds = append(tokenIds, token.AccessorID)
assert.NoError(err)
}
args := []string{
"-http-addr=" + a.HTTPAddr(),
"-token=root",
"-format=json",
}
code := cmd.Run(args)
assert.Equal(code, 0)
assert.Empty(ui.ErrorWriter.String())
var jsonOutput []api.ACLTokenListEntry
err := json.Unmarshal([]byte(ui.OutputWriter.String()), &jsonOutput)
require.NoError(t, err, "token unmarshalling error")
respIDs := make([]string, 0, len(jsonOutput))
for _, obj := range jsonOutput {
respIDs = append(respIDs, obj.AccessorID)
}
require.Subset(t, respIDs, tokenIds)
}