(t *testing.T)
| 223 | } |
| 224 | |
| 225 | func TestNodeContextWriteJSON(t *testing.T) { |
| 226 | cases := []struct { |
| 227 | expected []map[string]any |
| 228 | info client.SystemInfoResult |
| 229 | }{ |
| 230 | { |
| 231 | expected: []map[string]any{ |
| 232 | {"Availability": "", "Hostname": "foobar_baz", "ID": "nodeID1", "ManagerStatus": "", "Status": "", "Self": false, "TLSStatus": "Unknown", "EngineVersion": "1.2.3"}, |
| 233 | {"Availability": "", "Hostname": "foobar_bar", "ID": "nodeID2", "ManagerStatus": "", "Status": "", "Self": false, "TLSStatus": "Unknown", "EngineVersion": ""}, |
| 234 | {"Availability": "", "Hostname": "foobar_boo", "ID": "nodeID3", "ManagerStatus": "", "Status": "", "Self": false, "TLSStatus": "Unknown", "EngineVersion": "18.03.0-ce"}, |
| 235 | }, |
| 236 | }, |
| 237 | { |
| 238 | expected: []map[string]any{ |
| 239 | {"Availability": "", "Hostname": "foobar_baz", "ID": "nodeID1", "ManagerStatus": "", "Status": "", "Self": false, "TLSStatus": "Ready", "EngineVersion": "1.2.3"}, |
| 240 | {"Availability": "", "Hostname": "foobar_bar", "ID": "nodeID2", "ManagerStatus": "", "Status": "", "Self": false, "TLSStatus": "Needs Rotation", "EngineVersion": ""}, |
| 241 | {"Availability": "", "Hostname": "foobar_boo", "ID": "nodeID3", "ManagerStatus": "", "Status": "", "Self": false, "TLSStatus": "Unknown", "EngineVersion": "18.03.0-ce"}, |
| 242 | }, |
| 243 | info: client.SystemInfoResult{ |
| 244 | Info: system.Info{ |
| 245 | Swarm: swarm.Info{ |
| 246 | Cluster: &swarm.ClusterInfo{ |
| 247 | TLSInfo: swarm.TLSInfo{TrustRoot: "hi"}, |
| 248 | RootRotationInProgress: true, |
| 249 | }, |
| 250 | }, |
| 251 | }, |
| 252 | }, |
| 253 | }, |
| 254 | } |
| 255 | |
| 256 | for _, testcase := range cases { |
| 257 | nodes := client.NodeListResult{ |
| 258 | Items: []swarm.Node{ |
| 259 | {ID: "nodeID1", Description: swarm.NodeDescription{Hostname: "foobar_baz", TLSInfo: swarm.TLSInfo{TrustRoot: "hi"}, Engine: swarm.EngineDescription{EngineVersion: "1.2.3"}}}, |
| 260 | {ID: "nodeID2", Description: swarm.NodeDescription{Hostname: "foobar_bar", TLSInfo: swarm.TLSInfo{TrustRoot: "no"}}}, |
| 261 | {ID: "nodeID3", Description: swarm.NodeDescription{Hostname: "foobar_boo", Engine: swarm.EngineDescription{EngineVersion: "18.03.0-ce"}}}, |
| 262 | }, |
| 263 | } |
| 264 | out := bytes.NewBufferString("") |
| 265 | err := formatWrite(formatter.Context{Format: "{{json .}}", Output: out}, nodes, testcase.info) |
| 266 | if err != nil { |
| 267 | t.Fatal(err) |
| 268 | } |
| 269 | for i, line := range strings.Split(strings.TrimSpace(out.String()), "\n") { |
| 270 | msg := fmt.Sprintf("Output: line %d: %s", i, line) |
| 271 | var m map[string]any |
| 272 | err := json.Unmarshal([]byte(line), &m) |
| 273 | assert.NilError(t, err, msg) |
| 274 | assert.Check(t, is.DeepEqual(testcase.expected[i], m), msg) |
| 275 | } |
| 276 | } |
| 277 | } |
| 278 | |
| 279 | func TestNodeContextWriteJSONField(t *testing.T) { |
| 280 | nodes := client.NodeListResult{ |
nothing calls this directly
no test coverage detected
searching dependent graphs…