Commit fccfcc8e authored by Adam Reese's avatar Adam Reese

Merge pull request #13 from adamreese/dm-tests

test(dm): add unit tests for dm client
parents 692a27bb fd7e9b96
...@@ -47,7 +47,7 @@ quicktest: ...@@ -47,7 +47,7 @@ quicktest:
$(PATH_WITH_HELM) go test -short $(addprefix ./,$(GO_PACKAGES)) $(PATH_WITH_HELM) go test -short $(addprefix ./,$(GO_PACKAGES))
test: test-style test: test-style
$(PATH_WITH_HELM) go test -v $(addprefix ./,$(GO_PACKAGES)) $(PATH_WITH_HELM) go test -v -cover $(addprefix ./,$(GO_PACKAGES))
test-style: test-style:
@if [ $(shell gofmt -e -l -s *.go $(GO_PACKAGES)) ]; then \ @if [ $(shell gofmt -e -l -s *.go $(GO_PACKAGES)) ]; then \
......
...@@ -8,6 +8,7 @@ import ( ...@@ -8,6 +8,7 @@ import (
) )
var version = "0.0.1" var version = "0.0.1"
var isDebugging bool
func main() { func main() {
app := cli.NewApp() app := cli.NewApp()
...@@ -24,6 +25,15 @@ func main() { ...@@ -24,6 +25,15 @@ func main() {
EnvVar: "HELM_HOST", EnvVar: "HELM_HOST",
Value: "https://localhost:8181/FIXME_NOT_RIGHT", Value: "https://localhost:8181/FIXME_NOT_RIGHT",
}, },
cli.BoolFlag{
Name: "debug",
Usage: "Enable verbose debugging output",
},
}
app.Before = func(ctx *cli.Context) error {
isDebugging = ctx.Bool("debug")
return nil
} }
app.Run(os.Args) app.Run(os.Args)
......
package main package main
import ( import (
"fmt"
"os" "os"
"github.com/codegangsta/cli" "github.com/codegangsta/cli"
...@@ -22,6 +23,11 @@ func listCmd() cli.Command { ...@@ -22,6 +23,11 @@ func listCmd() cli.Command {
} }
func list(host string) error { func list(host string) error {
client := dm.NewClient(host).SetDebug(true) client := dm.NewClient(host).SetDebug(isDebugging)
return client.ListDeployments() list, err := client.ListDeployments()
if err != nil {
return err
}
fmt.Println(list)
return nil
} }
...@@ -11,8 +11,6 @@ import ( ...@@ -11,8 +11,6 @@ import (
"path/filepath" "path/filepath"
"strings" "strings"
"time" "time"
"github.com/ghodss/yaml"
) )
// The default HTTP timeout // The default HTTP timeout
...@@ -94,15 +92,6 @@ func (c *Client) CallService(path, method, action string, dest interface{}, read ...@@ -94,15 +92,6 @@ func (c *Client) CallService(path, method, action string, dest interface{}, read
if err := json.Unmarshal([]byte(resp), dest); err != nil { if err := json.Unmarshal([]byte(resp), dest); err != nil {
return fmt.Errorf("Failed to parse JSON response from service: %s", resp) return fmt.Errorf("Failed to parse JSON response from service: %s", resp)
} }
// From here down is just printing the data.
y, err := yaml.Marshal(dest)
if err != nil {
return fmt.Errorf("Failed to serialize JSON response from service: %s", resp)
}
fmt.Println(string(y))
return nil return nil
} }
...@@ -137,14 +126,13 @@ func (c *Client) callHTTP(path, method, action string, reader io.ReadCloser) (st ...@@ -137,14 +126,13 @@ func (c *Client) callHTTP(path, method, action string, reader io.ReadCloser) (st
} }
// ListDeployments lists the deployments in DM. // ListDeployments lists the deployments in DM.
func (c *Client) ListDeployments() error { func (c *Client) ListDeployments() ([]string, error) {
var d interface{} var l []string
if err := c.CallService("deployments", "GET", "foo", &d, nil); err != nil { if err := c.CallService("deployments", "GET", "foo", &l, nil); err != nil {
return err return nil, err
} }
fmt.Printf("%#v\n", d) return l, nil
return nil
} }
// DeployChart sends a chart to DM for deploying. // DeployChart sends a chart to DM for deploying.
......
package dm package dm
import ( import (
"net/http"
"net/http/httptest"
"testing" "testing"
) )
...@@ -58,3 +60,39 @@ func TestURL(t *testing.T) { ...@@ -58,3 +60,39 @@ func TestURL(t *testing.T) {
} }
} }
} }
type fakeClient struct {
*Client
server *httptest.Server
handler http.HandlerFunc
response []byte
}
func (c *fakeClient) setup() *fakeClient {
c.handler = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Write(c.response)
})
c.server = httptest.NewServer(c.handler)
c.Client = NewClient(c.server.URL)
return c
}
func (c *fakeClient) teardown() {
c.server.Close()
}
func TestListDeployments(t *testing.T) {
fc := &fakeClient{
response: []byte(`["guestbook.yaml"]`),
}
defer fc.teardown()
l, err := fc.setup().ListDeployments()
if err != nil {
t.Fatal(err)
}
if len(l) != 1 {
t.Fatal("expected a single deployment")
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment