From e1efff4b34d84438d3ce1524fe9242e7e23a6007 Mon Sep 17 00:00:00 2001 From: Matt Butcher Date: Fri, 25 Mar 2016 16:46:32 -0600 Subject: [PATCH 1/2] fix(manager): add test for listDeploymentsRequestHandler --- cmd/manager/deployments_test.go | 28 ++++++++++++++++++++++++++++ cmd/manager/testutil.go | 18 +++++++++++++++--- 2 files changed, 43 insertions(+), 3 deletions(-) diff --git a/cmd/manager/deployments_test.go b/cmd/manager/deployments_test.go index 74bfb5cc3..43d57787b 100644 --- a/cmd/manager/deployments_test.go +++ b/cmd/manager/deployments_test.go @@ -76,3 +76,31 @@ func TestCreateDeployments(t *testing.T) { t.Errorf("Expected status %d, got %d", http.StatusCreated, res.StatusCode) } } + +func TestListDeployments(t *testing.T) { + c := stubContext() + s := httpHarness(c, "GET /deployments", listDeploymentsHandlerFunc) + defer s.Close() + + man := c.Manager.(*mockManager) + man.deployments = []*common.Deployment{ + &common.Deployment{Name: "one", State: &common.DeploymentState{Status: common.CreatedStatus}}, + &common.Deployment{Name: "two", State: &common.DeploymentState{Status: common.DeployedStatus}}, + } + + res, err := http.Get(s.URL + "/deployments") + if err != nil { + t.Errorf("Failed GET: %s", err) + } else if res.StatusCode != http.StatusOK { + t.Errorf("Unexpected status code: %d", res.StatusCode) + } + + var out []string + if err := json.NewDecoder(res.Body).Decode(&out); err != nil { + t.Errorf("Failed to parse results: %s", err) + return + } + if len(out) != 2 { + t.Errorf("Expected 2 names, got %d", len(out)) + } +} diff --git a/cmd/manager/testutil.go b/cmd/manager/testutil.go index 8d8923b4b..86db0e4f3 100644 --- a/cmd/manager/testutil.go +++ b/cmd/manager/testutil.go @@ -47,16 +47,28 @@ func httpHarness(c *router.Context, route string, fn router.HandlerFunc) *httpte func stubContext() *router.Context { return &router.Context{ Config: &router.Config{}, - Manager: &mockManager{}, + Manager: newMockManager(), CredentialProvider: repo.NewInmemCredentialProvider(), Encoder: httputil.DefaultEncoder, } } -type mockManager struct{} +func newMockManager() *mockManager { + return &mockManager{ + deployments: []*common.Deployment{}, + } +} + +type mockManager struct { + deployments []*common.Deployment +} func (m *mockManager) ListDeployments() ([]common.Deployment, error) { - return []common.Deployment{}, nil + d := make([]common.Deployment, len(m.deployments)) + for i, dd := range m.deployments { + d[i] = *dd + } + return d, nil } func (m *mockManager) GetDeployment(name string) (*common.Deployment, error) { From dde036deceabd7afb7e702e804525b4e4024838f Mon Sep 17 00:00:00 2001 From: Matt Butcher Date: Fri, 25 Mar 2016 16:59:21 -0600 Subject: [PATCH 2/2] fix(manager): simplify code --- cmd/manager/deployments_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmd/manager/deployments_test.go b/cmd/manager/deployments_test.go index 43d57787b..4243a39f0 100644 --- a/cmd/manager/deployments_test.go +++ b/cmd/manager/deployments_test.go @@ -84,8 +84,8 @@ func TestListDeployments(t *testing.T) { man := c.Manager.(*mockManager) man.deployments = []*common.Deployment{ - &common.Deployment{Name: "one", State: &common.DeploymentState{Status: common.CreatedStatus}}, - &common.Deployment{Name: "two", State: &common.DeploymentState{Status: common.DeployedStatus}}, + {Name: "one", State: &common.DeploymentState{Status: common.CreatedStatus}}, + {Name: "two", State: &common.DeploymentState{Status: common.DeployedStatus}}, } res, err := http.Get(s.URL + "/deployments")