-
Notifications
You must be signed in to change notification settings - Fork 6
/
root_test.go
123 lines (95 loc) · 2.56 KB
/
root_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
package cli_test
import (
"reflect"
"testing"
"github.com/anchordotdev/cli"
_ "github.com/anchordotdev/cli/auth"
"github.com/anchordotdev/cli/cmdtest"
_ "github.com/anchordotdev/cli/lcl"
_ "github.com/anchordotdev/cli/service"
_ "github.com/anchordotdev/cli/testflags"
_ "github.com/anchordotdev/cli/trust"
_ "github.com/anchordotdev/cli/version"
)
func TestCmdRoot(t *testing.T) {
t.Run("root", func(t *testing.T) {
cmdtest.TestHelp(t, cli.CmdRoot)
})
t.Run("--help", func(t *testing.T) {
cmdtest.TestHelp(t, cli.CmdRoot, "--help")
})
// config
tests := []struct {
name string
argv []string
env map[string]string
want any
get func(*cli.Config) any
}{
// dashboard url
{
name: "default-dashboard-url",
want: "https://anchor.dev",
get: func(cli *cli.Config) any { return cli.Dashboard.URL },
},
{
name: "--dashboard-url",
argv: []string{"--dashboard-url", "https://anchor.example.com"},
want: "https://anchor.example.com",
get: func(cli *cli.Config) any { return cli.Dashboard.URL },
},
{
name: "ANCHOR_HOST",
env: map[string]string{"ANCHOR_HOST": "https://anchor.example.com"},
want: "https://anchor.example.com",
get: func(cli *cli.Config) any { return cli.Dashboard.URL },
},
// api url
{
name: "default-api-url",
want: "https://api.anchor.dev/v0",
get: func(cli *cli.Config) any { return cli.API.URL },
},
{
name: "--api-url",
argv: []string{"--api-url", "https://api.anchor.example.com"},
want: "https://api.anchor.example.com",
get: func(cli *cli.Config) any { return cli.API.URL },
},
{
name: "API_URL",
env: map[string]string{"API_URL": "https://api.anchor.example.com"},
want: "https://api.anchor.example.com",
get: func(cli *cli.Config) any { return cli.API.URL },
},
// api token
{
name: "default-api-token",
want: "",
get: func(cli *cli.Config) any { return cli.API.Token },
},
{
name: "--api-token",
argv: []string{"--api-token", "f00f"},
want: "f00f",
get: func(cli *cli.Config) any { return cli.API.Token },
},
{
name: "API_TOKEN",
env: map[string]string{"API_TOKEN": "f00f00f"},
want: "f00f00f",
get: func(cli *cli.Config) any { return cli.API.Token },
},
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
for k, v := range test.env {
t.Setenv(k, v)
}
cfg := cmdtest.TestCfg(t, cli.CmdRoot, test.argv...)
if want, got := test.want, test.get(cfg); !reflect.DeepEqual(want, got) {
t.Errorf("want dashboard host %s, got %s", want, got)
}
})
}
}