github.com/jcarley/cli@v0.0.0-20180201210820-966d90434c30/commands/images/pull_test.go (about) 1 package images 2 3 import ( 4 "fmt" 5 "net/http" 6 "strings" 7 "testing" 8 9 "github.com/daticahealth/cli/commands/environments" 10 "github.com/daticahealth/cli/models" 11 "github.com/daticahealth/cli/test" 12 ) 13 14 func pullSetup(t *testing.T, mux *http.ServeMux, baseURL string) (string, string) { 15 notary := baseURL 16 registry := strings.TrimPrefix(baseURL, "http://") 17 test.AddRegistry("default", registry) 18 test.AddNotary("default", notary) 19 20 mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { 21 test.AssertEquals(t, r.Method, "GET") 22 }) 23 24 mux.HandleFunc("/environments/"+test.EnvID, 25 func(w http.ResponseWriter, r *http.Request) { 26 test.AssertEquals(t, r.Method, "GET") 27 fmt.Fprint(w, fmt.Sprintf(`{"id":"%s","name":"%s","namespace":"%s","organizationId":"%s","docker_registry_enabled": true}`, test.EnvID, test.EnvName, test.Namespace, test.OrgID)) 28 }, 29 ) 30 31 return registry, notary 32 } 33 34 func TestPullImage(t *testing.T) { 35 mux, server, baseURL := test.Setup() 36 defer test.Teardown(server) 37 settings := test.GetSettings(baseURL.String()) 38 registry, notary := pullSetup(t, mux, baseURL.String()) 39 user := models.User{} 40 fakeImages := &test.FakeImages{Settings: settings} 41 imageTag := fmt.Sprintf("%s:%s", test.Image, test.Tag) 42 fullImageName := strings.Join([]string{registry, test.Namespace, imageTag}, "/") 43 test.SetRemoteImages([]string{fullImageName}) 44 45 err := cmdImagePull(test.EnvID, imageTag, &user, environments.New(settings), fakeImages) 46 47 cleanupErr := test.DeleteLocalRepo(test.Namespace, test.Image, registry, notary) 48 49 if err != nil { 50 t.Fatalf("Unexpected error while pushing image: %v", err) 51 } else if cleanupErr != nil { 52 t.Errorf("Unexpected error while cleaning up trust repo (test succeeded otherwise): %v", cleanupErr) 53 } 54 } 55 56 func TestPullBadImage(t *testing.T) { 57 mux, server, baseURL := test.Setup() 58 defer test.Teardown(server) 59 settings := test.GetSettings(baseURL.String()) 60 pullSetup(t, mux, baseURL.String()) 61 user := models.User{} 62 fakeImages := &test.FakeImages{Settings: settings} 63 imageTag := fmt.Sprintf("%s:%s", test.Image, test.Tag) 64 65 err := cmdImagePull(test.EnvID, imageTag, &user, environments.New(settings), fakeImages) 66 67 if err == nil { 68 t.Fatalf("Expected error: %v", test.ImageDoesNotExist) 69 } else if err.Error() != test.ImageDoesNotExist { 70 t.Fatalf("Expected error: %v\nGot error: %v", test.ImageDoesNotExist, err) 71 } 72 }