github.com/fabiokung/docker@v0.11.2-0.20170222101415-4534dcd49497/cli/command/node/inspect_test.go (about) 1 package node 2 3 import ( 4 "bytes" 5 "fmt" 6 "io/ioutil" 7 "testing" 8 9 "github.com/docker/docker/api/types" 10 "github.com/docker/docker/api/types/swarm" 11 "github.com/docker/docker/cli/internal/test" 12 // Import builders to get the builder function as package function 13 . "github.com/docker/docker/cli/internal/test/builders" 14 "github.com/docker/docker/pkg/testutil/assert" 15 "github.com/docker/docker/pkg/testutil/golden" 16 ) 17 18 func TestNodeInspectErrors(t *testing.T) { 19 testCases := []struct { 20 args []string 21 flags map[string]string 22 nodeInspectFunc func() (swarm.Node, []byte, error) 23 infoFunc func() (types.Info, error) 24 expectedError string 25 }{ 26 { 27 expectedError: "requires at least 1 argument", 28 }, 29 { 30 args: []string{"self"}, 31 infoFunc: func() (types.Info, error) { 32 return types.Info{}, fmt.Errorf("error asking for node info") 33 }, 34 expectedError: "error asking for node info", 35 }, 36 { 37 args: []string{"nodeID"}, 38 nodeInspectFunc: func() (swarm.Node, []byte, error) { 39 return swarm.Node{}, []byte{}, fmt.Errorf("error inspecting the node") 40 }, 41 infoFunc: func() (types.Info, error) { 42 return types.Info{}, fmt.Errorf("error asking for node info") 43 }, 44 expectedError: "error inspecting the node", 45 }, 46 { 47 args: []string{"self"}, 48 nodeInspectFunc: func() (swarm.Node, []byte, error) { 49 return swarm.Node{}, []byte{}, fmt.Errorf("error inspecting the node") 50 }, 51 infoFunc: func() (types.Info, error) { 52 return types.Info{}, nil 53 }, 54 expectedError: "error inspecting the node", 55 }, 56 { 57 args: []string{"self"}, 58 flags: map[string]string{ 59 "pretty": "true", 60 }, 61 infoFunc: func() (types.Info, error) { 62 return types.Info{}, fmt.Errorf("error asking for node info") 63 }, 64 expectedError: "error asking for node info", 65 }, 66 } 67 for _, tc := range testCases { 68 buf := new(bytes.Buffer) 69 cmd := newInspectCommand( 70 test.NewFakeCli(&fakeClient{ 71 nodeInspectFunc: tc.nodeInspectFunc, 72 infoFunc: tc.infoFunc, 73 }, buf)) 74 cmd.SetArgs(tc.args) 75 for key, value := range tc.flags { 76 cmd.Flags().Set(key, value) 77 } 78 cmd.SetOutput(ioutil.Discard) 79 assert.Error(t, cmd.Execute(), tc.expectedError) 80 } 81 } 82 83 func TestNodeInspectPretty(t *testing.T) { 84 testCases := []struct { 85 name string 86 nodeInspectFunc func() (swarm.Node, []byte, error) 87 }{ 88 { 89 name: "simple", 90 nodeInspectFunc: func() (swarm.Node, []byte, error) { 91 return *Node(NodeLabels(map[string]string{ 92 "lbl1": "value1", 93 })), []byte{}, nil 94 }, 95 }, 96 { 97 name: "manager", 98 nodeInspectFunc: func() (swarm.Node, []byte, error) { 99 return *Node(Manager()), []byte{}, nil 100 }, 101 }, 102 { 103 name: "manager-leader", 104 nodeInspectFunc: func() (swarm.Node, []byte, error) { 105 return *Node(Manager(Leader())), []byte{}, nil 106 }, 107 }, 108 } 109 for _, tc := range testCases { 110 buf := new(bytes.Buffer) 111 cmd := newInspectCommand( 112 test.NewFakeCli(&fakeClient{ 113 nodeInspectFunc: tc.nodeInspectFunc, 114 }, buf)) 115 cmd.SetArgs([]string{"nodeID"}) 116 cmd.Flags().Set("pretty", "true") 117 assert.NilError(t, cmd.Execute()) 118 actual := buf.String() 119 expected := golden.Get(t, []byte(actual), fmt.Sprintf("node-inspect-pretty.%s.golden", tc.name)) 120 assert.EqualNormalizedString(t, assert.RemoveSpace, actual, string(expected)) 121 } 122 }