This repository was archived by the owner on Jan 16, 2021. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 137
Expand file tree
/
Copy pathrollback_test.go
More file actions
76 lines (70 loc) · 1.97 KB
/
rollback_test.go
File metadata and controls
76 lines (70 loc) · 1.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package parsecmd
import (
"encoding/json"
"io/ioutil"
"net/http"
"regexp"
"strings"
"testing"
"github.com/ParsePlatform/parse-cli/parsecli"
"github.com/facebookgo/ensure"
"github.com/facebookgo/parse"
)
func newRollbackCmdHarness(t testing.TB) *parsecli.Harness {
h := parsecli.NewHarness(t)
ht := parsecli.TransportFunc(func(r *http.Request) (*http.Response, error) {
ensure.DeepEqual(t, r.URL.Path, "/1/deploy")
var req, res rollbackInfo
ensure.Nil(t, json.NewDecoder(r.Body).Decode(&req))
if req.ReleaseName == "" {
res.ReleaseName = "v0"
} else {
res.ReleaseName = req.ReleaseName
}
return &http.Response{
StatusCode: http.StatusOK,
Body: ioutil.NopCloser(strings.NewReader(jsonStr(t, &res))),
}, nil
})
h.Env.ParseAPIClient = &parsecli.ParseAPIClient{APIClient: &parse.Client{Transport: ht}}
return h
}
func TestRollbackToPrevious(t *testing.T) {
t.Parallel()
var r rollbackCmd
h := newRollbackCmdHarness(t)
defer h.Stop()
ensure.Nil(t, r.run(h.Env, nil))
ensure.DeepEqual(t, h.Out.String(),
`Rolling back to previous release
Rolled back to version v0
`)
}
func TestRollbackToVersionOne(t *testing.T) {
t.Parallel()
r := rollbackCmd{ReleaseName: "v1"}
h := newRollbackCmdHarness(t)
defer h.Stop()
ensure.Nil(t, r.run(h.Env, nil))
ensure.DeepEqual(t, h.Out.String(),
`Rolling back to v1
Rolled back to version v1
`)
}
func TestRollbackError(t *testing.T) {
t.Parallel()
var r rollbackCmd
h := parsecli.NewHarness(t)
defer h.Stop()
var res struct{ Error string }
res.Error = "something is wrong"
ht := parsecli.TransportFunc(func(r *http.Request) (*http.Response, error) {
ensure.DeepEqual(t, r.URL.Path, "/1/deploy")
return &http.Response{
StatusCode: http.StatusExpectationFailed,
Body: ioutil.NopCloser(strings.NewReader(jsonStr(t, &res))),
}, nil
})
h.Env.ParseAPIClient = &parsecli.ParseAPIClient{APIClient: &parse.Client{Transport: ht}}
ensure.Err(t, r.run(h.Env, nil), regexp.MustCompile("something is wrong"))
}