init_test.go 2.66 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
// Copyright 2018 The kubecfg authors
//
//
//    Licensed under the Apache License, Version 2.0 (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//    See the License for the specific language governing permissions and
//    limitations under the License.

bryanl's avatar
bryanl committed
16
package clicmd
17

bryanl's avatar
bryanl committed
18 19 20 21 22
import (
	"os"
	"path/filepath"
	"testing"

bryanl's avatar
bryanl committed
23
	"github.com/ksonnet/ksonnet/pkg/actions"
bryanl's avatar
bryanl committed
24 25 26 27
	"github.com/stretchr/testify/require"
)

func Test_initCmd(t *testing.T) {
bryanl's avatar
bryanl committed
28 29 30 31 32 33 34
	cwd, err := os.Getwd()
	require.NoError(t, err)

	root := filepath.Join(cwd, "app")

	cases := []cmdTestCase{
		{
35 36 37 38 39 40
			name: "in general",
			args: []string{"init", "app",
				"--namespace", "new-namespace",
				"--server", "http://127.0.0.1",
				"--env", "env-name",
			},
bryanl's avatar
bryanl committed
41 42
			action: actionInit,
			expected: map[string]interface{}{
43 44
				actions.OptionFs:                    appFs,
				actions.OptionName:                  "app",
45
				actions.OptionEnvName:               "env-name",
46 47
				actions.OptionRootPath:              root,
				actions.OptionServer:                "http://127.0.0.1",
48
				actions.OptionSpecFlag:              "version:v1.8.0",
49
				actions.OptionNamespace:             "new-namespace",
50
				actions.OptionSkipDefaultRegistries: false,
bryanl's avatar
bryanl committed
51 52
			},
		},
bryanl's avatar
bryanl committed
53 54
	}

bryanl's avatar
bryanl committed
55
	runTestCmd(t, cases)
bryanl's avatar
bryanl committed
56
}
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90

func Test_genKsRoot(t *testing.T) {
	cases := []struct {
		name     string
		appName  string
		ksDir    string
		wd       string
		expected string
		isErr    bool
	}{
		{name: "no wd", appName: "app", ksDir: "/root", expected: "/root/app"},
		{name: "with abs wd", appName: "app", ksDir: "/root", wd: "/custom", expected: "/custom"},
		{name: "with rel wd #1", appName: "app", ksDir: "/root", wd: "./custom", expected: "/root/custom"},
		{name: "with rel wd #2", appName: "app", ksDir: "/root", wd: "custom", expected: "/root/custom"},
		{name: "with rel wd #2", appName: "app", ksDir: "/root", wd: "../custom", expected: "/custom"},
		{name: "missing ksDir", appName: "app", wd: "./custom", isErr: true},
		{name: "missing appName and wd", ksDir: "/root", isErr: true},
	}

	for _, tc := range cases {
		t.Run(tc.name, func(t *testing.T) {
			got, err := genKsRoot(tc.appName, tc.ksDir, tc.wd)
			if tc.isErr {
				if err == nil {
					t.Errorf("genKsRoot expected error, but none was received")
				}
			} else {
				if got != tc.expected {
					t.Errorf("genKsRoot got %q; expected %q", got, tc.expected)
				}
			}
		})
	}
}