feat: add JSON output format to many CLI commands (#6082)

This commit is contained in:
Dean Sheather
2023-02-09 04:09:38 +11:00
committed by GitHub
parent 5655ec6862
commit d60ec3e4bf
36 changed files with 851 additions and 285 deletions

View File

@ -2,6 +2,8 @@ package cli_test
import (
"bytes"
"context"
"encoding/json"
"regexp"
"testing"
@ -9,6 +11,8 @@ import (
"github.com/coder/coder/cli/clitest"
"github.com/coder/coder/coderd/coderdtest"
"github.com/coder/coder/codersdk"
"github.com/coder/coder/testutil"
)
func TestTokens(t *testing.T) {
@ -16,12 +20,15 @@ func TestTokens(t *testing.T) {
client := coderdtest.New(t, nil)
_ = coderdtest.CreateFirstUser(t, client)
ctx, cancelFunc := context.WithTimeout(context.Background(), testutil.WaitLong)
defer cancelFunc()
// helpful empty response
cmd, root := clitest.New(t, "tokens", "ls")
clitest.SetupConfig(t, client, root)
buf := new(bytes.Buffer)
cmd.SetOut(buf)
err := cmd.Execute()
err := cmd.ExecuteContext(ctx)
require.NoError(t, err)
res := buf.String()
require.Contains(t, res, "tokens found")
@ -30,7 +37,7 @@ func TestTokens(t *testing.T) {
clitest.SetupConfig(t, client, root)
buf = new(bytes.Buffer)
cmd.SetOut(buf)
err = cmd.Execute()
err = cmd.ExecuteContext(ctx)
require.NoError(t, err)
res = buf.String()
require.NotEmpty(t, res)
@ -44,7 +51,7 @@ func TestTokens(t *testing.T) {
clitest.SetupConfig(t, client, root)
buf = new(bytes.Buffer)
cmd.SetOut(buf)
err = cmd.Execute()
err = cmd.ExecuteContext(ctx)
require.NoError(t, err)
res = buf.String()
require.NotEmpty(t, res)
@ -54,11 +61,23 @@ func TestTokens(t *testing.T) {
require.Contains(t, res, "LAST USED")
require.Contains(t, res, id)
cmd, root = clitest.New(t, "tokens", "ls", "--output=json")
clitest.SetupConfig(t, client, root)
buf = new(bytes.Buffer)
cmd.SetOut(buf)
err = cmd.ExecuteContext(ctx)
require.NoError(t, err)
var tokens []codersdk.APIKey
require.NoError(t, json.Unmarshal(buf.Bytes(), &tokens))
require.Len(t, tokens, 1)
require.Equal(t, id, tokens[0].ID)
cmd, root = clitest.New(t, "tokens", "rm", id)
clitest.SetupConfig(t, client, root)
buf = new(bytes.Buffer)
cmd.SetOut(buf)
err = cmd.Execute()
err = cmd.ExecuteContext(ctx)
require.NoError(t, err)
res = buf.String()
require.NotEmpty(t, res)