github.com/kunnos/engine@v1.13.1/client/container_create_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/container" 13 "golang.org/x/net/context" 14 ) 15 16 func TestContainerCreateError(t *testing.T) { 17 client := &Client{ 18 client: newMockClient(errorMock(http.StatusInternalServerError, "Server error")), 19 } 20 _, err := client.ContainerCreate(context.Background(), nil, nil, nil, "nothing") 21 if err == nil || err.Error() != "Error response from daemon: Server error" { 22 t.Fatalf("expected a Server Error while testing StatusInternalServerError, got %v", err) 23 } 24 25 // 404 doesn't automagitally means an unknown image 26 client = &Client{ 27 client: newMockClient(errorMock(http.StatusNotFound, "Server error")), 28 } 29 _, err = client.ContainerCreate(context.Background(), nil, nil, nil, "nothing") 30 if err == nil || err.Error() != "Error response from daemon: Server error" { 31 t.Fatalf("expected a Server Error while testing StatusNotFound, got %v", err) 32 } 33 } 34 35 func TestContainerCreateImageNotFound(t *testing.T) { 36 client := &Client{ 37 client: newMockClient(errorMock(http.StatusNotFound, "No such image")), 38 } 39 _, err := client.ContainerCreate(context.Background(), &container.Config{Image: "unknown_image"}, nil, nil, "unknown") 40 if err == nil || !IsErrImageNotFound(err) { 41 t.Fatalf("expected an imageNotFound error, got %v", err) 42 } 43 } 44 45 func TestContainerCreateWithName(t *testing.T) { 46 expectedURL := "/containers/create" 47 client := &Client{ 48 client: newMockClient(func(req *http.Request) (*http.Response, error) { 49 if !strings.HasPrefix(req.URL.Path, expectedURL) { 50 return nil, fmt.Errorf("Expected URL '%s', got '%s'", expectedURL, req.URL) 51 } 52 name := req.URL.Query().Get("name") 53 if name != "container_name" { 54 return nil, fmt.Errorf("container name not set in URL query properly. Expected `container_name`, got %s", name) 55 } 56 b, err := json.Marshal(container.ContainerCreateCreatedBody{ 57 ID: "container_id", 58 }) 59 if err != nil { 60 return nil, err 61 } 62 return &http.Response{ 63 StatusCode: http.StatusOK, 64 Body: ioutil.NopCloser(bytes.NewReader(b)), 65 }, nil 66 }), 67 } 68 69 r, err := client.ContainerCreate(context.Background(), nil, nil, nil, "container_name") 70 if err != nil { 71 t.Fatal(err) 72 } 73 if r.ID != "container_id" { 74 t.Fatalf("expected `container_id`, got %s", r.ID) 75 } 76 }