123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- package client
- import (
- "bytes"
- "io"
- "testing"
- )
- // nopCloser is used to provide a dummy CallFunc for Cmd()
- type nopCloser struct {
- io.Reader
- }
- func (nopCloser) Close() error { return nil }
- func TestClientDummyCommand(t *testing.T) {
- var out, errOut bytes.Buffer
- cFunc := func(method, path string, data interface{}, headers map[string][]string) (io.ReadCloser, int, error) {
- return nopCloser{bytes.NewBufferString("")}, 200, nil
- }
- cli := NewNetworkCli(&out, &errOut, cFunc)
- err := cli.Cmd("docker", "dummy")
- if err == nil {
- t.Fatalf("Incorrect Command must fail")
- }
- }
- func TestClientNoCommand(t *testing.T) {
- var out, errOut bytes.Buffer
- cFunc := func(method, path string, data interface{}, headers map[string][]string) (io.ReadCloser, int, error) {
- return nopCloser{bytes.NewBufferString("")}, 200, nil
- }
- cli := NewNetworkCli(&out, &errOut, cFunc)
- err := cli.Cmd("docker")
- if err == nil {
- t.Fatalf("Incorrect Command must fail")
- }
- }
- func TestClientNetworkCreate(t *testing.T) {
- var out, errOut bytes.Buffer
- cFunc := func(method, path string, data interface{}, headers map[string][]string) (io.ReadCloser, int, error) {
- return nopCloser{bytes.NewBufferString("")}, 200, nil
- }
- cli := NewNetworkCli(&out, &errOut, cFunc)
- err := cli.Cmd("docker", "network", "create", "test")
- if err != nil {
- t.Fatal(err.Error())
- }
- }
- func TestClientNetworkCreateWithDriver(t *testing.T) {
- var out, errOut bytes.Buffer
- cFunc := func(method, path string, data interface{}, headers map[string][]string) (io.ReadCloser, int, error) {
- return nopCloser{bytes.NewBufferString("")}, 200, nil
- }
- cli := NewNetworkCli(&out, &errOut, cFunc)
- err := cli.Cmd("docker", "network", "create", "-f=dummy", "test")
- if err == nil {
- t.Fatalf("Passing incorrect flags to the create command must fail")
- }
- err = cli.Cmd("docker", "network", "create", "-d=dummy", "test")
- if err != nil {
- t.Fatalf(err.Error())
- }
- }
- func TestClientNetworkRm(t *testing.T) {
- var out, errOut bytes.Buffer
- cFunc := func(method, path string, data interface{}, headers map[string][]string) (io.ReadCloser, int, error) {
- return nopCloser{bytes.NewBufferString("")}, 200, nil
- }
- cli := NewNetworkCli(&out, &errOut, cFunc)
- err := cli.Cmd("docker", "network", "rm", "test")
- if err != nil {
- t.Fatal(err.Error())
- }
- }
- func TestClientNetworkLs(t *testing.T) {
- var out, errOut bytes.Buffer
- networks := "db,web,test"
- cFunc := func(method, path string, data interface{}, headers map[string][]string) (io.ReadCloser, int, error) {
- return nopCloser{bytes.NewBufferString(networks)}, 200, nil
- }
- cli := NewNetworkCli(&out, &errOut, cFunc)
- err := cli.Cmd("docker", "network", "ls")
- if err != nil {
- t.Fatal(err.Error())
- }
- if out.String() != networks {
- t.Fatal("Network List command fail to return the intended list")
- }
- }
- func TestClientNetworkInfo(t *testing.T) {
- var out, errOut bytes.Buffer
- info := "dummy info"
- cFunc := func(method, path string, data interface{}, headers map[string][]string) (io.ReadCloser, int, error) {
- return nopCloser{bytes.NewBufferString(info)}, 200, nil
- }
- cli := NewNetworkCli(&out, &errOut, cFunc)
- err := cli.Cmd("docker", "network", "info", "test")
- if err != nil {
- t.Fatal(err.Error())
- }
- if out.String() != info {
- t.Fatal("Network List command fail to return the intended list")
- }
- }
- func TestClientNetworkJoin(t *testing.T) {
- var out, errOut bytes.Buffer
- cFunc := func(method, path string, data interface{}, headers map[string][]string) (io.ReadCloser, int, error) {
- return nopCloser{bytes.NewBufferString("")}, 200, nil
- }
- cli := NewNetworkCli(&out, &errOut, cFunc)
- err := cli.Cmd("docker", "network", "join", "db1", "dbnet", "db1-ep")
- if err != nil {
- t.Fatal(err.Error())
- }
- }
- func TestClientNetworkLeave(t *testing.T) {
- var out, errOut bytes.Buffer
- cFunc := func(method, path string, data interface{}, headers map[string][]string) (io.ReadCloser, int, error) {
- return nopCloser{bytes.NewBufferString("")}, 200, nil
- }
- cli := NewNetworkCli(&out, &errOut, cFunc)
- err := cli.Cmd("docker", "network", "leave", "db1", "dbnet")
- if err != nil {
- t.Fatal(err.Error())
- }
- }
- // Docker Flag processing in flag.go uses os.Exit(0) for --help
- // TODO : Handle the --help test-case in the IT when CLI is available
- /*
- func TestClientNetworkCreateHelp(t *testing.T) {
- var out, errOut bytes.Buffer
- cFunc := func(method, path string, data interface{}, headers map[string][]string) (io.ReadCloser, int, error) {
- return nil, 0, nil
- }
- cli := NewNetworkCli(&out, &errOut, cFunc)
- err := cli.Cmd("docker", "network", "create", "--help")
- if err != nil {
- t.Fatalf(err.Error())
- }
- }
- */
- // Docker flag processing in flag.go uses os.Exit(1) for incorrect paramater case.
- // TODO : Handle the missing argument case in the IT when CLI is available
- /*
- func TestClientNetworkCreateMissingArgument(t *testing.T) {
- var out, errOut bytes.Buffer
- cFunc := func(method, path string, data interface{}, headers map[string][]string) (io.ReadCloser, int, error) {
- return nil, 0, nil
- }
- cli := NewNetworkCli(&out, &errOut, cFunc)
- err := cli.Cmd("docker", "network", "create")
- if err != nil {
- t.Fatal(err.Error())
- }
- }
- */
|