github.com/fabiokung/docker@v0.11.2-0.20170222101415-4534dcd49497/cli/command/node/list_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 ) 16 17 func TestNodeListErrorOnAPIFailure(t *testing.T) { 18 testCases := []struct { 19 nodeListFunc func() ([]swarm.Node, error) 20 infoFunc func() (types.Info, error) 21 expectedError string 22 }{ 23 { 24 nodeListFunc: func() ([]swarm.Node, error) { 25 return []swarm.Node{}, fmt.Errorf("error listing nodes") 26 }, 27 expectedError: "error listing nodes", 28 }, 29 { 30 nodeListFunc: func() ([]swarm.Node, error) { 31 return []swarm.Node{ 32 { 33 ID: "nodeID", 34 }, 35 }, nil 36 }, 37 infoFunc: func() (types.Info, error) { 38 return types.Info{}, fmt.Errorf("error asking for node info") 39 }, 40 expectedError: "error asking for node info", 41 }, 42 } 43 for _, tc := range testCases { 44 buf := new(bytes.Buffer) 45 cmd := newListCommand( 46 test.NewFakeCli(&fakeClient{ 47 nodeListFunc: tc.nodeListFunc, 48 infoFunc: tc.infoFunc, 49 }, buf)) 50 cmd.SetOutput(ioutil.Discard) 51 assert.Error(t, cmd.Execute(), tc.expectedError) 52 } 53 } 54 55 func TestNodeList(t *testing.T) { 56 buf := new(bytes.Buffer) 57 cmd := newListCommand( 58 test.NewFakeCli(&fakeClient{ 59 nodeListFunc: func() ([]swarm.Node, error) { 60 return []swarm.Node{ 61 *Node(NodeID("nodeID1"), Hostname("nodeHostname1"), Manager(Leader())), 62 *Node(NodeID("nodeID2"), Hostname("nodeHostname2"), Manager()), 63 *Node(NodeID("nodeID3"), Hostname("nodeHostname3")), 64 }, nil 65 }, 66 infoFunc: func() (types.Info, error) { 67 return types.Info{ 68 Swarm: swarm.Info{ 69 NodeID: "nodeID1", 70 }, 71 }, nil 72 }, 73 }, buf)) 74 assert.NilError(t, cmd.Execute()) 75 assert.Contains(t, buf.String(), `nodeID1 * nodeHostname1 Ready Active Leader`) 76 assert.Contains(t, buf.String(), `nodeID2 nodeHostname2 Ready Active Reachable`) 77 assert.Contains(t, buf.String(), `nodeID3 nodeHostname3 Ready Active`) 78 } 79 80 func TestNodeListQuietShouldOnlyPrintIDs(t *testing.T) { 81 buf := new(bytes.Buffer) 82 cmd := newListCommand( 83 test.NewFakeCli(&fakeClient{ 84 nodeListFunc: func() ([]swarm.Node, error) { 85 return []swarm.Node{ 86 *Node(), 87 }, nil 88 }, 89 }, buf)) 90 cmd.Flags().Set("quiet", "true") 91 assert.NilError(t, cmd.Execute()) 92 assert.Contains(t, buf.String(), "nodeID") 93 } 94 95 // Test case for #24090 96 func TestNodeListContainsHostname(t *testing.T) { 97 buf := new(bytes.Buffer) 98 cmd := newListCommand(test.NewFakeCli(&fakeClient{}, buf)) 99 assert.NilError(t, cmd.Execute()) 100 assert.Contains(t, buf.String(), "HOSTNAME") 101 }