test(dm): add unit tests for dm client

pull/291/head
Adam Reese 9 years ago
parent 692a27bbed
commit 4fc6a7b6c0

@ -1,6 +1,7 @@
package main package main
import ( import (
"fmt"
"os" "os"
"github.com/codegangsta/cli" "github.com/codegangsta/cli"
@ -23,5 +24,10 @@ 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(true)
return client.ListDeployments() list, err := client.ListDeployments()
if err != nil {
return err
}
fmt.Println(list)
return nil
} }

@ -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
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
} }
// 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.

@ -1,6 +1,8 @@
package dm package dm
import ( import (
"net/http"
"net/http/httptest"
"testing" "testing"
) )
@ -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")
}
}

Loading…
Cancel
Save