diff --git a/dsl/client.go b/dsl/client.go index 8d0b9ea58..707a749d8 100644 --- a/dsl/client.go +++ b/dsl/client.go @@ -17,7 +17,8 @@ type Client interface { // PactClient is the default implementation of the Client interface. type PactClient struct { - port int + // Port the daemon is running on + Port int } func getHTTPClient(port int) (*rpc.Client, error) { @@ -47,7 +48,7 @@ func waitForPort(port int) { // StartServer starts a remote Pact Mock Server. func (p *PactClient) StartServer() *daemon.PactMockServer { var res daemon.PactMockServer - client, err := getHTTPClient(p.port) + client, err := getHTTPClient(p.Port) if err != nil { log.Fatal("rpc error:", err) } @@ -61,7 +62,7 @@ func (p *PactClient) StartServer() *daemon.PactMockServer { // ListServers starts a remote Pact Mock Server. func (p *PactClient) ListServers() *daemon.PactListResponse { var res daemon.PactListResponse - client, err := getHTTPClient(p.port) + client, err := getHTTPClient(p.Port) err = client.Call("Daemon.ListServers", daemon.PactMockServer{}, &res) if err != nil { log.Fatal("rpc error:", err) @@ -71,7 +72,7 @@ func (p *PactClient) ListServers() *daemon.PactListResponse { // StopServer stops a remote Pact Mock Server. func (p *PactClient) StopServer(server *daemon.PactMockServer) *daemon.PactMockServer { - client, err := getHTTPClient(p.port) + client, err := getHTTPClient(p.Port) var res daemon.PactMockServer err = client.Call("Daemon.StopServer", server, &res) if err != nil { diff --git a/dsl/client_test.go b/dsl/client_test.go index 4a6761da2..5972a7183 100644 --- a/dsl/client_test.go +++ b/dsl/client_test.go @@ -77,8 +77,8 @@ func createDaemon(port int) *daemon.Daemon { return d } -// func TestRPCClient_ListFail(t *testing.T) { -// client := &PactClient{ /* don't supply port */ } +// func TestClient_Fail(t *testing.T) { +// client := NewPactClient{ /* don't supply port */ } // // } @@ -88,7 +88,7 @@ func TestRPCClient_List(t *testing.T) { createDaemon(port) waitForPortInTest(port, t) defer waitForDaemonToShutdown(port, t) - client := &PactClient{port: port} + client := &PactClient{Port: port} server := client.StartServer() waitForPortInTest(server.Port, t) @@ -132,82 +132,3 @@ func TestRPCClient_StartServer(t *testing.T) { <-time.After(10 * time.Second) waitForDaemonToShutdown(port, t) } - -/* -// Integration style test: Can a client hit each endpoint? -func TestRPCClient_StopServer(t *testing.T) { - port, _ := utils.GetFreePort() - // defer waitForDaemonToShutdown(port, daemon, t) - d := createDaemon(port) - waitForPortInTest(port, t) - - var cmd *exec.Cmd - for _, s := range manager.List() { - cmd = s - } - request := daemon.PactMockServer{ - Pid: cmd.Process.Pid, - } - - client, err := rpc.DialHTTP("tcp", fmt.Sprintf(":%d", port)) - var res *daemon.PactMockServer - err = client.Call("Daemon.StopServer", request, &res) - if err != nil { - log.Fatal("rpc error:", err) - } - - if res.Pid != cmd.Process.Pid { - t.Fatalf("Expected PID to match request %d but got: %d", cmd.Process.Pid, res.Pid) - } - - if res.Port != 0 { - t.Fatalf("Expected non-zero port but got: %d", res.Port) - } -} - -// Integration style test: Can a client hit each endpoint? -func TestRPCClient_Verify(t *testing.T) { - port, _ := utils.GetFreePort() - d := createDaemon(port) - // defer waitForDaemonToShutdown(port, daemon, t) - waitForPortInTest(port, t) - - client, err := rpc.DialHTTP("tcp", fmt.Sprintf(":%d", port)) - var res daemon.PactResponse - err = client.Call("Daemon.Verify", &daemon.VerifyRequest{}, &res) - if err != nil { - log.Fatal("rpc error:", err) - } - - if res.ExitCode != 0 { - t.Fatalf("Expected exit code to be 0, got: %d", res.ExitCode) - } - if res.Message != "" { - t.Fatalf("Expected message to be blank but got: %s", res.Message) - } -} - -// Integration style test: Can a client hit each endpoint? -func TestRPCClient_Publish(t *testing.T) { - port, _ := utils.GetFreePort() - d := createDaemon(port) - // defer waitForDaemonToShutdown(port, daemon, t) - go d.StartDaemon(port) - waitForPortInTest(port, t) - - client, err := rpc.DialHTTP("tcp", fmt.Sprintf(":%d", port)) - var res PactResponse - err = client.Call("Daemon.Publish", &PublishRequest{}, &res) - if err != nil { - log.Fatal("rpc error:", err) - } - - if res.ExitCode != 0 { - t.Fatalf("Expected exit code to be 0, got: %d", res.ExitCode) - } - - if res.Message != "" { - t.Fatalf("Expected message to be blank but got: %s", res.Message) - } -} -*/ diff --git a/dsl/interceptor.go b/dsl/interceptor.go deleted file mode 100644 index f17392d4a..000000000 --- a/dsl/interceptor.go +++ /dev/null @@ -1 +0,0 @@ -package dsl diff --git a/dsl/interceptor_test.go b/dsl/interceptor_test.go deleted file mode 100644 index f17392d4a..000000000 --- a/dsl/interceptor_test.go +++ /dev/null @@ -1 +0,0 @@ -package dsl diff --git a/dsl/pact.go b/dsl/pact.go index c7b1a8d5d..124db5f8d 100644 --- a/dsl/pact.go +++ b/dsl/pact.go @@ -2,8 +2,6 @@ package dsl import ( "fmt" - "log" - "net/rpc" "github.com/mefellows/pact-go/daemon" ) @@ -31,39 +29,32 @@ type Pact interface { // PactConsumer is the main implementation of the Pact interface. type PactConsumer struct { + // Current server for the consumer server *daemon.PactMockServer -} -// Before starts the Pact Mock Server before each test suite. + // Stores the current state + State []string -// TODO: Turn these calls into a client library not exposing the RPC junk. -// Move the daemon stuff into another package? + // Port the Pact Daemon is running on + Port int + + // Pact RPC Client + pactClient *PactClient +} +// Before starts the Pact Mock Server before each test suite. func (p *PactConsumer) Before() Pact { - client, err := rpc.DialHTTP("tcp", fmt.Sprintf(":%d", 6666)) - var res daemon.PactMockServer - err = client.Call("Daemon.StartServer", daemon.PactMockServer{}, &res) - if err != nil { - log.Fatal("rpc error:", err) - } - - log.Println("Have pact mock:", &res) - p.server = &res + client := &PactClient{Port: p.Port} + p.pactClient = client + p.server = client.StartServer() + return p } // After stops the Pact Mock Server after each test suite. func (p *PactConsumer) After() Pact { - client, err := rpc.DialHTTP("tcp", fmt.Sprintf(":%d", 6666)) - var res daemon.PactMockServer - - fmt.Println("CLIENT Stopping:", p.server.Pid) - err = client.Call("Daemon.StopServer", p.server, &res) - if err != nil { - log.Println("ERror!!", err) - } + p.server = p.pactClient.StopServer(p.server) - log.Println("Have pact mock stop response:", res) return p } diff --git a/dsl/pact_test.go b/dsl/pact_test.go index 1ee506a91..f3d8997a7 100644 --- a/dsl/pact_test.go +++ b/dsl/pact_test.go @@ -3,6 +3,8 @@ package dsl import ( "errors" "testing" + + "github.com/mefellows/pact-go/utils" ) func simplePact() (pact *PactMock) { @@ -14,18 +16,20 @@ func simplePact() (pact *PactMock) { return } -// -// func TestPact_Before(t *testing.T) { -// pact := &PactConsumer{} -// pact.Before() -// <-time.After(1 * time.Second) -// pact.After() -// -// // Can I hit stuff? -// -// // -// -// } +func TestPact_Before(t *testing.T) { + port, _ := utils.GetFreePort() + createDaemon(port) + + // pact := &PactConsumer{Port: port} + // pact.Before() + // <-time.After(1 * time.Second) + // pact.After() + + // Can I hit stuff? + + // + +} //