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  }