Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

tests(apps): test for apps:info, apps:destroy, and apps:transfer #233

Closed
wants to merge 7 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
243 changes: 243 additions & 0 deletions cmd/apps_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,256 @@ import (

"github.com/deis/workflow-cli/pkg/git"
"github.com/deis/workflow-cli/pkg/testutil"
"github.com/deis/workflow-cli/settings"
)

type expandURLCases struct {
Input string
Expected string
}

func TestAppsList(t *testing.T) {
t.Parallel()
cf, server, err := testutil.NewTestServerAndClient()
if err != nil {
t.Fatal(err)
}
defer server.Close()
var b bytes.Buffer
cmdr := DeisCmd{WOut: &b, ConfigFile: cf}

server.Mux.HandleFunc("/v2/apps/", func(w http.ResponseWriter, r *http.Request) {
testutil.SetHeaders(w)
fmt.Fprintf(w, `{
"count": 2,
"next": null,
"previous": null,
"results": [
{
"uuid": "c4aed81c-d1ca-4ff1-ab89-d2151264e1a3",
"id": "lorem-ipsum",
"owner": "dolar-sit-amet",
"created": "2016-08-22T17:40:16Z",
"updated": "2016-08-22T17:40:16Z",
"structure": {
"cmd": 1
}
},
{
"uuid": "c4aed81c-d1ca-4ff1-ab89-d2151264e1a3",
"id": "consectetur",
"owner": "adipiscing",
"created": "2016-08-22T17:40:16Z",
"updated": "2016-08-22T17:40:16Z",
"structure": {
"cmd": 1
}
}
]
}`)
})

err = cmdr.AppsList(-1)
assert.NoErr(t, err)
assert.Equal(t, b.String(), `=== Apps
lorem-ipsum
consectetur
`, "output")
}

func TestAppsListLimit(t *testing.T) {
t.Parallel()
cf, server, err := testutil.NewTestServerAndClient()
if err != nil {
t.Fatal(err)
}
defer server.Close()
var b bytes.Buffer
cmdr := DeisCmd{WOut: &b, ConfigFile: cf}

server.Mux.HandleFunc("/v2/apps/", func(w http.ResponseWriter, r *http.Request) {
testutil.SetHeaders(w)
fmt.Fprintf(w, `{
"count": 2,
"next": null,
"previous": null,
"results": [
{
"uuid": "c4aed81c-d1ca-4ff1-ab89-d2151264e1a3",
"id": "lorem-ipsum",
"owner": "dolar-sit-amet",
"created": "2016-08-22T17:40:16Z",
"updated": "2016-08-22T17:40:16Z",
"structure": {
"cmd": 1
}
}
]
}`)
})

err = cmdr.AppsList(1)
assert.NoErr(t, err)
assert.Equal(t, b.String(), `=== Apps (1 of 2)
lorem-ipsum
`, "output")
}

func TestAppsInfo(t *testing.T) {
t.Parallel()
cf, server, err := testutil.NewTestServerAndClient()
if err != nil {
t.Fatal(err)
}
defer server.Close()
var b bytes.Buffer
cmdr := DeisCmd{WOut: &b, ConfigFile: cf}

server.Mux.HandleFunc("/v2/apps/lorem-ipsum/", func(w http.ResponseWriter, r *http.Request) {
testutil.SetHeaders(w)
fmt.Fprintf(w, `{
"uuid": "c4aed81c-d1ca-4ff1-ab89-d2151264e1a3",
"id": "lorem-ipsum",
"owner": "dolar-sit-amet",
"structure": {
"cmd": 1
},
"created": "2016-08-22T17:40:16Z",
"updated": "2016-08-22T17:40:16Z"
}`)
})

server.Mux.HandleFunc("/v2/apps/lorem-ipsum/pods/", func(w http.ResponseWriter, r *http.Request) {
testutil.SetHeaders(w)
fmt.Fprintf(w, `{
"count": 1,
"results": [
{
"state": "up",
"started": "2016-08-22T17:42:16Z",
"name": "lorem-ipsum-cmd-1911796442-48b58",
"release": "v2",
"type": "cmd"
}
]
}`)
})

server.Mux.HandleFunc("/v2/apps/lorem-ipsum/domains/", func(w http.ResponseWriter, r *http.Request) {
testutil.SetHeaders(w)
fmt.Fprintf(w, `{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"owner": "dolar-sit-amet",
"created": "2016-08-22T17:40:16Z",
"updated": "2016-08-22T17:40:16Z",
"app": "lorem-ipsum",
"domain": "lorem-ipsum"
}
]
}`)
})

s, err := settings.Load(cmdr.ConfigFile)
if err != nil {
t.Fatal(err)
}

url, err := cmdr.appURL(s, "lorem-ipsum")
if err != nil {
t.Fatal(err)
}

if url == "" {
url = fmt.Sprintf(noDomainAssignedMsg, "lorem-ipsum")
}

err = cmdr.AppInfo("lorem-ipsum")
assert.NoErr(t, err)
assert.Equal(t, b.String(), `=== lorem-ipsum Application
updated: 2016-08-22T17:40:16Z
uuid: c4aed81c-d1ca-4ff1-ab89-d2151264e1a3
created: 2016-08-22T17:40:16Z
url: `+url+`
owner: dolar-sit-amet
id: lorem-ipsum

=== lorem-ipsum Processes
--- cmd:
lorem-ipsum-cmd-1911796442-48b58 up (v2)

=== lorem-ipsum Domains
lorem-ipsum

`, "output")
}

func TestAppDestroy(t *testing.T) {
t.Parallel()
cf, server, err := testutil.NewTestServerAndClient()
if err != nil {
t.Fatal(err)
}
defer server.Close()
var b bytes.Buffer
cmdr := DeisCmd{WOut: &b, ConfigFile: cf}

server.Mux.HandleFunc("/v2/apps/lorem-ipsum/", func(w http.ResponseWriter, r *http.Request) {
testutil.SetHeaders(w)
fmt.Fprintf(w, `{
"uuid": "c4aed81c-d1ca-4ff1-ab89-d2151264e1a3",
"id": "lorem-ipsum",
"owner": "dolar-sit-amet",
"structure": {
"cmd": 1
},
"created": "2016-08-22T17:40:16Z",
"updated": "2016-08-22T17:40:16Z"
}`)
})
err = cmdr.AppDestroy("lorem-ipsum", "bad-confirm-string")
assert.Equal(t, err.Error(), `App lorem-ipsum does not match confirm bad-confirm-string, aborting.`, "output")

err = cmdr.AppDestroy("lorem-ipsum", "lorem-ipsum")
assert.NoErr(t, err)
assert.Equal(t, testutil.StripProgress(b.String()), `Destroying lorem-ipsum...
done in 0s
`, "output")
}

func TestAppTransfer(t *testing.T) {
t.Parallel()
cf, server, err := testutil.NewTestServerAndClient()
if err != nil {
t.Fatal(err)
}
defer server.Close()
var b bytes.Buffer
cmdr := DeisCmd{WOut: &b, ConfigFile: cf}

server.Mux.HandleFunc("/v2/apps/lorem-ipsum/", func(w http.ResponseWriter, r *http.Request) {
testutil.SetHeaders(w)
fmt.Fprintf(w, `{
"uuid": "c4aed81c-d1ca-4ff1-ab89-d2151264e1a3",
"id": "lorem-ipsum",
"owner": "dolar-sit-amet",
"structure": {
"cmd": 1
},
"created": "2016-08-22T17:40:16Z",
"updated": "2016-08-22T17:40:16Z"
}`)
})

err = cmdr.AppTransfer("lorem-ipsum", "test-user")
assert.NoErr(t, err)
assert.Equal(t, testutil.StripProgress(b.String()), `Transferring lorem-ipsum to test-user... done
`, "output")
}

func TestExpandUrl(t *testing.T) {
checks := []expandURLCases{
{
Expand Down
39 changes: 39 additions & 0 deletions cmd/builds_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,45 @@ c4aed81c-d1ca-4ff1-ab89-d2151264e1a3 2014-01-05T00:00:00UTC
`, "output")
}

func TestBuildsListLimit(t *testing.T) {
t.Parallel()
cf, server, err := testutil.NewTestServerAndClient()
if err != nil {
t.Fatal(err)
}
defer server.Close()
var b bytes.Buffer
cmdr := DeisCmd{WOut: &b, ConfigFile: cf}

server.Mux.HandleFunc("/v2/apps/foo/builds/", func(w http.ResponseWriter, r *http.Request) {
testutil.SetHeaders(w)
fmt.Fprintf(w, `{
"count": 2,
"next": null,
"previous": null,
"results": [
{
"app": "foo",
"created": "2014-01-01T00:00:00UTC",
"dockerfile": "",
"image": "",
"owner": "",
"procfile": {},
"sha": "",
"updated": "",
"uuid": "de1bf5b5-4a72-4f94-a10c-d2a3741cdf75"
}
]
}`)
})

err = cmdr.BuildsList("foo", 1)
assert.NoErr(t, err)
assert.Equal(t, b.String(), `=== foo Builds (1 of 2)
de1bf5b5-4a72-4f94-a10c-d2a3741cdf75 2014-01-01T00:00:00UTC
`, "output")
}

func TestBuildsCreate(t *testing.T) {
t.Parallel()
cf, server, err := testutil.NewTestServerAndClient()
Expand Down
49 changes: 48 additions & 1 deletion cmd/certs_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ func TestCertsList(t *testing.T) {
server.Mux.HandleFunc("/v2/certs/", func(w http.ResponseWriter, r *http.Request) {
testutil.SetHeaders(w)
fmt.Fprintf(w, `{
"count": 2,
"count": 4,
"next": null,
"previous": null,
"results": [
Expand Down Expand Up @@ -104,6 +104,53 @@ func TestCertsList(t *testing.T) {
assert.Equal(t, b.String(), "No certs\n", "output")
}

func TestCertsListLimit(t *testing.T) {
t.Parallel()
cf, server, err := testutil.NewTestServerAndClient()
if err != nil {
t.Fatal(err)
}
defer server.Close()
var b bytes.Buffer
cmdr := DeisCmd{WOut: &b, ConfigFile: cf}

server.Mux.HandleFunc("/v2/certs/", func(w http.ResponseWriter, r *http.Request) {
testutil.SetHeaders(w)
fmt.Fprintf(w, `{
"count": 4,
"next": null,
"previous": null,
"results": [
{
"name": "test-example-com",
"common_name": "test.example.com",
"san": [
"test.com",
"example.com"
],
"domains": [
"test.com",
"example.com"
],
"created": "2016-06-09T00:00:00UTC",
"updated": "2016-06-09T00:00:00UTC",
"expires": "2014-11-10T00:00:00UTC",
"fingerprint": "12:34:56:78:90"
}
]
}`)
})

err = cmdr.CertsList(1, time.Date(2016, time.June, 9, 0, 0, 0, 0, time.UTC))
assert.NoErr(t, err)

assert.Equal(t, b.String(), ` Name | Common Name | SubjectAltName | Expires | Fingerprint | Domains | Updated | Created
+------------------+------------------+----------------------+-----------------------+-----------------+----------------------+------------+------------+
test-example-com | test.example.com | test.com,example.com | 10 Nov 2014 (expired) | 12:34[...]78:90 | test.com,example.com | 9 Jun 2016 | 9 Jun 2016
`, "output")

}

func TestCertsInfo(t *testing.T) {
t.Parallel()
cf, server, err := testutil.NewTestServerAndClient()
Expand Down
Loading