Skip to content

Commit d2ab260

Browse files
committed
test(label-cmd): add Label cmd test
1 parent 029f39e commit d2ab260

3 files changed

Lines changed: 204 additions & 0 deletions

File tree

cmd/apps_test.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,20 @@ func TestAppsInfo(t *testing.T) {
165165
}`)
166166
})
167167

168+
server.Mux.HandleFunc("/v2/apps/lorem-ipsum/settings/", func(w http.ResponseWriter, r *http.Request) {
169+
testutil.SetHeaders(w)
170+
fmt.Fprintf(w, `{
171+
"owner": "elrond",
172+
"app": "lorem-ipsum",
173+
"created": "2014-01-01T00:00:00UTC",
174+
"updated": "2014-01-01T00:00:00UTC",
175+
"uuid": "de1bf5b5-4a72-4f94-a10c-d2a3741cdf75",
176+
"label": {
177+
"team": "frontend"
178+
}
179+
}`)
180+
})
181+
168182
s, err := settings.Load(cmdr.ConfigFile)
169183
if err != nil {
170184
t.Fatal(err)
@@ -196,6 +210,9 @@ lorem-ipsum-cmd-1911796442-48b58 up (v2)
196210
=== lorem-ipsum Domains
197211
lorem-ipsum
198212
213+
=== lorem-ipsum Label
214+
team: frontend
215+
199216
`, "output")
200217
}
201218

cmd/labels_test.go

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
package cmd
2+
3+
import (
4+
"bytes"
5+
"fmt"
6+
"net/http"
7+
"testing"
8+
9+
"github.com/arschles/assert"
10+
"github.com/deis/controller-sdk-go/api"
11+
"github.com/deis/workflow-cli/pkg/testutil"
12+
"strings"
13+
)
14+
15+
func TestLabelsList(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/rivendell/settings/", func(w http.ResponseWriter, r *http.Request) {
26+
testutil.SetHeaders(w)
27+
fmt.Fprintf(w, `{
28+
"owner": "jim",
29+
"app": "rivendell",
30+
"label": {"git_repo": "https://github.com/deis/controller-sdk-go", "team" : "deis"},
31+
"created": "2014-01-01T00:00:00UTC",
32+
"updated": "2014-01-01T00:00:00UTC",
33+
"uuid": "de1bf5b5-4a72-4f94-a10c-d2a3741cdf75"
34+
}`)
35+
})
36+
37+
err = cmdr.LabelsList("rivendell")
38+
assert.NoErr(t, err)
39+
assert.Equal(t, strings.TrimSpace(b.String()), `=== rivendell Label
40+
git_repo: https://github.com/deis/controller-sdk-go
41+
team: deis`, "output")
42+
43+
server.Mux.HandleFunc("/v2/apps/mordor/settings/", func(w http.ResponseWriter, r *http.Request) {
44+
testutil.SetHeaders(w)
45+
fmt.Fprintf(w, `{
46+
"owner": "priw",
47+
"app": "mordor",
48+
"created": "2014-01-01T00:00:00UTC",
49+
"updated": "2014-01-01T00:00:00UTC",
50+
"uuid": "de1bf5b5-4a72-4f94-a10c-d2a3741cdf75"
51+
}`)
52+
})
53+
b.Reset()
54+
55+
err = cmdr.LabelsList("mordor")
56+
assert.NoErr(t, err)
57+
assert.Equal(t, b.String(), "=== mordor Label\nNo labels found.\n", "output")
58+
}
59+
60+
func TestListsSet(t *testing.T) {
61+
t.Parallel()
62+
cf, server, err := testutil.NewTestServerAndClient()
63+
if err != nil {
64+
t.Fatal(err)
65+
}
66+
defer server.Close()
67+
var b bytes.Buffer
68+
cmdr := DeisCmd{WOut: &b, ConfigFile: cf}
69+
70+
server.Mux.HandleFunc("/v2/apps/lothlorien/settings/", func(w http.ResponseWriter, r *http.Request) {
71+
testutil.SetHeaders(w)
72+
data := map[string]interface{}{
73+
"git_repo": "https://github.com/deis/controller-sdk-go",
74+
"team": "deis",
75+
}
76+
testutil.AssertBody(t, api.AppSettings{Label: data}, r)
77+
fmt.Fprintf(w, "{}")
78+
})
79+
80+
err = cmdr.LabelsSet("lothlorien", []string{
81+
"team=deis",
82+
"git_repo=https://github.com/deis/controller-sdk-go",
83+
})
84+
assert.NoErr(t, err)
85+
assert.Equal(t, testutil.StripProgress(b.String()), "Applying labels on lothlorien... done\n", "output")
86+
}
87+
88+
func TestListsUnset(t *testing.T) {
89+
t.Parallel()
90+
cf, server, err := testutil.NewTestServerAndClient()
91+
if err != nil {
92+
t.Fatal(err)
93+
}
94+
defer server.Close()
95+
var b bytes.Buffer
96+
cmdr := DeisCmd{WOut: &b, ConfigFile: cf}
97+
98+
server.Mux.HandleFunc("/v2/apps/bree/settings/", func(w http.ResponseWriter, r *http.Request) {
99+
testutil.SetHeaders(w)
100+
testutil.AssertBody(t, api.AppSettings{Label: map[string]interface{}{
101+
"team": nil,
102+
"git_repo": nil,
103+
}}, r)
104+
fmt.Fprintf(w, "{}")
105+
})
106+
107+
err = cmdr.LabelsUnset("bree", []string{
108+
"team",
109+
"git_repo",
110+
})
111+
assert.NoErr(t, err)
112+
assert.Equal(t, testutil.StripProgress(b.String()), "Removing labels on bree... done\n", "output")
113+
}

parser/labels_test.go

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
package parser
2+
3+
import (
4+
"bytes"
5+
"errors"
6+
"testing"
7+
8+
"github.com/arschles/assert"
9+
"github.com/deis/workflow-cli/pkg/testutil"
10+
)
11+
12+
// Create fake implementations of each method that return the argument
13+
// we expect to have called the function (as an error to satisfy the interface).
14+
15+
func (d FakeDeisCmd) LabelsList(string) error {
16+
return errors.New("labels:list")
17+
}
18+
19+
func (d FakeDeisCmd) LabelsSet(string, []string) error {
20+
return errors.New("labels:set")
21+
}
22+
23+
func (d FakeDeisCmd) LabelsUnset(string, []string) error {
24+
return errors.New("labels:unset")
25+
}
26+
27+
func TestLabels(t *testing.T) {
28+
t.Parallel()
29+
30+
cf, server, err := testutil.NewTestServerAndClient()
31+
if err != nil {
32+
t.Fatal(err)
33+
}
34+
defer server.Close()
35+
var b bytes.Buffer
36+
cmdr := FakeDeisCmd{WOut: &b, ConfigFile: cf}
37+
38+
// cases defines the arguments and expected return of the call.
39+
// if expected is "", it defaults to args[0].
40+
cases := []struct {
41+
args []string
42+
expected string
43+
}{
44+
{
45+
args: []string{"labels:list"},
46+
expected: "",
47+
},
48+
{
49+
args: []string{"labels:set", "git_repo=https://github.com/deis/workflow", "team=deis"},
50+
expected: "",
51+
},
52+
{
53+
args: []string{"labels:unset", "git_repo", "team"},
54+
expected: "",
55+
},
56+
{
57+
args: []string{"labels"},
58+
expected: "labels:list",
59+
},
60+
}
61+
62+
// For each case, check that calling the route with the arguments
63+
// returns the expected error, which is args[0] if not provided.
64+
for _, c := range cases {
65+
var expected string
66+
if c.expected == "" {
67+
expected = c.args[0]
68+
} else {
69+
expected = c.expected
70+
}
71+
err = Labels(c.args, cmdr)
72+
assert.Err(t, errors.New(expected), err)
73+
}
74+
}

0 commit comments

Comments
 (0)