forked from vmware/govmomi
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcli.bats
executable file
·191 lines (139 loc) · 4.05 KB
/
cli.bats
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
#!/usr/bin/env bats
load test_helper
@test "about" {
vcsim_env -api-version uE53DA
run govc about
assert_success
assert_line "Vendor: VMware, Inc."
run env GOVC_TLS_HANDSHAKE_TIMEOUT=10s govc about
assert_success
assert_line "Vendor: VMware, Inc."
run env GOVC_TLS_HANDSHAKE_TIMEOUT=NOT_A_DURATION govc about
assert_failure
run govc about -json
assert_success
run govc about -json -l
assert_success
run govc about -dump
assert_success
run govc about -dump -l
assert_success
version=$(govc about -json -c | jq -r .Client.Version)
assert_equal 7.0 "$version" # govc's default version
version=$(govc about -json -c -vim-version "" | jq -r .Client.Version)
assert_equal uE53DA "$version" # vcsim's service version
version=$(govc about -json -c -vim-version 6.8.2 | jq -r .Client.Version)
assert_equal 6.8.2 "$version" # client specified version
}
@test "about.cert" {
vcsim_env -esx
run govc about.cert
assert_success
run govc about.cert -json
assert_success
run govc about.cert -show
assert_success
# with -k=true we get thumbprint output and exit 0
thumbprint=$(govc about.cert -k=true -thumbprint)
# with -k=true we get thumbprint output and exit 60
run govc about.cert -k=false -thumbprint
if [ "$status" -ne 60 ]; then
flunk $(printf "expected failed exit status=60, got status=%d" $status)
fi
assert_output "$thumbprint"
run govc about -k=false
assert_failure
run govc about -k=false -tls-known-hosts <(echo "$thumbprint")
assert_success
run govc about -k=false -tls-known-hosts <(echo "nope nope")
assert_failure
}
@test "version" {
vcsim_env -esx
run govc version
assert_success
v=$(govc version | awk '{print $NF}')
run govc version -require "$v"
assert_success
run govc version -require "not-a-version-string"
assert_failure
run govc version -require 100.0.0
assert_failure
}
@test "login attempt without credentials" {
vcsim_env -esx
host=$(govc env -x GOVC_URL_HOST)
port=$(govc env -x GOVC_URL_PORT)
run govc about -u "enoent@$host:$port"
assert_failure "govc: ServerFaultCode: Login failure"
}
@test "login attempt with GOVC_URL, GOVC_USERNAME, and GOVC_PASSWORD" {
vcsim_env -esx
govc_url_to_vars
run govc about
assert_success
}
@test "API version check" {
vcsim_env -esx
run env GOVC_MIN_API_VERSION=24.4 govc about
assert grep -q "^govc: require API version \"24.4\"," <<<"${output}"
run env GOVC_MIN_API_VERSION=no.no govc about
assert_failure
run env GOVC_MIN_API_VERSION=- govc about
assert_success
run env GOVC_MIN_API_VERSION=5.0 govc about
assert_success
run govc about -vim-namespace urn:vim25 -vim-version 6.0
assert_success
}
@test "govc env" {
output="$(govc env -x -u 'user:pass@enoent:99999?key=val#anchor')"
assert grep -q GOVC_URL=enoent:99999 <<<${output}
assert grep -q GOVC_USERNAME=user <<<${output}
assert grep -q GOVC_PASSWORD=pass <<<${output}
assert grep -q GOVC_URL_SCHEME=https <<<${output}
assert grep -q GOVC_URL_HOST=enoent <<<${output}
assert grep -q GOVC_URL_PORT=99999 <<<${output}
assert grep -q GOVC_URL_PATH=/sdk <<<${output}
assert grep -q GOVC_URL_QUERY=key=val <<<${output}
assert grep -q GOVC_URL_FRAGMENT=anchor <<<${output}
password="pa\$sword!ok"
run govc env -u "user:${password}@enoent:99999" GOVC_PASSWORD
assert_output "$password"
}
@test "govc help" {
run govc
assert_failure
run govc -h
assert_success
assert_matches "Usage of govc:"
run govc -enoent
assert_failure
run govc vm.create
assert_failure
run govc vm.create -h
assert_success
run govc vm.create -enoent
assert_failure
run govc nope
assert_failure
assert_matches "Usage of govc:"
run govc power
assert_failure
assert_matches "did you mean:"
}
@test "govc format error" {
vcsim_env
vm=DC0_H0_VM0
run govc vm.power -json -on $vm
assert_failure
jq . <<<"$output"
run govc vm.power -xml -on $vm
assert_failure
if type xmlstarlet ; then
xmlstarlet fo <<<"$output"
fi
run govc vm.power -dump -on $vm
assert_failure
gofmt <<<"$output"
}