diff --git a/integration-cli/docker_api_images_test.go b/integration-cli/docker_api_images_test.go index ee403a1880..083d63204f 100644 --- a/integration-cli/docker_api_images_test.go +++ b/integration-cli/docker_api_images_test.go @@ -3,6 +3,7 @@ package main import ( "encoding/json" "net/url" + "strings" "testing" "github.com/docker/docker/api/types" @@ -67,3 +68,33 @@ func TestApiImagesFilter(t *testing.T) { logDone("images - filter param is applied") } + +func TestApiImagesSaveAndLoad(t *testing.T) { + out, err := buildImage("saveandload", "FROM hello-world\nENV FOO bar", false) + if err != nil { + t.Fatal(err) + } + id := strings.TrimSpace(out) + defer deleteImages("saveandload") + + _, body, err := sockRequestRaw("GET", "/images/"+id+"/get", nil, "") + if err != nil { + t.Fatal(err) + } + defer body.Close() + + dockerCmd(t, "rmi", id) + + _, loadBody, err := sockRequestRaw("POST", "/images/load", body, "application/x-tar") + if err != nil { + t.Fatal(err) + } + defer loadBody.Close() + + out, _, _ = dockerCmd(t, "inspect", "--format='{{ .Id }}'", id) + if strings.TrimSpace(out) != id { + t.Fatal("load did not work properly") + } + + logDone("images API - save and load") +} diff --git a/integration/api_test.go b/integration/api_test.go index 3a795f94f9..4808aa02de 100644 --- a/integration/api_test.go +++ b/integration/api_test.go @@ -23,67 +23,6 @@ import ( "github.com/docker/docker/vendor/src/code.google.com/p/go/src/pkg/archive/tar" ) -func TestSaveImageAndThenLoad(t *testing.T) { - eng := NewTestEngine(t) - defer mkDaemonFromEngine(eng, t).Nuke() - - // save image - r := httptest.NewRecorder() - req, err := http.NewRequest("GET", "/images/"+unitTestImageID+"/get", nil) - if err != nil { - t.Fatal(err) - } - server.ServeRequest(eng, api.APIVERSION, r, req) - if r.Code != http.StatusOK { - t.Fatalf("%d OK expected, received %d\n", http.StatusOK, r.Code) - } - tarball := r.Body - - // delete the image - r = httptest.NewRecorder() - req, err = http.NewRequest("DELETE", "/images/"+unitTestImageID, nil) - if err != nil { - t.Fatal(err) - } - server.ServeRequest(eng, api.APIVERSION, r, req) - if r.Code != http.StatusOK { - t.Fatalf("%d OK expected, received %d\n", http.StatusOK, r.Code) - } - - // make sure there is no image - r = httptest.NewRecorder() - req, err = http.NewRequest("GET", "/images/"+unitTestImageID+"/get", nil) - if err != nil { - t.Fatal(err) - } - server.ServeRequest(eng, api.APIVERSION, r, req) - if r.Code != http.StatusNotFound { - t.Fatalf("%d NotFound expected, received %d\n", http.StatusNotFound, r.Code) - } - - // load the image - r = httptest.NewRecorder() - req, err = http.NewRequest("POST", "/images/load", tarball) - if err != nil { - t.Fatal(err) - } - server.ServeRequest(eng, api.APIVERSION, r, req) - if r.Code != http.StatusOK { - t.Fatalf("%d OK expected, received %d\n", http.StatusOK, r.Code) - } - - // finally make sure the image is there - r = httptest.NewRecorder() - req, err = http.NewRequest("GET", "/images/"+unitTestImageID+"/get", nil) - if err != nil { - t.Fatal(err) - } - server.ServeRequest(eng, api.APIVERSION, r, req) - if r.Code != http.StatusOK { - t.Fatalf("%d OK expected, received %d\n", http.StatusOK, r.Code) - } -} - func TestGetContainersTop(t *testing.T) { eng := NewTestEngine(t) defer mkDaemonFromEngine(eng, t).Nuke()