github.com/ttys3/engine@v17.12.1-ce-rc2+incompatible/client/network_inspect_test.go (about) 1 package client 2 3 import ( 4 "bytes" 5 "encoding/json" 6 "fmt" 7 "io/ioutil" 8 "net/http" 9 "strings" 10 "testing" 11 12 "github.com/docker/docker/api/types" 13 "github.com/docker/docker/api/types/network" 14 "github.com/stretchr/testify/assert" 15 "golang.org/x/net/context" 16 ) 17 18 func TestNetworkInspectError(t *testing.T) { 19 client := &Client{ 20 client: newMockClient(errorMock(http.StatusInternalServerError, "Server error")), 21 } 22 23 _, err := client.NetworkInspect(context.Background(), "nothing", types.NetworkInspectOptions{}) 24 assert.EqualError(t, err, "Error response from daemon: Server error") 25 } 26 27 func TestNetworkInspectNotFoundError(t *testing.T) { 28 client := &Client{ 29 client: newMockClient(errorMock(http.StatusNotFound, "missing")), 30 } 31 32 _, err := client.NetworkInspect(context.Background(), "unknown", types.NetworkInspectOptions{}) 33 assert.EqualError(t, err, "Error: No such network: unknown") 34 assert.True(t, IsErrNotFound(err)) 35 } 36 37 func TestNetworkInspect(t *testing.T) { 38 expectedURL := "/networks/network_id" 39 client := &Client{ 40 client: newMockClient(func(req *http.Request) (*http.Response, error) { 41 if !strings.HasPrefix(req.URL.Path, expectedURL) { 42 return nil, fmt.Errorf("Expected URL '%s', got '%s'", expectedURL, req.URL) 43 } 44 if req.Method != "GET" { 45 return nil, fmt.Errorf("expected GET method, got %s", req.Method) 46 } 47 48 var ( 49 content []byte 50 err error 51 ) 52 if strings.Contains(req.URL.RawQuery, "scope=global") { 53 return &http.Response{ 54 StatusCode: http.StatusNotFound, 55 Body: ioutil.NopCloser(bytes.NewReader(content)), 56 }, nil 57 } 58 59 if strings.Contains(req.URL.RawQuery, "verbose=true") { 60 s := map[string]network.ServiceInfo{ 61 "web": {}, 62 } 63 content, err = json.Marshal(types.NetworkResource{ 64 Name: "mynetwork", 65 Services: s, 66 }) 67 } else { 68 content, err = json.Marshal(types.NetworkResource{ 69 Name: "mynetwork", 70 }) 71 } 72 if err != nil { 73 return nil, err 74 } 75 return &http.Response{ 76 StatusCode: http.StatusOK, 77 Body: ioutil.NopCloser(bytes.NewReader(content)), 78 }, nil 79 }), 80 } 81 82 r, err := client.NetworkInspect(context.Background(), "network_id", types.NetworkInspectOptions{}) 83 if err != nil { 84 t.Fatal(err) 85 } 86 if r.Name != "mynetwork" { 87 t.Fatalf("expected `mynetwork`, got %s", r.Name) 88 } 89 90 r, err = client.NetworkInspect(context.Background(), "network_id", types.NetworkInspectOptions{Verbose: true}) 91 if err != nil { 92 t.Fatal(err) 93 } 94 if r.Name != "mynetwork" { 95 t.Fatalf("expected `mynetwork`, got %s", r.Name) 96 } 97 _, ok := r.Services["web"] 98 if !ok { 99 t.Fatalf("expected service `web` missing in the verbose output") 100 } 101 102 _, err = client.NetworkInspect(context.Background(), "network_id", types.NetworkInspectOptions{Scope: "global"}) 103 assert.EqualError(t, err, "Error: No such network: network_id") 104 }