github.com/engineyard/workflow-cli@v2.21.6+incompatible/cmd/builds_test.go (about) 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/teamhephy/controller-sdk-go/api" 13 "github.com/teamhephy/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 TestBuildsListLimit(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 server.Mux.HandleFunc("/v2/apps/foo/builds/", func(w http.ResponseWriter, r *http.Request) { 94 testutil.SetHeaders(w) 95 fmt.Fprintf(w, `{ 96 "count": 2, 97 "next": null, 98 "previous": null, 99 "results": [ 100 { 101 "app": "foo", 102 "created": "2014-01-01T00:00:00UTC", 103 "dockerfile": "", 104 "image": "", 105 "owner": "", 106 "procfile": {}, 107 "sha": "", 108 "updated": "", 109 "uuid": "de1bf5b5-4a72-4f94-a10c-d2a3741cdf75" 110 } 111 ] 112 }`) 113 }) 114 115 err = cmdr.BuildsList("foo", 1) 116 assert.NoErr(t, err) 117 assert.Equal(t, b.String(), `=== foo Builds (1 of 2) 118 de1bf5b5-4a72-4f94-a10c-d2a3741cdf75 2014-01-01T00:00:00UTC 119 `, "output") 120 } 121 122 func TestBuildsCreate(t *testing.T) { 123 t.Parallel() 124 cf, server, err := testutil.NewTestServerAndClient() 125 if err != nil { 126 t.Fatal(err) 127 } 128 defer server.Close() 129 var b bytes.Buffer 130 cmdr := DeisCmd{WOut: &b, ConfigFile: cf} 131 132 // Create a new temporary directory and change to it. 133 name, err := ioutil.TempDir("", "client") 134 assert.NoErr(t, err) 135 err = os.Chdir(name) 136 assert.NoErr(t, err) 137 138 server.Mux.HandleFunc("/v2/apps/enterprise/builds/", func(w http.ResponseWriter, r *http.Request) { 139 testutil.SetHeaders(w) 140 testutil.AssertBody(t, api.CreateBuildRequest{ 141 Image: "ncc/1701:A", 142 }, r) 143 w.WriteHeader(http.StatusCreated) 144 fmt.Fprintf(w, "{}") 145 }) 146 147 err = cmdr.BuildsCreate("enterprise", "ncc/1701:A", "") 148 assert.NoErr(t, err) 149 assert.Equal(t, testutil.StripProgress(b.String()), "Creating build... done\n", "output") 150 151 server.Mux.HandleFunc("/v2/apps/bradbury/builds/", func(w http.ResponseWriter, r *http.Request) { 152 testutil.SetHeaders(w) 153 testutil.AssertBody(t, api.CreateBuildRequest{ 154 Image: "nx/72307:latest", 155 Procfile: map[string]string{ 156 "web": "./drive", 157 "warp": "./warp 8", 158 }, 159 }, r) 160 161 w.WriteHeader(http.StatusCreated) 162 fmt.Fprintf(w, "{}") 163 }) 164 b.Reset() 165 166 err = cmdr.BuildsCreate("bradbury", "nx/72307:latest", `web: ./drive 167 warp: ./warp 8 168 `) 169 assert.NoErr(t, err) 170 assert.Equal(t, testutil.StripProgress(b.String()), "Creating build... done\n", "output") 171 172 server.Mux.HandleFunc("/v2/apps/franklin/builds/", func(w http.ResponseWriter, r *http.Request) { 173 testutil.SetHeaders(w) 174 testutil.AssertBody(t, api.CreateBuildRequest{ 175 Image: "nx/326:latest", 176 }, r) 177 178 w.WriteHeader(http.StatusCreated) 179 fmt.Fprintf(w, "{}") 180 }) 181 b.Reset() 182 183 err = ioutil.WriteFile("Procfile", []byte(`web: ./drive 184 warp: ./warp 8 185 `), os.ModePerm) 186 assert.NoErr(t, err) 187 188 err = cmdr.BuildsCreate("franklin", "nx/326:latest", "") 189 assert.NoErr(t, err) 190 assert.Equal(t, testutil.StripProgress(b.String()), "Creating build... done\n", "output") 191 192 }