Skip to content

Commit 752feea

Browse files
smothikimboersma
authored andcommitted
test(integration): working integration tests
Also vendored in the gexpect library for tests.
1 parent 5814719 commit 752feea

38 files changed

Lines changed: 1696 additions & 127 deletions

integration/apps_test.go

Lines changed: 78 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,99 @@
11
package verbose
22

33
import (
4-
"fmt"
54
"github.com/deis/deis/tests/integration-utils"
5+
"github.com/deis/deis/tests/utils"
66
"testing"
77
)
88

99
func appsSetup(t *testing.T) *itutils.DeisTestConfig {
10-
cfg := itutils.GlobalSetup(t)
10+
cfg := itutils.GetGlobalConfig()
11+
cfg.ExampleApp = itutils.GetRandomApp()
12+
cmd := itutils.GetCommand("auth", "login")
13+
itutils.Execute(t, cmd, cfg, false, "")
14+
cmd = itutils.GetCommand("git", "clone")
15+
itutils.Execute(t, cmd, cfg, false, "")
1116
return cfg
1217
}
1318

14-
func keysAddTest(t *testing.T, params *itutils.DeisTestConfig) {
15-
cmd := itutils.GetCommand("keys", "add")
19+
func appsCreateTest(t *testing.T, params *itutils.DeisTestConfig) {
20+
cmd := itutils.GetCommand("apps", "create")
21+
if err := utils.Chdir(params.ExampleApp); err != nil {
22+
t.Fatalf("Failed:\n%v", err)
23+
}
1624
itutils.Execute(t, cmd, params, false, "")
17-
itutils.Execute(t, cmd, params, true, "Uploading deis to Deis...400 BAD REQUEST")
25+
itutils.Execute(t, cmd, params, true, "Deis remote already exists")
26+
27+
if err := utils.Chdir(".."); err != nil {
28+
t.Fatalf("Failed:\n%v", err)
29+
}
1830
}
1931

20-
func keysListTest(t *testing.T, params *itutils.DeisTestConfig) {
21-
cmd := itutils.GetCommand("keys", "list")
32+
func appsRunTest(t *testing.T, params *itutils.DeisTestConfig) {
33+
cmd := itutils.GetCommand("apps", "run")
34+
if err := utils.Chdir(params.ExampleApp); err != nil {
35+
t.Fatalf("Failed:\n%v", err)
36+
}
2237
itutils.Execute(t, cmd, params, false, "")
38+
39+
if err := utils.Chdir(".."); err != nil {
40+
t.Fatalf("Failed:\n%v", err)
41+
}
42+
itutils.Execute(t, cmd, params, true, "Could not find deis remote in `git remote -v`")
43+
}
44+
45+
func appsDestroyTest(t *testing.T, params *itutils.DeisTestConfig) {
46+
cmd := itutils.GetCommand("apps", "destroy")
47+
if err := utils.Chdir(params.ExampleApp); err != nil {
48+
t.Fatalf("Failed:\n%v", err)
49+
}
50+
itutils.Execute(t, cmd, params, false, "")
51+
itutils.Execute(t, cmd, params, true, "400 BAD REQUEST")
52+
if err := utils.Chdir(".."); err != nil {
53+
t.Fatalf("Failed:\n%v", err)
54+
}
55+
if err := utils.Rmdir(params.ExampleApp); err != nil {
56+
t.Fatalf("Failed:\n%v", err)
57+
}
58+
}
59+
60+
func appsListTest(t *testing.T, params *itutils.DeisTestConfig, notflag bool) {
61+
cmd := itutils.GetCommand("apps", "list")
62+
itutils.CheckList(t, params, cmd, params.AppName, notflag)
2363
}
2464

25-
func keysRemoveTest(t *testing.T, params *itutils.DeisTestConfig) {
26-
cmd := itutils.GetCommand("keys", "remove")
65+
func appsLogsTest(t *testing.T, params *itutils.DeisTestConfig) {
66+
cmd := itutils.GetCommand("apps", "logs")
67+
cmd1 := itutils.GetCommand("git", "push")
68+
itutils.Execute(t, cmd, params, true, "204 NO CONTENT")
69+
if err := utils.Chdir(params.ExampleApp); err != nil {
70+
t.Fatalf("Failed:\n%v", err)
71+
}
72+
itutils.Execute(t, cmd1, params, false, "")
2773
itutils.Execute(t, cmd, params, false, "")
28-
itutils.Execute(t, cmd, params, true, "Not found")
74+
if err := utils.Chdir(".."); err != nil {
75+
t.Fatalf("Failed:\n%v", err)
76+
}
2977
}
3078

31-
func TestKeys(t *testing.T) {
32-
params := keysSetup(t)
33-
keysAddTest(t, params)
34-
keysListTest(t, params)
35-
keysRemoveTest(t, params)
79+
func appsInfoTest(t *testing.T, params *itutils.DeisTestConfig) {
80+
cmd := itutils.GetCommand("apps", "info")
81+
itutils.Execute(t, cmd, params, false, "")
82+
}
83+
84+
func appsOpenTest(t *testing.T, params *itutils.DeisTestConfig) {
85+
itutils.Curl(t, "http://"+params.AppName+"."+params.HostName, params.ExampleApp)
86+
}
87+
88+
func TestApps(t *testing.T) {
89+
params := appsSetup(t)
90+
appsCreateTest(t, params)
91+
appsListTest(t, params, false)
92+
appsLogsTest(t, params)
93+
appsInfoTest(t, params)
94+
appsRunTest(t, params)
95+
appsOpenTest(t, params)
96+
appsDestroyTest(t, params)
97+
appsListTest(t, params, true)
98+
3699
}

integration/auth_test.go

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,42 +3,41 @@ package verbose
33
import (
44
"fmt"
55
"github.com/deis/deis/tests/integration-utils"
6+
"github.com/deis/deis/tests/utils"
67
"testing"
78
)
89

9-
func authSetup(t *testing.T) *itutils.UserDetails {
10-
cfg := itutils.GlobalSetup(t)
11-
ucfg := itutils.SetUser()
12-
fmt.Println("username :" + ucfg.UserName)
13-
fmt.Println("password :" + ucfg.Password)
14-
ucfg.HostName = cfg.HostName
15-
return ucfg
10+
func authSetup(t *testing.T) *itutils.DeisTestConfig {
11+
user := itutils.GetGlobalConfig()
12+
user.UserName, user.Password = utils.GetUserDetails()
13+
fmt.Println("username :" + user.UserName)
14+
fmt.Println("password :" + user.Password)
15+
return user
1616
}
1717

18-
func authRegisterTest(t *testing.T, params *itutils.UserDetails) {
18+
func authRegisterTest(t *testing.T, params *itutils.DeisTestConfig) {
1919
cmd := itutils.GetCommand("auth", "register")
2020
itutils.Execute(t, cmd, params, false, "")
2121
itutils.Execute(t, cmd, params, true, "Registration failed")
2222
}
2323

24-
func authLoginTest(t *testing.T, params *itutils.UserDetails) {
24+
func authLoginTest(t *testing.T, params *itutils.DeisTestConfig) {
2525
cmd := itutils.GetCommand("auth", "login")
2626
itutils.Execute(t, cmd, params, false, "")
2727
params = authSetup(t)
2828
itutils.Execute(t, cmd, params, true, "200 OK")
2929
}
3030

31-
func authLogoutTest(t *testing.T, params *itutils.UserDetails) {
31+
func authLogoutTest(t *testing.T, params *itutils.DeisTestConfig) {
3232
cmd := itutils.GetCommand("auth", "logout")
3333
itutils.Execute(t, cmd, params, false, "")
34-
3534
}
3635

37-
func authCancel() {
38-
fmt.Println("gexpect implementation")
36+
func authCancel(t *testing.T, params *itutils.DeisTestConfig) {
37+
itutils.AuthCancel(t, params)
3938
}
4039

41-
func teardown(t *testing.T, params *itutils.UserDetails) {
40+
func teardown(t *testing.T, params *itutils.DeisTestConfig) {
4241
authLogoutTest(t, params)
4342
}
4443

@@ -47,5 +46,5 @@ func TestAuth(t *testing.T) {
4746
authRegisterTest(t, params)
4847
authLogoutTest(t, params)
4948
authLoginTest(t, params)
50-
teardown(t, params)
49+
authCancel(t, params)
5150
}

integration/builds_test.go

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package verbose
2+
3+
import (
4+
"bytes"
5+
"fmt"
6+
"github.com/deis/deis/tests/integration-utils"
7+
"github.com/deis/deis/tests/utils"
8+
"os/exec"
9+
"strings"
10+
"testing"
11+
"text/template"
12+
)
13+
14+
func buildSetup(t *testing.T) *itutils.DeisTestConfig {
15+
cfg := itutils.GetGlobalConfig()
16+
cfg.ExampleApp = itutils.GetRandomApp()
17+
cfg.AppName = "buildsample"
18+
cmd := itutils.GetCommand("auth", "login")
19+
itutils.Execute(t, cmd, cfg, false, "")
20+
cmd = itutils.GetCommand("git", "clone")
21+
itutils.Execute(t, cmd, cfg, false, "")
22+
cmd = itutils.GetCommand("apps", "create")
23+
cmd1 := itutils.GetCommand("git", "push")
24+
cmd2 := itutils.GetCommand("git", "add")
25+
cmd3 := itutils.GetCommand("git", "commit")
26+
if err := utils.Chdir(cfg.ExampleApp); err != nil {
27+
t.Fatalf("Failed:\n%v", err)
28+
}
29+
30+
itutils.Execute(t, cmd, cfg, false, "")
31+
itutils.Execute(t, cmd1, cfg, false, "")
32+
if err := utils.CreateFile(cfg.ExampleApp); err != nil {
33+
t.Fatalf("Failed:\n%v", err)
34+
}
35+
itutils.Execute(t, cmd2, cfg, false, "")
36+
itutils.Execute(t, cmd3, cfg, false, "")
37+
itutils.Execute(t, cmd1, cfg, false, "")
38+
if err := utils.Chdir(".."); err != nil {
39+
t.Fatalf("Failed:\n%v", err)
40+
}
41+
return cfg
42+
}
43+
44+
func buildsListTest(t *testing.T, params *itutils.DeisTestConfig) {
45+
Deis := "/usr/local/bin/deis "
46+
cmd := itutils.GetCommand("builds", "list")
47+
var cmdBuf bytes.Buffer
48+
tmpl := template.Must(template.New("cmd").Parse(cmd))
49+
if err := tmpl.Execute(&cmdBuf, params); err != nil {
50+
t.Fatal(err)
51+
}
52+
cmdString := cmdBuf.String()
53+
fmt.Println(cmdString)
54+
cmdl := exec.Command("sh", "-c", Deis+cmdString)
55+
if stdout, _, err := utils.RunCommandWithStdoutStderr(cmdl); err != nil {
56+
t.Fatalf("Failed:\n%v", err)
57+
} else {
58+
ImageId := strings.Split(stdout.String(), "\n")[2]
59+
params.ImageId = strings.Fields(ImageId)[0]
60+
}
61+
62+
}
63+
64+
func buildsCreateTest(t *testing.T, params *itutils.DeisTestConfig) {
65+
cmd := itutils.GetCommand("builds", "create")
66+
itutils.Execute(t, cmd, params, false, "")
67+
68+
}
69+
70+
func TestBuilds(t *testing.T) {
71+
params := buildSetup(t)
72+
buildsListTest(t, params)
73+
buildsCreateTest(t, params)
74+
itutils.AppsDestroyTest(t, params)
75+
}

integration/cluster_test.go

Lines changed: 14 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -6,59 +6,47 @@ import (
66
"testing"
77
)
88

9-
func clustersSetup(t *testing.T) *ClusterDetails {
10-
cfg := itutils.GlobalSetup(t)
11-
cscfg := itutils.ClusterDetails{
12-
cfg.ClusterName,
13-
cfg.Hosts,
14-
"172.17.8.100",
15-
cfg.AuthKey,
16-
cfg.HostName,
17-
}
18-
cmd := itutils.GetCommand("keys", "add")
9+
func clustersSetup(t *testing.T) *itutils.DeisTestConfig {
10+
cfg := itutils.GetGlobalConfig()
11+
cfg.ClusterName = "devtest"
12+
cmd := itutils.GetCommand("auth", "login")
1913
itutils.Execute(t, cmd, cfg, false, "")
20-
return &cscfg
14+
return cfg
2115
}
2216

23-
func clustersCreateTest(t *testing.T, params *ClusterDetails) {
17+
func clustersCreateTest(t *testing.T, params *itutils.DeisTestConfig) {
2418
cmd := itutils.GetCommand("clusters", "create")
2519
itutils.Execute(t, cmd, params, false, "")
2620
itutils.Execute(t, cmd, params, true, "Cluster with this Id already exists")
2721
}
2822

29-
func clustersListTest(t *testing.T, params *ClusterDetails) {
23+
func clustersListTest(t *testing.T, params *itutils.DeisTestConfig, notflag bool) {
3024
cmd := itutils.GetCommand("clusters", "list")
31-
itutils.Execute(t, cmd, params, false, "")
25+
itutils.CheckList(t, params, cmd, params.ClusterName, notflag)
3226
}
3327

34-
func clustersInfoTest(t *testing.T, params *ClusterDetails) {
28+
func clustersInfoTest(t *testing.T, params *itutils.DeisTestConfig) {
3529
cmd := itutils.GetCommand("clusters", "info")
3630
itutils.Execute(t, cmd, params, false, "")
37-
params.ClusterName = "kin"
38-
itutils.Execute(t, cmd, params, true, "Not found")
39-
params.ClusterName = "dev"
4031
}
4132

42-
func clustersUpdateTest(t *testing.T, params *ClusterDetails) {
33+
func clustersUpdateTest(t *testing.T, params *itutils.DeisTestConfig) {
4334
cmd := itutils.GetCommand("clusters", "update")
4435
itutils.Execute(t, cmd, params, false, "")
45-
params.ClusterName = "kin"
46-
itutils.Execute(t, cmd, params, true, "Not found")
47-
params.ClusterName = "dev"
4836
}
4937

50-
func clustersDestroyTest(t *testing.T, params *ClusterDetails) {
38+
func clustersDestroyTest(t *testing.T, params *itutils.DeisTestConfig) {
5139
cmd := itutils.GetCommand("clusters", "destroy")
5240
itutils.Execute(t, cmd, params, false, "")
53-
itutils.Execute(t, cmd, params, true, "Not found")
5441
}
5542

5643
func TestKeys(t *testing.T) {
5744
params := clustersSetup(t)
5845
clustersCreateTest(t, params)
59-
clustersListTest(t, params)
46+
clustersListTest(t, params, false)
6047
clustersInfoTest(t, params)
6148
clustersUpdateTest(t, params)
62-
//clustersDestroyTest(t, params)
49+
clustersDestroyTest(t, params)
50+
clustersListTest(t, params, true)
6351

6452
}

integration/config_test.go

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package verbose
2+
3+
import (
4+
_ "fmt"
5+
"github.com/deis/deis/tests/integration-utils"
6+
_ "github.com/deis/deis/tests/utils"
7+
"testing"
8+
)
9+
10+
func configSetup(t *testing.T) *itutils.DeisTestConfig {
11+
cfg := itutils.GetGlobalConfig()
12+
cfg.ExampleApp = itutils.GetRandomApp()
13+
cfg.AppName = "configsample"
14+
cmd := itutils.GetCommand("auth", "login")
15+
itutils.Execute(t, cmd, cfg, false, "")
16+
cmd = itutils.GetCommand("git", "clone")
17+
itutils.Execute(t, cmd, cfg, false, "")
18+
cmd = itutils.GetCommand("apps", "create")
19+
cmd1 := itutils.GetCommand("git", "push")
20+
if err := utils.Chdir(cfg.ExampleApp); err != nil {
21+
t.Fatalf("Failed:\n%v", err)
22+
}
23+
24+
itutils.Execute(t, cmd, cfg, false, "")
25+
itutils.Execute(t, cmd1, cfg, false, "")
26+
if err := utils.Chdir(".."); err != nil {
27+
t.Fatalf("Failed:\n%v", err)
28+
}
29+
return cfg
30+
}
31+
32+
func configlistTest(t *testing.T, params *itutils.DeisTestConfig, notflag bool) {
33+
cmd := itutils.GetCommand("config", "list")
34+
itutils.CheckList(t, params, cmd, "jaf", notflag)
35+
36+
}
37+
38+
func configSetTest(t *testing.T, params *itutils.DeisTestConfig) {
39+
cmd := itutils.GetCommand("config", "set")
40+
itutils.Execute(t, cmd, params, false, "")
41+
itutils.CheckList(t, params, itutils.GetCommand("apps", "info"), "web.1 up (v3)")
42+
}
43+
44+
func configUnsetTest(t *testing.T, params *itutils.DeisTestConfig) {
45+
cmd := itutils.GetCommand("config", "unset")
46+
itutils.Execute(t, cmd, params, false, "")
47+
itutils.CheckList(t, params, itutils.GetCommand("apps", "info"), "web.1 up (v4)")
48+
}
49+
50+
func TestConfig(t *testing.T) {
51+
params := configSetup(t)
52+
configSetTest(t, params)
53+
configlistTest(t, params, false)
54+
configUnsetTest(t, params)
55+
configlistTest(t, params, true)
56+
itutils.AppsDestroyTest(t, params)
57+
}

0 commit comments

Comments
 (0)