mirror of
https://github.com/FlipsideCrypto/convox.git
synced 2026-02-06 10:56:56 +00:00
* add local rack * add instructions for trusting local ca * handle local rack idling * must install ca to system keychain * update tests * change router service type on linux local * trim platform name when passing to rack * restart microk8s after installation
129 lines
3.4 KiB
Go
129 lines
3.4 KiB
Go
package cli_test
|
|
|
|
import (
|
|
"fmt"
|
|
"io/ioutil"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"net/url"
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/convox/convox/pkg/cli"
|
|
mocksdk "github.com/convox/convox/pkg/mock/sdk"
|
|
mockstdcli "github.com/convox/convox/pkg/mock/stdcli"
|
|
"github.com/gorilla/mux"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestRacks(t *testing.T) {
|
|
testClient(t, func(e *cli.Engine, i *mocksdk.Interface) {
|
|
r := mux.NewRouter()
|
|
|
|
r.HandleFunc("/racks", func(w http.ResponseWriter, r *http.Request) {
|
|
w.Write([]byte(`[
|
|
{"name":"foo","organization":{"name":"test"},"status":"running"},
|
|
{"name":"other","organization":{"name":"test"},"status":"updating"}
|
|
]`))
|
|
}).Methods("GET")
|
|
|
|
ts := httptest.NewTLSServer(r)
|
|
|
|
tsu, err := url.Parse(ts.URL)
|
|
require.NoError(t, err)
|
|
|
|
err = ioutil.WriteFile(filepath.Join(e.Settings, "host"), []byte(tsu.Host), 0644)
|
|
require.NoError(t, err)
|
|
|
|
me := &mockstdcli.Executor{}
|
|
me.On("Execute", "kubectl", "get", "ns", "--selector=system=convox,type=rack", "--output=name").Return([]byte("namespace/dev\n"), nil)
|
|
me.On("Execute", "kubectl", "get", "namespace/dev", "-o", "jsonpath={.metadata.labels.rack}").Return([]byte("dev\n"), nil)
|
|
e.Executor = me
|
|
|
|
res, err := testExecute(e, "racks", nil)
|
|
require.NoError(t, err)
|
|
require.Equal(t, 0, res.Code)
|
|
res.RequireStderr(t, []string{""})
|
|
res.RequireStdout(t, []string{
|
|
"NAME STATUS ",
|
|
"local/dev running ",
|
|
"test/foo running ",
|
|
"test/other updating",
|
|
})
|
|
|
|
me.AssertExpectations(t)
|
|
})
|
|
}
|
|
|
|
func TestRacksLocalDisable(t *testing.T) {
|
|
orig := os.Getenv("CONVOX_LOCAL")
|
|
os.Setenv("CONVOX_LOCAL", "disable")
|
|
defer os.Setenv("CONVOX_LOCAL", orig)
|
|
|
|
testClient(t, func(e *cli.Engine, i *mocksdk.Interface) {
|
|
r := mux.NewRouter()
|
|
|
|
r.HandleFunc("/racks", func(w http.ResponseWriter, r *http.Request) {
|
|
w.Write([]byte(`[
|
|
{"name":"foo","organization":{"name":"test"},"status":"running"},
|
|
{"name":"other","organization":{"name":"test"},"status":"updating"}
|
|
]`))
|
|
}).Methods("GET")
|
|
|
|
ts := httptest.NewTLSServer(r)
|
|
|
|
tsu, err := url.Parse(ts.URL)
|
|
require.NoError(t, err)
|
|
|
|
err = ioutil.WriteFile(filepath.Join(e.Settings, "host"), []byte(tsu.Host), 0644)
|
|
require.NoError(t, err)
|
|
|
|
me := &mockstdcli.Executor{}
|
|
e.Executor = me
|
|
|
|
res, err := testExecute(e, "racks", nil)
|
|
require.NoError(t, err)
|
|
require.Equal(t, 0, res.Code)
|
|
res.RequireStderr(t, []string{""})
|
|
res.RequireStdout(t, []string{
|
|
"NAME STATUS ",
|
|
"test/foo running ",
|
|
"test/other updating",
|
|
})
|
|
|
|
me.AssertExpectations(t)
|
|
})
|
|
}
|
|
|
|
func TestRacksError(t *testing.T) {
|
|
testClient(t, func(e *cli.Engine, i *mocksdk.Interface) {
|
|
r := mux.NewRouter()
|
|
|
|
r.HandleFunc("/racks", func(w http.ResponseWriter, r *http.Request) {
|
|
w.WriteHeader(500)
|
|
w.Write([]byte("test"))
|
|
}).Methods("GET")
|
|
|
|
ts := httptest.NewTLSServer(r)
|
|
|
|
tsu, err := url.Parse(ts.URL)
|
|
require.NoError(t, err)
|
|
|
|
err = ioutil.WriteFile(filepath.Join(e.Settings, "host"), []byte(tsu.Host), 0644)
|
|
require.NoError(t, err)
|
|
|
|
me := &mockstdcli.Executor{}
|
|
me.On("Execute", "kubectl", "get", "ns", "--selector=system=convox,type=rack", "--output=name").Return(nil, fmt.Errorf("err1"))
|
|
e.Executor = me
|
|
|
|
res, err := testExecute(e, "racks", nil)
|
|
require.NoError(t, err)
|
|
require.Equal(t, 0, res.Code)
|
|
res.RequireStderr(t, []string{""})
|
|
res.RequireStdout(t, []string{
|
|
"NAME STATUS",
|
|
})
|
|
})
|
|
}
|