Skip to content

Commit f01c058

Browse files
test(releases): add tests to releases (#201)
1 parent 3b57aa9 commit f01c058

2 files changed

Lines changed: 142 additions & 2 deletions

File tree

cmd/releases.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package cmd
22

33
import (
44
"fmt"
5-
"os"
65
"text/tabwriter"
76

87
"github.com/deis/controller-sdk-go/releases"
@@ -29,7 +28,7 @@ func (d DeisCmd) ReleasesList(appID string, results int) error {
2928

3029
w := new(tabwriter.Writer)
3130

32-
w.Init(os.Stdout, 0, 8, 1, '\t', 0)
31+
w.Init(d.WOut, 0, 8, 1, '\t', 0)
3332
for _, r := range releases {
3433
fmt.Fprintf(w, "v%d\t%s\t%s\n", r.Version, r.Created, r.Summary)
3534
}

cmd/releases_test.go

Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
package cmd
2+
3+
import (
4+
"bytes"
5+
"fmt"
6+
"io/ioutil"
7+
"net/http"
8+
"testing"
9+
10+
"github.com/arschles/assert"
11+
"github.com/deis/controller-sdk-go/api"
12+
"github.com/deis/workflow-cli/pkg/testutil"
13+
)
14+
15+
func TestReleasesList(t *testing.T) {
16+
t.Parallel()
17+
cf, server, err := testutil.NewTestServerAndClient()
18+
if err != nil {
19+
t.Fatal(err)
20+
}
21+
defer server.Close()
22+
var b bytes.Buffer
23+
cmdr := DeisCmd{WOut: &b, ConfigFile: cf}
24+
25+
server.Mux.HandleFunc("/v2/apps/numenor/releases/", func(w http.ResponseWriter, r *http.Request) {
26+
testutil.SetHeaders(w)
27+
fmt.Fprintf(w, `{
28+
"count": 2,
29+
"next": null,
30+
"previous": null,
31+
"results": [
32+
{
33+
"uuid": "c4aed81c-d1ca-4ff1-ab89-d2151264e1a3",
34+
"app": "numenor",
35+
"owner": "nazgul",
36+
"created": "2016-08-22T17:40:16Z",
37+
"updated": "2016-08-22T17:40:16Z",
38+
"version": 2,
39+
"summary": "khamul added ANGMAR",
40+
"config": "3bb816b1-4fde-4b06-8afe-acd12f58a266",
41+
"build": null
42+
},
43+
{
44+
"app": "numenor",
45+
"build": null,
46+
"config": "95bd6dea-1685-4f78-a03d-fd7270b058d1",
47+
"created": "2014-01-01T00:00:00UTC",
48+
"owner": "nazgul",
49+
"summary": "nazgul created initial release",
50+
"updated": "2014-01-01T00:00:00UTC",
51+
"uuid": "de1bf5b5-4a72-4f94-a10c-d2a3741cdf75",
52+
"version": 1
53+
}
54+
]
55+
}`)
56+
})
57+
58+
err = cmdr.ReleasesList("numenor", -1)
59+
assert.NoErr(t, err)
60+
assert.Equal(t, b.String(), `=== numenor Releases
61+
v2 2016-08-22T17:40:16Z khamul added ANGMAR
62+
v1 2014-01-01T00:00:00UTC nazgul created initial release
63+
`, "output")
64+
}
65+
66+
func TestReleasesInfo(t *testing.T) {
67+
t.Parallel()
68+
cf, server, err := testutil.NewTestServerAndClient()
69+
if err != nil {
70+
t.Fatal(err)
71+
}
72+
defer server.Close()
73+
var b bytes.Buffer
74+
cmdr := DeisCmd{WOut: &b, ConfigFile: cf}
75+
76+
server.Mux.HandleFunc("/v2/apps/numenor/releases/v2/", func(w http.ResponseWriter, r *http.Request) {
77+
testutil.SetHeaders(w)
78+
fmt.Fprintf(w, `{
79+
"uuid": "c4aed81c-d1ca-4ff1-ab89-d2151264e1a3",
80+
"app": "numenor",
81+
"owner": "nazgul",
82+
"created": "2016-08-22T17:40:16Z",
83+
"updated": "2016-08-22T17:40:16Z",
84+
"version": 2,
85+
"summary": "khamul added ANGMAR",
86+
"config": "3bb816b1-4fde-4b06-8afe-acd12f58a266",
87+
"build": null
88+
}`)
89+
})
90+
91+
err = cmdr.ReleasesInfo("numenor", 2)
92+
assert.NoErr(t, err)
93+
assert.Equal(t, b.String(), `=== numenor Release v2
94+
config: 3bb816b1-4fde-4b06-8afe-acd12f58a266
95+
owner: nazgul
96+
created: 2016-08-22T17:40:16Z
97+
summary: khamul added ANGMAR
98+
updated: 2016-08-22T17:40:16Z
99+
uuid: c4aed81c-d1ca-4ff1-ab89-d2151264e1a3
100+
`, "output")
101+
}
102+
103+
func TestReleasesRollback(t *testing.T) {
104+
t.Parallel()
105+
cf, server, err := testutil.NewTestServerAndClient()
106+
if err != nil {
107+
t.Fatal(err)
108+
}
109+
defer server.Close()
110+
var b bytes.Buffer
111+
cmdr := DeisCmd{WOut: &b, ConfigFile: cf}
112+
113+
server.Mux.HandleFunc("/v2/apps/numenor/releases/rollback/", func(w http.ResponseWriter, r *http.Request) {
114+
testutil.SetHeaders(w)
115+
body, err := ioutil.ReadAll(r.Body)
116+
if err != nil {
117+
t.Fatal(err)
118+
}
119+
120+
assert.Equal(t, body, []byte{}, "body")
121+
w.WriteHeader(http.StatusCreated)
122+
fmt.Fprintf(w, `{"version": 5}`)
123+
})
124+
125+
err = cmdr.ReleasesRollback("numenor", -1)
126+
assert.NoErr(t, err)
127+
assert.Equal(t, testutil.StripProgress(b.String()), "Rolling back one release... done, v5\n", "output")
128+
129+
server.Mux.HandleFunc("/v2/apps/angmar/releases/rollback/", func(w http.ResponseWriter, r *http.Request) {
130+
testutil.SetHeaders(w)
131+
testutil.AssertBody(t, api.ReleaseRollback{Version: 3}, r)
132+
w.WriteHeader(http.StatusCreated)
133+
fmt.Fprintf(w, `{"version": 3}`)
134+
})
135+
136+
b.Reset()
137+
138+
err = cmdr.ReleasesRollback("angmar", 3)
139+
assert.NoErr(t, err)
140+
assert.Equal(t, testutil.StripProgress(b.String()), "Rolling back to v3... done, v3\n", "output")
141+
}

0 commit comments

Comments
 (0)