github.com/Shopify/docker@v1.13.1/volume/drivers/proxy_test.go (about) 1 package volumedrivers 2 3 import ( 4 "fmt" 5 "net/http" 6 "net/http/httptest" 7 "net/url" 8 "strings" 9 "testing" 10 11 "github.com/docker/docker/pkg/plugins" 12 "github.com/docker/go-connections/tlsconfig" 13 ) 14 15 func TestVolumeRequestError(t *testing.T) { 16 mux := http.NewServeMux() 17 server := httptest.NewServer(mux) 18 defer server.Close() 19 20 mux.HandleFunc("/VolumeDriver.Create", func(w http.ResponseWriter, r *http.Request) { 21 w.Header().Set("Content-Type", "application/vnd.docker.plugins.v1+json") 22 fmt.Fprintln(w, `{"Err": "Cannot create volume"}`) 23 }) 24 25 mux.HandleFunc("/VolumeDriver.Remove", func(w http.ResponseWriter, r *http.Request) { 26 w.Header().Set("Content-Type", "application/vnd.docker.plugins.v1+json") 27 fmt.Fprintln(w, `{"Err": "Cannot remove volume"}`) 28 }) 29 30 mux.HandleFunc("/VolumeDriver.Mount", func(w http.ResponseWriter, r *http.Request) { 31 w.Header().Set("Content-Type", "application/vnd.docker.plugins.v1+json") 32 fmt.Fprintln(w, `{"Err": "Cannot mount volume"}`) 33 }) 34 35 mux.HandleFunc("/VolumeDriver.Unmount", func(w http.ResponseWriter, r *http.Request) { 36 w.Header().Set("Content-Type", "application/vnd.docker.plugins.v1+json") 37 fmt.Fprintln(w, `{"Err": "Cannot unmount volume"}`) 38 }) 39 40 mux.HandleFunc("/VolumeDriver.Path", func(w http.ResponseWriter, r *http.Request) { 41 w.Header().Set("Content-Type", "application/vnd.docker.plugins.v1+json") 42 fmt.Fprintln(w, `{"Err": "Unknown volume"}`) 43 }) 44 45 mux.HandleFunc("/VolumeDriver.List", func(w http.ResponseWriter, r *http.Request) { 46 w.Header().Set("Content-Type", "application/vnd.docker.plugins.v1+json") 47 fmt.Fprintln(w, `{"Err": "Cannot list volumes"}`) 48 }) 49 50 mux.HandleFunc("/VolumeDriver.Get", func(w http.ResponseWriter, r *http.Request) { 51 w.Header().Set("Content-Type", "application/vnd.docker.plugins.v1+json") 52 fmt.Fprintln(w, `{"Err": "Cannot get volume"}`) 53 }) 54 55 mux.HandleFunc("/VolumeDriver.Capabilities", func(w http.ResponseWriter, r *http.Request) { 56 w.Header().Set("Content-Type", "application/vnd.docker.plugins.v1+json") 57 http.Error(w, "error", 500) 58 }) 59 60 u, _ := url.Parse(server.URL) 61 client, err := plugins.NewClient("tcp://"+u.Host, &tlsconfig.Options{InsecureSkipVerify: true}) 62 if err != nil { 63 t.Fatal(err) 64 } 65 66 driver := volumeDriverProxy{client} 67 68 if err = driver.Create("volume", nil); err == nil { 69 t.Fatal("Expected error, was nil") 70 } 71 72 if !strings.Contains(err.Error(), "Cannot create volume") { 73 t.Fatalf("Unexpected error: %v\n", err) 74 } 75 76 _, err = driver.Mount("volume", "123") 77 if err == nil { 78 t.Fatal("Expected error, was nil") 79 } 80 81 if !strings.Contains(err.Error(), "Cannot mount volume") { 82 t.Fatalf("Unexpected error: %v\n", err) 83 } 84 85 err = driver.Unmount("volume", "123") 86 if err == nil { 87 t.Fatal("Expected error, was nil") 88 } 89 90 if !strings.Contains(err.Error(), "Cannot unmount volume") { 91 t.Fatalf("Unexpected error: %v\n", err) 92 } 93 94 err = driver.Remove("volume") 95 if err == nil { 96 t.Fatal("Expected error, was nil") 97 } 98 99 if !strings.Contains(err.Error(), "Cannot remove volume") { 100 t.Fatalf("Unexpected error: %v\n", err) 101 } 102 103 _, err = driver.Path("volume") 104 if err == nil { 105 t.Fatal("Expected error, was nil") 106 } 107 108 if !strings.Contains(err.Error(), "Unknown volume") { 109 t.Fatalf("Unexpected error: %v\n", err) 110 } 111 112 _, err = driver.List() 113 if err == nil { 114 t.Fatal("Expected error, was nil") 115 } 116 if !strings.Contains(err.Error(), "Cannot list volumes") { 117 t.Fatalf("Unexpected error: %v\n", err) 118 } 119 120 _, err = driver.Get("volume") 121 if err == nil { 122 t.Fatal("Expected error, was nil") 123 } 124 if !strings.Contains(err.Error(), "Cannot get volume") { 125 t.Fatalf("Unexpected error: %v\n", err) 126 } 127 128 _, err = driver.Capabilities() 129 if err == nil { 130 t.Fatal(err) 131 } 132 }