diff --git a/cmd/manager/deployments_test.go b/cmd/manager/deployments_test.go index 74bfb5cc3..4243a39f0 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{ + {Name: "one", State: &common.DeploymentState{Status: common.CreatedStatus}}, + {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) {