github.com/engineyard/workflow-cli@v2.21.6+incompatible/cmd/perms_test.go (about) 1 package cmd 2 3 import ( 4 "bytes" 5 "fmt" 6 "net/http" 7 "testing" 8 9 "github.com/arschles/assert" 10 "github.com/teamhephy/workflow-cli/pkg/testutil" 11 ) 12 13 func TestPermsListUsers(t *testing.T) { 14 t.Parallel() 15 cf, server, err := testutil.NewTestServerAndClient() 16 if err != nil { 17 t.Fatal(err) 18 } 19 defer server.Close() 20 21 server.Mux.HandleFunc("/v2/apps/foo/perms/", func(w http.ResponseWriter, r *http.Request) { 22 testutil.SetHeaders(w) 23 24 fmt.Fprintf(w, `{ 25 "users": [ 26 "baz", 27 "bar" 28 ] 29 }`) 30 }) 31 32 var b bytes.Buffer 33 cmdr := DeisCmd{WOut: &b, ConfigFile: cf} 34 35 err = cmdr.PermsList("foo", false, -1) 36 assert.NoErr(t, err) 37 38 assert.Equal(t, testutil.StripProgress(b.String()), `=== foo's Users 39 baz 40 bar 41 `, "output") 42 } 43 44 func TestPermsListUsersLimit(t *testing.T) { 45 t.Parallel() 46 cf, server, err := testutil.NewTestServerAndClient() 47 if err != nil { 48 t.Fatal(err) 49 } 50 defer server.Close() 51 52 server.Mux.HandleFunc("/v2/apps/foo/perms/", func(w http.ResponseWriter, r *http.Request) { 53 testutil.SetHeaders(w) 54 55 fmt.Fprintf(w, `{ 56 "users": [ 57 "baz" 58 ] 59 }`) 60 }) 61 62 var b bytes.Buffer 63 cmdr := DeisCmd{WOut: &b, ConfigFile: cf} 64 65 err = cmdr.PermsList("foo", false, 1) 66 assert.NoErr(t, err) 67 68 assert.Equal(t, testutil.StripProgress(b.String()), `=== foo's Users 69 baz 70 `, "output") 71 } 72 73 func TestPermsListAdmins(t *testing.T) { 74 t.Parallel() 75 cf, server, err := testutil.NewTestServerAndClient() 76 if err != nil { 77 t.Fatal(err) 78 } 79 defer server.Close() 80 81 server.Mux.HandleFunc("/v2/admin/perms/", func(w http.ResponseWriter, r *http.Request) { 82 testutil.SetHeaders(w) 83 84 fmt.Fprintf(w, `{ 85 "count": 2, 86 "next": null, 87 "previous": null, 88 "results": [ 89 { 90 "username": "fred", 91 "is_superuser": true 92 }, 93 { 94 "username": "bob", 95 "is_superuser": true 96 } 97 ] 98 }`) 99 }) 100 101 var b bytes.Buffer 102 cmdr := DeisCmd{WOut: &b, ConfigFile: cf} 103 104 err = cmdr.PermsList("foo", true, -1) 105 assert.NoErr(t, err) 106 107 assert.Equal(t, testutil.StripProgress(b.String()), `=== Administrators 108 fred 109 bob 110 `, "output") 111 } 112 113 func TestPermsListAdminsLimit(t *testing.T) { 114 t.Parallel() 115 cf, server, err := testutil.NewTestServerAndClient() 116 if err != nil { 117 t.Fatal(err) 118 } 119 defer server.Close() 120 121 server.Mux.HandleFunc("/v2/admin/perms/", func(w http.ResponseWriter, r *http.Request) { 122 testutil.SetHeaders(w) 123 124 fmt.Fprintf(w, `{ 125 "count": 2, 126 "next": null, 127 "previous": null, 128 "results": [ 129 { 130 "username": "fred", 131 "is_superuser": true 132 } 133 ] 134 }`) 135 }) 136 137 var b bytes.Buffer 138 cmdr := DeisCmd{WOut: &b, ConfigFile: cf} 139 140 err = cmdr.PermsList("foo", true, 1) 141 assert.NoErr(t, err) 142 143 assert.Equal(t, testutil.StripProgress(b.String()), `=== Administrators (1 of 2) 144 fred 145 `, "output") 146 } 147 148 func TestPermsCreateUser(t *testing.T) { 149 t.Parallel() 150 cf, server, err := testutil.NewTestServerAndClient() 151 if err != nil { 152 t.Fatal(err) 153 } 154 defer server.Close() 155 var b bytes.Buffer 156 cmdr := DeisCmd{WOut: &b, ConfigFile: cf} 157 158 server.Mux.HandleFunc("/v2/apps/lorem-ipsum/", func(w http.ResponseWriter, r *http.Request) { 159 testutil.SetHeaders(w) 160 fmt.Fprintf(w, `{ 161 "uuid": "c4aed81c-d1ca-4ff1-ab89-d2151264e1a3", 162 "id": "lorem-ipsum", 163 "owner": "dolar-sit-amet", 164 "structure": { 165 "cmd": 1 166 }, 167 "created": "2016-08-22T17:40:16Z", 168 "updated": "2016-08-22T17:40:16Z" 169 }`) 170 }) 171 172 server.Mux.HandleFunc("/v2/apps/lorem-ipsum/perms", func(w http.ResponseWriter, r *http.Request) { 173 testutil.SetHeaders(w) 174 }) 175 176 err = cmdr.PermCreate("lorem-ipsum", "test-user", false) 177 assert.NoErr(t, err) 178 assert.Equal(t, testutil.StripProgress(b.String()), `Adding test-user to lorem-ipsum collaborators... done 179 `, "output") 180 } 181 182 func TestPermsCreateAdmin(t *testing.T) { 183 t.Parallel() 184 cf, server, err := testutil.NewTestServerAndClient() 185 if err != nil { 186 t.Fatal(err) 187 } 188 defer server.Close() 189 var b bytes.Buffer 190 cmdr := DeisCmd{WOut: &b, ConfigFile: cf} 191 192 server.Mux.HandleFunc("/v2/admin/perms/", func(w http.ResponseWriter, r *http.Request) { 193 testutil.SetHeaders(w) 194 }) 195 196 err = cmdr.PermCreate("lorem-ipsum", "test-admin", true) 197 assert.NoErr(t, err) 198 assert.Equal(t, testutil.StripProgress(b.String()), `Adding test-admin to system administrators... done 199 `, "output") 200 } 201 202 func TestPermsDeleteUser(t *testing.T) { 203 t.Parallel() 204 cf, server, err := testutil.NewTestServerAndClient() 205 if err != nil { 206 t.Fatal(err) 207 } 208 defer server.Close() 209 var b bytes.Buffer 210 cmdr := DeisCmd{WOut: &b, ConfigFile: cf} 211 212 server.Mux.HandleFunc("/v2/apps/lorem-ipsum/", func(w http.ResponseWriter, r *http.Request) { 213 testutil.SetHeaders(w) 214 fmt.Fprintf(w, `{ 215 "uuid": "c4aed81c-d1ca-4ff1-ab89-d2151264e1a3", 216 "id": "lorem-ipsum", 217 "owner": "dolar-sit-amet", 218 "structure": { 219 "cmd": 1 220 }, 221 "created": "2016-08-22T17:40:16Z", 222 "updated": "2016-08-22T17:40:16Z" 223 }`) 224 }) 225 226 server.Mux.HandleFunc("/v2/apps/lorem-ipsum/perms", func(w http.ResponseWriter, r *http.Request) { 227 testutil.SetHeaders(w) 228 }) 229 230 err = cmdr.PermDelete("lorem-ipsum", "test-user", false) 231 assert.NoErr(t, err) 232 assert.Equal(t, testutil.StripProgress(b.String()), `Removing test-user from lorem-ipsum collaborators... done 233 `, "output") 234 } 235 236 func TestPermsDeleteAdmin(t *testing.T) { 237 t.Parallel() 238 cf, server, err := testutil.NewTestServerAndClient() 239 if err != nil { 240 t.Fatal(err) 241 } 242 defer server.Close() 243 var b bytes.Buffer 244 cmdr := DeisCmd{WOut: &b, ConfigFile: cf} 245 246 server.Mux.HandleFunc("/v2/admin/perms/", func(w http.ResponseWriter, r *http.Request) { 247 testutil.SetHeaders(w) 248 }) 249 250 err = cmdr.PermDelete("lorem-ipsum", "test-admin", true) 251 assert.NoErr(t, err) 252 assert.Equal(t, testutil.StripProgress(b.String()), `Removing test-admin from system administrators... done 253 `, "output") 254 }