github.com/kaisenlinux/docker.io@v0.0.0-20230510090727-ea55db55fac7/engine/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 ) 16 17 func TestNetworkCreateError(t *testing.T) { 18 client := &Client{ 19 client: newMockClient(errorMock(http.StatusInternalServerError, "Server error")), 20 } 21 22 _, err := client.NetworkCreate(context.Background(), "mynetwork", types.NetworkCreate{}) 23 if !errdefs.IsSystem(err) { 24 t.Fatalf("expected a Server Error, got %[1]T: %[1]v", err) 25 } 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 CheckDuplicate: true, 57 Driver: "mydriver", 58 EnableIPv6: true, 59 Internal: true, 60 Options: map[string]string{ 61 "opt-key": "opt-value", 62 }, 63 }) 64 if err != nil { 65 t.Fatal(err) 66 } 67 if networkResponse.ID != "network_id" { 68 t.Fatalf("expected networkResponse.ID to be 'network_id', got %s", networkResponse.ID) 69 } 70 if networkResponse.Warning != "warning" { 71 t.Fatalf("expected networkResponse.Warning to be 'warning', got %s", networkResponse.Warning) 72 } 73 }