github.com/chenchun/docker@v1.3.2-0.20150629222414-20467faf132b/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  )
    13  
    14  func TestVolumeRequestError(t *testing.T) {
    15  	mux := http.NewServeMux()
    16  	server := httptest.NewServer(mux)
    17  	defer server.Close()
    18  
    19  	mux.HandleFunc("/VolumeDriver.Create", func(w http.ResponseWriter, r *http.Request) {
    20  		w.Header().Set("Content-Type", "application/vnd.docker.plugins.v1+json")
    21  		fmt.Fprintln(w, `{"Err": "Cannot create volume"}`)
    22  	})
    23  
    24  	mux.HandleFunc("/VolumeDriver.Remove", func(w http.ResponseWriter, r *http.Request) {
    25  		w.Header().Set("Content-Type", "application/vnd.docker.plugins.v1+json")
    26  		fmt.Fprintln(w, `{"Err": "Cannot remove volume"}`)
    27  	})
    28  
    29  	mux.HandleFunc("/VolumeDriver.Mount", func(w http.ResponseWriter, r *http.Request) {
    30  		w.Header().Set("Content-Type", "application/vnd.docker.plugins.v1+json")
    31  		fmt.Fprintln(w, `{"Err": "Cannot mount volume"}`)
    32  	})
    33  
    34  	mux.HandleFunc("/VolumeDriver.Unmount", func(w http.ResponseWriter, r *http.Request) {
    35  		w.Header().Set("Content-Type", "application/vnd.docker.plugins.v1+json")
    36  		fmt.Fprintln(w, `{"Err": "Cannot unmount volume"}`)
    37  	})
    38  
    39  	mux.HandleFunc("/VolumeDriver.Path", func(w http.ResponseWriter, r *http.Request) {
    40  		w.Header().Set("Content-Type", "application/vnd.docker.plugins.v1+json")
    41  		fmt.Fprintln(w, `{"Err": "Unknown volume"}`)
    42  	})
    43  
    44  	u, _ := url.Parse(server.URL)
    45  	client := plugins.NewClient("tcp://" + u.Host)
    46  	driver := volumeDriverProxy{client}
    47  
    48  	err := driver.Create("volume")
    49  	if err == nil {
    50  		t.Fatal("Expected error, was nil")
    51  	}
    52  
    53  	if !strings.Contains(err.Error(), "Cannot create volume") {
    54  		t.Fatalf("Unexpected error: %v\n", err)
    55  	}
    56  
    57  	_, err = driver.Mount("volume")
    58  	if err == nil {
    59  		t.Fatal("Expected error, was nil")
    60  	}
    61  
    62  	if !strings.Contains(err.Error(), "Cannot mount volume") {
    63  		t.Fatalf("Unexpected error: %v\n", err)
    64  	}
    65  
    66  	err = driver.Unmount("volume")
    67  	if err == nil {
    68  		t.Fatal("Expected error, was nil")
    69  	}
    70  
    71  	if !strings.Contains(err.Error(), "Cannot unmount volume") {
    72  		t.Fatalf("Unexpected error: %v\n", err)
    73  	}
    74  
    75  	err = driver.Remove("volume")
    76  	if err == nil {
    77  		t.Fatal("Expected error, was nil")
    78  	}
    79  
    80  	if !strings.Contains(err.Error(), "Cannot remove volume") {
    81  		t.Fatalf("Unexpected error: %v\n", err)
    82  	}
    83  
    84  	_, err = driver.Path("volume")
    85  	if err == nil {
    86  		t.Fatal("Expected error, was nil")
    87  	}
    88  
    89  	if !strings.Contains(err.Error(), "Unknown volume") {
    90  		t.Fatalf("Unexpected error: %v\n", err)
    91  	}
    92  }