github.com/tmlbl/deis@v1.0.2/tests/apps_test.go (about) 1 // +build integration 2 3 package tests 4 5 import ( 6 "math/rand" 7 "os" 8 "testing" 9 10 "github.com/deis/deis/tests/utils" 11 ) 12 13 var ( 14 appsCreateCmd = "apps:create {{.AppName}}" 15 appsCreateCmdNoRemote = "apps:create {{.AppName}} --no-remote" 16 appsListCmd = "apps:list" 17 appsRunCmd = "apps:run echo hello" 18 appsOpenCmd = "apps:open --app={{.AppName}}" 19 appsLogsCmd = "apps:logs --app={{.AppName}}" 20 appsInfoCmd = "apps:info --app={{.AppName}}" 21 appsDestroyCmd = "apps:destroy --app={{.AppName}} --confirm={{.AppName}}" 22 ) 23 24 func randomString(n int) string { 25 var letters = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") 26 b := make([]rune, n) 27 for i := range b { 28 b[i] = letters[rand.Intn(len(letters))] 29 } 30 return string(b) 31 } 32 33 func TestApps(t *testing.T) { 34 params := appsSetup(t) 35 appsCreateTest(t, params) 36 appsListTest(t, params, false) 37 appsLogsTest(t, params) 38 appsInfoTest(t, params) 39 appsRunTest(t, params) 40 appsOpenTest(t, params) 41 appsDestroyTest(t, params) 42 appsListTest(t, params, true) 43 } 44 45 func appsSetup(t *testing.T) *utils.DeisTestConfig { 46 cfg := utils.GetGlobalConfig() 47 cfg.AppName = "appssample" 48 utils.Execute(t, authLoginCmd, cfg, false, "") 49 utils.Execute(t, gitCloneCmd, cfg, false, "") 50 return cfg 51 } 52 53 func appsCreateTest(t *testing.T, params *utils.DeisTestConfig) { 54 wd, _ := os.Getwd() 55 defer os.Chdir(wd) 56 if err := utils.Chdir(params.ExampleApp); err != nil { 57 t.Fatal(err) 58 } 59 cmd := appsCreateCmd 60 utils.Execute(t, cmd, params, false, "") 61 utils.Execute(t, cmd, params, true, "App with this Id already exists") 62 } 63 64 func appsDestroyTest(t *testing.T, params *utils.DeisTestConfig) { 65 if err := utils.Chdir(params.ExampleApp); err != nil { 66 t.Fatal(err) 67 } 68 utils.Execute(t, appsDestroyCmd, params, false, "") 69 if err := utils.Chdir(".."); err != nil { 70 t.Fatal(err) 71 } 72 if err := utils.Rmdir(params.ExampleApp); err != nil { 73 t.Fatal(err) 74 } 75 } 76 77 func appsInfoTest(t *testing.T, params *utils.DeisTestConfig) { 78 utils.Execute(t, appsInfoCmd, params, false, "") 79 } 80 81 func appsListTest(t *testing.T, params *utils.DeisTestConfig, notflag bool) { 82 utils.CheckList(t, appsListCmd, params, params.AppName, notflag) 83 } 84 85 func appsLogsTest(t *testing.T, params *utils.DeisTestConfig) { 86 cmd := appsLogsCmd 87 // test for application lifecycle logs 88 utils.Execute(t, cmd, params, false, "204 NO CONTENT") 89 if err := utils.Chdir(params.ExampleApp); err != nil { 90 t.Fatal(err) 91 } 92 utils.Execute(t, gitPushCmd, params, false, "") 93 utils.Curl(t, params) 94 utils.Execute(t, cmd, params, false, "created initial release") 95 utils.Execute(t, cmd, params, false, "listening on 5000...") 96 if err := utils.Chdir(".."); err != nil { 97 t.Fatal(err) 98 } 99 } 100 101 func appsOpenTest(t *testing.T, params *utils.DeisTestConfig) { 102 utils.Curl(t, params) 103 } 104 105 func appsRunTest(t *testing.T, params *utils.DeisTestConfig) { 106 cmd := appsRunCmd 107 if err := utils.Chdir(params.ExampleApp); err != nil { 108 t.Fatal(err) 109 } 110 utils.Execute(t, cmd, params, false, "hello") 111 utils.Execute(t, "apps:run env", params, true, "GIT_SHA") 112 // run a REALLY large command to test https://github.com/deis/deis/issues/2046 113 largeString := randomString(1024) 114 utils.Execute(t, "apps:run echo "+largeString, params, false, largeString) 115 if err := utils.Chdir(".."); err != nil { 116 t.Fatal(err) 117 } 118 utils.Execute(t, cmd, params, true, "Not found") 119 }