github.com/deis/deis@v1.13.5-0.20170519182049-1d9e59fbdbfc/tests/auth_test.go (about) 1 // +build integration 2 3 package tests 4 5 import ( 6 "testing" 7 8 "github.com/deis/deis/tests/utils" 9 ) 10 11 var ( 12 authLoginCmd = "auth:login http://deis.{{.Domain}} --username={{.UserName}} --password={{.Password}}" 13 authLogoutCmd = "auth:logout" 14 authRegisterCmd = "auth:register http://deis.{{.Domain}} --username={{.UserName}} --password={{.Password}} --email={{.Email}}" 15 authCancelCmd = "auth:cancel --username={{.UserName}} --password={{.Password}} --yes" 16 authCancelAdminCmd = "auth:cancel --username={{.UserName}} --yes" 17 authRegenerateCmd = "auth:regenerate" 18 authRegenerateUsrCmd = "auth:regenerate -u {{.UserName}}" 19 authRegenerateAllCmd = "auth:regenerate --all" 20 checkTokenCmd = "apps:list" 21 authPasswdCmd = "auth:passwd --username={{.UserName}} --password={{.Password}} --new-password={{.NewPassword}}" 22 authWhoamiCmd = "auth:whoami" 23 ) 24 25 func TestAuth(t *testing.T) { 26 params := authSetup(t) 27 authRegisterTest(t, params) 28 authLogoutTest(t, params) 29 authRegenerateTest(t) 30 authLoginTest(t, params) 31 authWhoamiTest(t, params) 32 authPasswdTest(t, params) 33 authCancel(t, params) 34 } 35 36 func authSetup(t *testing.T) *utils.DeisTestConfig { 37 user := utils.GetGlobalConfig() 38 user.UserName, user.Password = utils.NewID(), utils.NewID() 39 return user 40 } 41 42 func authCancel(t *testing.T, params *utils.DeisTestConfig) { 43 utils.Execute(t, authCancelCmd, params, false, "Account cancelled") 44 user := utils.GetGlobalConfig() 45 46 // Admins can delete other users. 47 user.UserName, user.Password = "cancel-test", "test" 48 utils.Execute(t, authRegisterCmd, user, false, "") 49 admin := utils.GetGlobalConfig() 50 utils.Execute(t, authLoginCmd, admin, false, "") 51 utils.Execute(t, authCancelAdminCmd, user, false, "Account cancelled") 52 // Make sure the user's config was not purged after auth:cancel --username 53 utils.Execute(t, authWhoamiCmd, admin, false, "You are "+admin.UserName) 54 } 55 56 func authLoginTest(t *testing.T, params *utils.DeisTestConfig) { 57 cmd := authLoginCmd 58 utils.Execute(t, cmd, params, false, "") 59 params = authSetup(t) 60 utils.Execute(t, cmd, params, true, "400 BAD REQUEST") 61 } 62 63 func authLogoutTest(t *testing.T, params *utils.DeisTestConfig) { 64 utils.Execute(t, authLogoutCmd, params, false, "") 65 } 66 67 func authPasswdTest(t *testing.T, params *utils.DeisTestConfig) { 68 password := "aNewPassword" 69 params.NewPassword = password 70 cmd := authPasswdCmd 71 utils.Execute(t, cmd, params, false, "") 72 params.Password = "wrong-password" 73 utils.Execute(t, cmd, params, true, "Password change failed") 74 75 cmd = authLoginCmd 76 utils.Execute(t, cmd, params, true, "400 BAD REQUEST") 77 params.Password = password 78 utils.Execute(t, cmd, params, false, "") 79 } 80 81 func authRegisterTest(t *testing.T, params *utils.DeisTestConfig) { 82 cmd := authRegisterCmd 83 utils.Execute(t, cmd, params, false, "") 84 utils.Execute(t, cmd, params, true, "Registration failed") 85 } 86 87 func authWhoamiTest(t *testing.T, params *utils.DeisTestConfig) { 88 utils.Execute(t, "auth:whoami", params, true, params.UserName) 89 } 90 91 func authRegenerateTest(t *testing.T) { 92 params := utils.GetGlobalConfig() 93 regenCmd := authRegenerateUsrCmd 94 loginCmd := authLoginCmd 95 96 utils.Execute(t, loginCmd, params, false, "") 97 utils.Execute(t, authRegenerateCmd, params, false, "") 98 utils.Execute(t, loginCmd, params, false, "") 99 utils.Execute(t, regenCmd, params, false, "") 100 utils.Execute(t, checkTokenCmd, params, true, "401 UNAUTHORIZED") 101 utils.Execute(t, loginCmd, params, false, "") 102 utils.Execute(t, authRegenerateAllCmd, params, false, "") 103 utils.Execute(t, checkTokenCmd, params, true, "401 UNAUTHORIZED") 104 }