Skip to content

Commit c46ca05

Browse files
tests(builds): add build tests to the cmd package (#207)
1 parent d49acf0 commit c46ca05

1 file changed

Lines changed: 157 additions & 0 deletions

File tree

cmd/builds_test.go

Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
package cmd
2+
3+
import (
4+
"bytes"
5+
"fmt"
6+
"io/ioutil"
7+
"net/http"
8+
"os"
9+
"testing"
10+
11+
"github.com/arschles/assert"
12+
"github.com/deis/controller-sdk-go/api"
13+
"github.com/deis/workflow-cli/pkg/testutil"
14+
)
15+
16+
func TestParseProcfile(t *testing.T) {
17+
t.Parallel()
18+
19+
procMap, err := parseProcfile([]byte(`web: ./test
20+
foo: test --test
21+
`))
22+
assert.NoErr(t, err)
23+
assert.Equal(t, procMap, map[string]string{"web": "./test", "foo": "test --test"}, "map")
24+
25+
_, err = parseProcfile([]byte(`web: ./test
26+
foo
27+
`))
28+
29+
assert.ExistsErr(t, err, "yaml")
30+
}
31+
32+
func TestBuildsList(t *testing.T) {
33+
t.Parallel()
34+
cf, server, err := testutil.NewTestServerAndClient()
35+
if err != nil {
36+
t.Fatal(err)
37+
}
38+
defer server.Close()
39+
var b bytes.Buffer
40+
cmdr := DeisCmd{WOut: &b, ConfigFile: cf}
41+
42+
server.Mux.HandleFunc("/v2/apps/foo/builds/", func(w http.ResponseWriter, r *http.Request) {
43+
testutil.SetHeaders(w)
44+
fmt.Fprintf(w, `{
45+
"count": 2,
46+
"next": null,
47+
"previous": null,
48+
"results": [
49+
{
50+
"app": "",
51+
"created": "2014-01-01T00:00:00UTC",
52+
"dockerfile": "",
53+
"image": "",
54+
"owner": "",
55+
"procfile": {},
56+
"sha": "",
57+
"updated": "",
58+
"uuid": "de1bf5b5-4a72-4f94-a10c-d2a3741cdf75"
59+
},
60+
{
61+
"app": "",
62+
"created": "2014-01-05T00:00:00UTC",
63+
"dockerfile": "",
64+
"image": "",
65+
"owner": "",
66+
"procfile": {},
67+
"sha": "",
68+
"updated": "",
69+
"uuid": "c4aed81c-d1ca-4ff1-ab89-d2151264e1a3"
70+
}
71+
]
72+
}`)
73+
})
74+
75+
err = cmdr.BuildsList("foo", -1)
76+
assert.NoErr(t, err)
77+
assert.Equal(t, b.String(), `=== foo Builds
78+
de1bf5b5-4a72-4f94-a10c-d2a3741cdf75 2014-01-01T00:00:00UTC
79+
c4aed81c-d1ca-4ff1-ab89-d2151264e1a3 2014-01-05T00:00:00UTC
80+
`, "output")
81+
}
82+
83+
func TestBuildsCreate(t *testing.T) {
84+
t.Parallel()
85+
cf, server, err := testutil.NewTestServerAndClient()
86+
if err != nil {
87+
t.Fatal(err)
88+
}
89+
defer server.Close()
90+
var b bytes.Buffer
91+
cmdr := DeisCmd{WOut: &b, ConfigFile: cf}
92+
93+
// Create a new temporary directory and change to it.
94+
name, err := ioutil.TempDir("", "client")
95+
assert.NoErr(t, err)
96+
err = os.Chdir(name)
97+
assert.NoErr(t, err)
98+
99+
server.Mux.HandleFunc("/v2/apps/enterprise/builds/", func(w http.ResponseWriter, r *http.Request) {
100+
testutil.SetHeaders(w)
101+
testutil.AssertBody(t, api.CreateBuildRequest{
102+
Image: "ncc/1701:A",
103+
}, r)
104+
w.WriteHeader(http.StatusCreated)
105+
fmt.Fprintf(w, "{}")
106+
})
107+
108+
err = cmdr.BuildsCreate("enterprise", "ncc/1701:A", "")
109+
assert.NoErr(t, err)
110+
assert.Equal(t, testutil.StripProgress(b.String()), "Creating build... done\n", "output")
111+
112+
server.Mux.HandleFunc("/v2/apps/bradbury/builds/", func(w http.ResponseWriter, r *http.Request) {
113+
testutil.SetHeaders(w)
114+
testutil.AssertBody(t, api.CreateBuildRequest{
115+
Image: "nx/72307:latest",
116+
Procfile: map[string]string{
117+
"web": "./drive",
118+
"warp": "./warp 8",
119+
},
120+
}, r)
121+
122+
w.WriteHeader(http.StatusCreated)
123+
fmt.Fprintf(w, "{}")
124+
})
125+
b.Reset()
126+
127+
err = cmdr.BuildsCreate("bradbury", "nx/72307:latest", `web: ./drive
128+
warp: ./warp 8
129+
`)
130+
assert.NoErr(t, err)
131+
assert.Equal(t, testutil.StripProgress(b.String()), "Creating build... done\n", "output")
132+
133+
server.Mux.HandleFunc("/v2/apps/franklin/builds/", func(w http.ResponseWriter, r *http.Request) {
134+
testutil.SetHeaders(w)
135+
testutil.AssertBody(t, api.CreateBuildRequest{
136+
Image: "nx/326:latest",
137+
Procfile: map[string]string{
138+
"web": "./drive",
139+
"warp": "./warp 8",
140+
},
141+
}, r)
142+
143+
w.WriteHeader(http.StatusCreated)
144+
fmt.Fprintf(w, "{}")
145+
})
146+
b.Reset()
147+
148+
err = ioutil.WriteFile("Procfile", []byte(`web: ./drive
149+
warp: ./warp 8
150+
`), os.ModePerm)
151+
assert.NoErr(t, err)
152+
153+
err = cmdr.BuildsCreate("franklin", "nx/326:latest", "")
154+
assert.NoErr(t, err)
155+
assert.Equal(t, testutil.StripProgress(b.String()), "Creating build... done\n", "output")
156+
157+
}

0 commit comments

Comments
 (0)