github.com/45cali/docker@v1.11.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  	u, _ := url.Parse(server.URL)
    56  	client, err := plugins.NewClient("tcp://"+u.Host, tlsconfig.Options{InsecureSkipVerify: true})
    57  	if err != nil {
    58  		t.Fatal(err)
    59  	}
    60  
    61  	driver := volumeDriverProxy{client}
    62  
    63  	if err = driver.Create("volume", nil); err == nil {
    64  		t.Fatal("Expected error, was nil")
    65  	}
    66  
    67  	if !strings.Contains(err.Error(), "Cannot create volume") {
    68  		t.Fatalf("Unexpected error: %v\n", err)
    69  	}
    70  
    71  	_, err = driver.Mount("volume")
    72  	if err == nil {
    73  		t.Fatal("Expected error, was nil")
    74  	}
    75  
    76  	if !strings.Contains(err.Error(), "Cannot mount volume") {
    77  		t.Fatalf("Unexpected error: %v\n", err)
    78  	}
    79  
    80  	err = driver.Unmount("volume")
    81  	if err == nil {
    82  		t.Fatal("Expected error, was nil")
    83  	}
    84  
    85  	if !strings.Contains(err.Error(), "Cannot unmount volume") {
    86  		t.Fatalf("Unexpected error: %v\n", err)
    87  	}
    88  
    89  	err = driver.Remove("volume")
    90  	if err == nil {
    91  		t.Fatal("Expected error, was nil")
    92  	}
    93  
    94  	if !strings.Contains(err.Error(), "Cannot remove volume") {
    95  		t.Fatalf("Unexpected error: %v\n", err)
    96  	}
    97  
    98  	_, err = driver.Path("volume")
    99  	if err == nil {
   100  		t.Fatal("Expected error, was nil")
   101  	}
   102  
   103  	if !strings.Contains(err.Error(), "Unknown volume") {
   104  		t.Fatalf("Unexpected error: %v\n", err)
   105  	}
   106  
   107  	_, err = driver.List()
   108  	if err == nil {
   109  		t.Fatal("Expected error, was nil")
   110  	}
   111  	if !strings.Contains(err.Error(), "Cannot list volumes") {
   112  		t.Fatalf("Unexpected error: %v\n", err)
   113  	}
   114  
   115  	_, err = driver.Get("volume")
   116  	if err == nil {
   117  		t.Fatal("Expected error, was nil")
   118  	}
   119  	if !strings.Contains(err.Error(), "Cannot get volume") {
   120  		t.Fatalf("Unexpected error: %v\n", err)
   121  	}
   122  }