11package cmd
22
33import (
4+ "bytes"
5+ "fmt"
6+ "net/http"
47 "testing"
58
69 "github.com/arschles/assert"
10+ "github.com/deis/controller-sdk-go/api"
11+ "github.com/deis/workflow-cli/pkg/testutil"
712)
813
914func TestParseConfig (t * testing.T ) {
@@ -16,3 +21,186 @@ func TestParseConfig(t *testing.T) {
1621 assert .NoErr (t , err )
1722 assert .Equal (t , actual , map [string ]interface {}{"FOO" : "bar" }, "map" )
1823}
24+
25+ func TestFormatConfig (t * testing.T ) {
26+ t .Parallel ()
27+
28+ testMap := map [string ]interface {}{
29+ "TEST" : "testing" ,
30+ "NCC" : 1701 ,
31+ "TRUE" : false ,
32+ "FLOAT" : 12.34 ,
33+ }
34+
35+ testOut := formatConfig (testMap )
36+ assert .Equal (t , testOut , `FLOAT=12.34
37+ NCC=1701
38+ TEST=testing
39+ TRUE=false
40+ ` , "output" )
41+ }
42+
43+ func TestSortKeys (t * testing.T ) {
44+ test := map [string ]interface {}{
45+ "d" : nil ,
46+ "b" : nil ,
47+ "c" : nil ,
48+ "a" : nil ,
49+ }
50+
51+ assert .Equal (t , sortKeys (test ), []string {"a" , "b" , "c" , "d" }, "map" )
52+ }
53+
54+ func TestConfigList (t * testing.T ) {
55+ t .Parallel ()
56+ cf , server , err := testutil .NewTestServerAndClient ()
57+ if err != nil {
58+ t .Fatal (err )
59+ }
60+ defer server .Close ()
61+
62+ server .Mux .HandleFunc ("/v2/apps/foo/config/" , func (w http.ResponseWriter , r * http.Request ) {
63+ testutil .SetHeaders (w )
64+ fmt .Fprintf (w , `{
65+ "owner": "jkirk",
66+ "app": "foo",
67+ "values": {
68+ "TEST": "testing",
69+ "NCC": "1701",
70+ "TRUE": "false",
71+ "FLOAT": "12.34"
72+ },
73+ "memory": {},
74+ "cpu": {},
75+ "tags": {},
76+ "registry": {},
77+ "created": "2014-01-01T00:00:00UTC",
78+ "updated": "2014-01-01T00:00:00UTC",
79+ "uuid": "de1bf5b5-4a72-4f94-a10c-d2a3741cdf75"
80+ }` )
81+ })
82+
83+ var b bytes.Buffer
84+ cmdr := DeisCmd {WOut : & b , ConfigFile : cf }
85+
86+ err = cmdr .ConfigList ("foo" , false )
87+ assert .NoErr (t , err )
88+
89+ assert .Equal (t , b .String (), `=== foo Config
90+ FLOAT 12.34
91+ NCC 1701
92+ TEST testing
93+ TRUE false
94+ ` , "output" )
95+ b .Reset ()
96+
97+ err = cmdr .ConfigList ("foo" , true )
98+ assert .NoErr (t , err )
99+ assert .Equal (t , b .String (), "FLOAT=12.34 NCC=1701 TEST=testing TRUE=false\n " , "output" )
100+ }
101+
102+ func TestConfigSet (t * testing.T ) {
103+ t .Parallel ()
104+ cf , server , err := testutil .NewTestServerAndClient ()
105+ if err != nil {
106+ t .Fatal (err )
107+ }
108+ defer server .Close ()
109+
110+ server .Mux .HandleFunc ("/v2/apps/foo/config/" , func (w http.ResponseWriter , r * http.Request ) {
111+ testutil .SetHeaders (w )
112+ if r .Method == "POST" {
113+ testutil .AssertBody (t , api.Config {
114+ Values : map [string ]interface {}{
115+ "TRUE" : "false" ,
116+ },
117+ }, r )
118+ }
119+
120+ fmt .Fprintf (w , `{
121+ "owner": "jkirk",
122+ "app": "foo",
123+ "values": {
124+ "TEST": "testing",
125+ "NCC": "1701",
126+ "TRUE": "false",
127+ "FLOAT": "12.34"
128+ },
129+ "memory": {},
130+ "cpu": {},
131+ "tags": {},
132+ "registry": {},
133+ "created": "2014-01-01T00:00:00UTC",
134+ "updated": "2014-01-01T00:00:00UTC",
135+ "uuid": "de1bf5b5-4a72-4f94-a10c-d2a3741cdf75"
136+ }` )
137+ })
138+
139+ var b bytes.Buffer
140+ cmdr := DeisCmd {WOut : & b , ConfigFile : cf }
141+
142+ err = cmdr .ConfigSet ("foo" , []string {"TRUE=false" })
143+ assert .NoErr (t , err )
144+
145+ assert .Equal (t , testutil .StripProgress (b .String ()), `Creating config... done
146+
147+ === foo Config
148+ FLOAT 12.34
149+ NCC 1701
150+ TEST testing
151+ TRUE false
152+ ` , "output" )
153+ }
154+
155+ func TestConfigUnset (t * testing.T ) {
156+ t .Parallel ()
157+ cf , server , err := testutil .NewTestServerAndClient ()
158+ if err != nil {
159+ t .Fatal (err )
160+ }
161+ defer server .Close ()
162+
163+ server .Mux .HandleFunc ("/v2/apps/foo/config/" , func (w http.ResponseWriter , r * http.Request ) {
164+ testutil .SetHeaders (w )
165+ if r .Method == "POST" {
166+ testutil .AssertBody (t , api.Config {
167+ Values : map [string ]interface {}{
168+ "FOO" : nil ,
169+ },
170+ }, r )
171+ }
172+
173+ fmt .Fprintf (w , `{
174+ "owner": "jkirk",
175+ "app": "foo",
176+ "values": {
177+ "TEST": "testing",
178+ "NCC": "1701",
179+ "TRUE": "false",
180+ "FLOAT": "12.34"
181+ },
182+ "memory": {},
183+ "cpu": {},
184+ "tags": {},
185+ "registry": {},
186+ "created": "2014-01-01T00:00:00UTC",
187+ "updated": "2014-01-01T00:00:00UTC",
188+ "uuid": "de1bf5b5-4a72-4f94-a10c-d2a3741cdf75"
189+ }` )
190+ })
191+
192+ var b bytes.Buffer
193+ cmdr := DeisCmd {WOut : & b , ConfigFile : cf }
194+
195+ err = cmdr .ConfigUnset ("foo" , []string {"FOO" })
196+ assert .NoErr (t , err )
197+
198+ assert .Equal (t , testutil .StripProgress (b .String ()), `Removing config... done
199+
200+ === foo Config
201+ FLOAT 12.34
202+ NCC 1701
203+ TEST testing
204+ TRUE false
205+ ` , "output" )
206+ }
0 commit comments