github.com/codemac/docker@v1.2.1-0.20150518222241-6a18412d5b9c/pkg/plugins/client_test.go (about) 1 package plugins 2 3 import ( 4 "io" 5 "net/http" 6 "net/http/httptest" 7 "reflect" 8 "testing" 9 ) 10 11 var ( 12 mux *http.ServeMux 13 server *httptest.Server 14 ) 15 16 func setupRemotePluginServer() string { 17 mux = http.NewServeMux() 18 server = httptest.NewServer(mux) 19 return server.URL 20 } 21 22 func teardownRemotePluginServer() { 23 if server != nil { 24 server.Close() 25 } 26 } 27 28 func TestFailedConnection(t *testing.T) { 29 c := NewClient("tcp://127.0.0.1:1") 30 err := c.Call("Service.Method", nil, nil) 31 if err == nil { 32 t.Fatal("Unexpected successful connection") 33 } 34 } 35 36 func TestEchoInputOutput(t *testing.T) { 37 addr := setupRemotePluginServer() 38 defer teardownRemotePluginServer() 39 40 m := Manifest{[]string{"VolumeDriver", "NetworkDriver"}} 41 42 mux.HandleFunc("/Test.Echo", func(w http.ResponseWriter, r *http.Request) { 43 if r.Method != "POST" { 44 t.Fatalf("Expected POST, got %s\n", r.Method) 45 } 46 47 header := w.Header() 48 header.Set("Content-Type", versionMimetype) 49 50 io.Copy(w, r.Body) 51 }) 52 53 c := NewClient(addr) 54 var output Manifest 55 err := c.Call("Test.Echo", m, &output) 56 if err != nil { 57 t.Fatal(err) 58 } 59 60 if !reflect.DeepEqual(output, m) { 61 t.Fatalf("Expected %v, was %v\n", m, output) 62 } 63 }