github.com/rish1988/moby@v25.0.2+incompatible/client/network_create_test.go (about) 1 package client // import "github.com/docker/docker/client" 2 3 import ( 4 "bytes" 5 "context" 6 "encoding/json" 7 "fmt" 8 "io" 9 "net/http" 10 "strings" 11 "testing" 12 13 "github.com/docker/docker/api/types" 14 "github.com/docker/docker/errdefs" 15 "gotest.tools/v3/assert" 16 is "gotest.tools/v3/assert/cmp" 17 ) 18 19 func TestNetworkCreateError(t *testing.T) { 20 client := &Client{ 21 client: newMockClient(errorMock(http.StatusInternalServerError, "Server error")), 22 } 23 24 _, err := client.NetworkCreate(context.Background(), "mynetwork", types.NetworkCreate{}) 25 assert.Check(t, is.ErrorType(err, errdefs.IsSystem)) 26 } 27 28 func TestNetworkCreate(t *testing.T) { 29 expectedURL := "/networks/create" 30 31 client := &Client{ 32 client: newMockClient(func(req *http.Request) (*http.Response, error) { 33 if !strings.HasPrefix(req.URL.Path, expectedURL) { 34 return nil, fmt.Errorf("Expected URL '%s', got '%s'", expectedURL, req.URL) 35 } 36 37 if req.Method != http.MethodPost { 38 return nil, fmt.Errorf("expected POST method, got %s", req.Method) 39 } 40 41 content, err := json.Marshal(types.NetworkCreateResponse{ 42 ID: "network_id", 43 Warning: "warning", 44 }) 45 if err != nil { 46 return nil, err 47 } 48 return &http.Response{ 49 StatusCode: http.StatusOK, 50 Body: io.NopCloser(bytes.NewReader(content)), 51 }, nil 52 }), 53 } 54 55 networkResponse, err := client.NetworkCreate(context.Background(), "mynetwork", types.NetworkCreate{ 56 Driver: "mydriver", 57 EnableIPv6: true, 58 Internal: true, 59 Options: map[string]string{ 60 "opt-key": "opt-value", 61 }, 62 }) 63 if err != nil { 64 t.Fatal(err) 65 } 66 if networkResponse.ID != "network_id" { 67 t.Fatalf("expected networkResponse.ID to be 'network_id', got %s", networkResponse.ID) 68 } 69 if networkResponse.Warning != "warning" { 70 t.Fatalf("expected networkResponse.Warning to be 'warning', got %s", networkResponse.Warning) 71 } 72 }