Skip to content

Commit

Permalink
test(service): improved test coverage for services
Browse files Browse the repository at this point in the history
  • Loading branch information
mefellows committed Jun 4, 2016
1 parent c3f11e1 commit 98b7c57
Show file tree
Hide file tree
Showing 6 changed files with 39 additions and 124 deletions.
9 changes: 5 additions & 4 deletions dsl/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down Expand Up @@ -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)
}
Expand All @@ -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)
Expand All @@ -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 {
Expand Down
85 changes: 3 additions & 82 deletions dsl/client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 */ }
//
// }

Expand All @@ -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)
Expand Down Expand Up @@ -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)
}
}
*/
1 change: 0 additions & 1 deletion dsl/interceptor.go

This file was deleted.

1 change: 0 additions & 1 deletion dsl/interceptor_test.go

This file was deleted.

39 changes: 15 additions & 24 deletions dsl/pact.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@ package dsl

import (
"fmt"
"log"
"net/rpc"

"github.com/mefellows/pact-go/daemon"
)
Expand Down Expand Up @@ -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
}

Expand Down
28 changes: 16 additions & 12 deletions dsl/pact_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ package dsl
import (
"errors"
"testing"

"github.com/mefellows/pact-go/utils"
)

func simplePact() (pact *PactMock) {
Expand All @@ -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?

//

}

//

Expand Down

0 comments on commit 98b7c57

Please sign in to comment.