mirror of
https://github.com/FlipsideCrypto/convox.git
synced 2026-02-06 10:56:56 +00:00
97 lines
2.8 KiB
Go
97 lines
2.8 KiB
Go
package cli_test
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
|
|
"github.com/convox/convox/pkg/cli"
|
|
mocksdk "github.com/convox/convox/pkg/mock/sdk"
|
|
"github.com/convox/convox/pkg/structs"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestPs(t *testing.T) {
|
|
testClient(t, func(e *cli.Engine, i *mocksdk.Interface) {
|
|
i.On("ProcessList", "app1", structs.ProcessListOptions{}).Return(structs.Processes{*fxProcess(), *fxProcessPending()}, nil)
|
|
|
|
res, err := testExecute(e, "ps -a app1", nil)
|
|
require.NoError(t, err)
|
|
require.Equal(t, 0, res.Code)
|
|
res.RequireStderr(t, []string{""})
|
|
res.RequireStdout(t, []string{
|
|
"ID SERVICE STATUS RELEASE STARTED COMMAND",
|
|
"pid1 name running release1 2 days ago command",
|
|
"pid1 name pending release1 2 days ago command",
|
|
})
|
|
})
|
|
}
|
|
|
|
func TestPsError(t *testing.T) {
|
|
testClient(t, func(e *cli.Engine, i *mocksdk.Interface) {
|
|
i.On("ProcessList", "app1", structs.ProcessListOptions{}).Return(nil, fmt.Errorf("err1"))
|
|
|
|
res, err := testExecute(e, "ps -a app1", nil)
|
|
require.NoError(t, err)
|
|
require.Equal(t, 1, res.Code)
|
|
res.RequireStderr(t, []string{"ERROR: err1"})
|
|
res.RequireStdout(t, []string{""})
|
|
})
|
|
}
|
|
|
|
func TestPsInfo(t *testing.T) {
|
|
testClient(t, func(e *cli.Engine, i *mocksdk.Interface) {
|
|
i.On("ProcessGet", "app1", "pid1").Return(fxProcess(), nil)
|
|
|
|
res, err := testExecute(e, "ps info pid1 -a app1", nil)
|
|
require.NoError(t, err)
|
|
require.Equal(t, 0, res.Code)
|
|
res.RequireStderr(t, []string{""})
|
|
res.RequireStdout(t, []string{
|
|
"Id pid1",
|
|
"App app1",
|
|
"Command command",
|
|
"Instance instance",
|
|
"Release release1",
|
|
"Service name",
|
|
"Started 2 days ago",
|
|
"Status running",
|
|
})
|
|
})
|
|
}
|
|
|
|
func TestPsInfoError(t *testing.T) {
|
|
testClient(t, func(e *cli.Engine, i *mocksdk.Interface) {
|
|
i.On("ProcessGet", "app1", "pid1").Return(nil, fmt.Errorf("err1"))
|
|
|
|
res, err := testExecute(e, "ps info pid1 -a app1", nil)
|
|
require.NoError(t, err)
|
|
require.Equal(t, 1, res.Code)
|
|
res.RequireStderr(t, []string{"ERROR: err1"})
|
|
res.RequireStdout(t, []string{""})
|
|
})
|
|
}
|
|
|
|
func TestPsStop(t *testing.T) {
|
|
testClient(t, func(e *cli.Engine, i *mocksdk.Interface) {
|
|
i.On("ProcessStop", "app1", "pid1").Return(nil)
|
|
|
|
res, err := testExecute(e, "ps stop pid1 -a app1", nil)
|
|
require.NoError(t, err)
|
|
require.Equal(t, 0, res.Code)
|
|
res.RequireStderr(t, []string{""})
|
|
res.RequireStdout(t, []string{"Stopping pid1... OK"})
|
|
})
|
|
}
|
|
|
|
func TestPsStopError(t *testing.T) {
|
|
testClient(t, func(e *cli.Engine, i *mocksdk.Interface) {
|
|
i.On("ProcessStop", "app1", "pid1").Return(fmt.Errorf("err1"))
|
|
|
|
res, err := testExecute(e, "ps stop pid1 -a app1", nil)
|
|
require.NoError(t, err)
|
|
require.Equal(t, 1, res.Code)
|
|
res.RequireStderr(t, []string{"ERROR: err1"})
|
|
res.RequireStdout(t, []string{"Stopping pid1... "})
|
|
})
|
|
}
|