1package tessen
2
3import (
4	"errors"
5	"testing"
6
7	corev2 "github.com/sensu/sensu-go/api/core/v2"
8	client "github.com/sensu/sensu-go/cli/client/testing"
9	test "github.com/sensu/sensu-go/cli/commands/testing"
10	"github.com/stretchr/testify/assert"
11	"github.com/stretchr/testify/mock"
12	"github.com/stretchr/testify/require"
13)
14
15func TestInfoCommand(t *testing.T) {
16	assert := assert.New(t)
17
18	cli := test.NewCLI()
19	cmd := InfoCommand(cli)
20
21	assert.NotNil(cmd, "cmd should be returned")
22	assert.NotNil(cmd.RunE, "cmd should be able to be executed")
23	assert.Regexp("info", cmd.Use)
24	assert.Regexp("tessen", cmd.Short)
25}
26
27func TestInfoCommandRunEClosure(t *testing.T) {
28	assert := assert.New(t)
29
30	cli := test.NewCLI()
31	client := cli.Client.(*client.MockClient)
32	client.On("Get", mock.Anything, &corev2.TessenConfig{OptOut: false}).Return(nil)
33
34	cmd := InfoCommand(cli)
35	out, err := test.RunCmd(cmd, []string{})
36	require.NoError(t, err)
37
38	assert.NotEmpty(out)
39	assert.Contains(out, "false")
40}
41
42func TestInfoCommandWithArgs(t *testing.T) {
43	assert := assert.New(t)
44
45	cli := test.NewCLI()
46	cmd := InfoCommand(cli)
47	out, err := test.RunCmd(cmd, []string{"arg"})
48	require.Error(t, err)
49
50	assert.NotEmpty(out)
51	assert.Contains(out, "Usage")
52}
53
54func TestInfoCommandRunEClosureWithTable(t *testing.T) {
55	assert := assert.New(t)
56
57	cli := test.NewCLI()
58	client := cli.Client.(*client.MockClient)
59	client.On("Get", mock.Anything, &corev2.TessenConfig{OptOut: false}).Return(nil)
60
61	cmd := InfoCommand(cli)
62	require.NoError(t, cmd.Flags().Set("format", "tabular"))
63
64	out, err := test.RunCmd(cmd, []string{})
65	require.NoError(t, err)
66
67	assert.NotEmpty(out)
68	assert.Contains(out, "Opt-Out")
69}
70
71func TestInfoCommandRunEClosureWithErr(t *testing.T) {
72	assert := assert.New(t)
73
74	cli := test.NewCLI()
75	client := cli.Client.(*client.MockClient)
76	client.On("Get", mock.Anything, &corev2.TessenConfig{OptOut: false}).Return(errors.New("err"))
77
78	cmd := InfoCommand(cli)
79	out, err := test.RunCmd(cmd, []string{})
80
81	assert.NotNil(err)
82	assert.Equal("err", err.Error())
83	assert.Empty(out)
84}
85