mirror of https://github.com/knative/client.git
Fix unit tests to use NAMESPACE value in k8s cluster env (#1421)
This commit is contained in:
parent
60c740f1e3
commit
1bf6c12074
|
|
@ -143,34 +143,50 @@ func TestGetNamespaceFallback(t *testing.T) {
|
||||||
defer os.RemoveAll(tempDir)
|
defer os.RemoveAll(tempDir)
|
||||||
assert.NilError(t, err)
|
assert.NilError(t, err)
|
||||||
|
|
||||||
tempFile := filepath.Join(tempDir, "mock")
|
t.Run("MockConfig", func(t *testing.T) {
|
||||||
err = ioutil.WriteFile(tempFile, []byte(BASIC_KUBECONFIG), test.FileModeReadWrite)
|
tempFile := filepath.Join(tempDir, "mock")
|
||||||
assert.NilError(t, err)
|
err = ioutil.WriteFile(tempFile, []byte(BASIC_KUBECONFIG), test.FileModeReadWrite)
|
||||||
|
assert.NilError(t, err)
|
||||||
|
|
||||||
testCmd := testCommandGenerator(true)
|
kp := &KnParams{KubeCfgPath: tempFile}
|
||||||
kp := &KnParams{KubeCfgPath: tempFile}
|
testCmd := testCommandGenerator(true)
|
||||||
testCmd.Execute()
|
testCmd.Execute()
|
||||||
actual, err := kp.GetNamespace(testCmd)
|
actual, err := kp.GetNamespace(testCmd)
|
||||||
assert.NilError(t, err)
|
assert.NilError(t, err)
|
||||||
assert.Assert(t, actual == "default")
|
if isInCluster() {
|
||||||
|
// In-cluster config overrides the mocked one in OpenShift CI
|
||||||
|
assert.Equal(t, actual, os.Getenv("NAMESPACE"))
|
||||||
|
} else {
|
||||||
|
assert.Equal(t, actual, "default")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
tempFile = filepath.Join(tempDir, "empty")
|
t.Run("EmptyConfig", func(t *testing.T) {
|
||||||
err = ioutil.WriteFile(tempFile, []byte(""), test.FileModeReadWrite)
|
tempFile := filepath.Join(tempDir, "empty")
|
||||||
assert.NilError(t, err)
|
err = ioutil.WriteFile(tempFile, []byte(""), test.FileModeReadWrite)
|
||||||
|
assert.NilError(t, err)
|
||||||
|
|
||||||
testCmd = testCommandGenerator(true)
|
kp := &KnParams{KubeCfgPath: tempFile}
|
||||||
kp = &KnParams{KubeCfgPath: tempFile}
|
testCmd := testCommandGenerator(true)
|
||||||
testCmd.Execute()
|
testCmd.Execute()
|
||||||
actual, err = kp.GetNamespace(testCmd)
|
actual, err := kp.GetNamespace(testCmd)
|
||||||
assert.NilError(t, err)
|
assert.NilError(t, err)
|
||||||
assert.Assert(t, actual == "default")
|
if isInCluster() {
|
||||||
|
// In-cluster config overrides the mocked one in OpenShift CI
|
||||||
|
assert.Equal(t, actual, os.Getenv("NAMESPACE"))
|
||||||
|
} else {
|
||||||
|
assert.Equal(t, actual, "default")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
testCmd = testCommandGenerator(true)
|
t.Run("MissingConfig", func(t *testing.T) {
|
||||||
kp = &KnParams{KubeCfgPath: filepath.Join(tempDir, "missing")}
|
kp := &KnParams{KubeCfgPath: filepath.Join(tempDir, "missing")}
|
||||||
testCmd.Execute()
|
testCmd := testCommandGenerator(true)
|
||||||
actual, err = kp.GetNamespace(testCmd)
|
testCmd.Execute()
|
||||||
assert.ErrorContains(t, err, "can not be found")
|
actual, err := kp.GetNamespace(testCmd)
|
||||||
assert.Assert(t, actual == "")
|
assert.ErrorContains(t, err, "can not be found")
|
||||||
|
assert.Equal(t, actual, "")
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestCurrentNamespace(t *testing.T) {
|
func TestCurrentNamespace(t *testing.T) {
|
||||||
|
|
@ -178,36 +194,65 @@ func TestCurrentNamespace(t *testing.T) {
|
||||||
defer os.RemoveAll(tempDir)
|
defer os.RemoveAll(tempDir)
|
||||||
assert.NilError(t, err)
|
assert.NilError(t, err)
|
||||||
|
|
||||||
tempFile := filepath.Join(tempDir, "empty")
|
t.Run("EmptyConfig", func(t *testing.T) {
|
||||||
err = ioutil.WriteFile(tempFile, []byte(""), test.FileModeReadWrite)
|
// Invalid kubeconfig
|
||||||
assert.NilError(t, err)
|
tempFile := filepath.Join(tempDir, "empty")
|
||||||
|
err = ioutil.WriteFile(tempFile, []byte(""), test.FileModeReadWrite)
|
||||||
|
assert.NilError(t, err)
|
||||||
|
|
||||||
// Invalid kubeconfig
|
kp := &KnParams{KubeCfgPath: tempFile}
|
||||||
kp := &KnParams{KubeCfgPath: tempFile}
|
actual, err := kp.CurrentNamespace()
|
||||||
actual, err := kp.CurrentNamespace()
|
if isInCluster() {
|
||||||
assert.Assert(t, err != nil)
|
// In-cluster config overrides the mocked one in OpenShift CI
|
||||||
assert.Assert(t, clientcmd.IsConfigurationInvalid(err))
|
assert.NilError(t, err)
|
||||||
assert.Assert(t, actual == "")
|
assert.Equal(t, actual, os.Getenv("NAMESPACE"))
|
||||||
|
} else {
|
||||||
|
assert.Assert(t, err != nil)
|
||||||
|
assert.Assert(t, clientcmd.IsConfigurationInvalid(err))
|
||||||
|
assert.Assert(t, actual == "")
|
||||||
|
}
|
||||||
|
|
||||||
// Missing kubeconfig
|
})
|
||||||
kp = &KnParams{KubeCfgPath: filepath.Join(tempDir, "missing")}
|
|
||||||
actual, err = kp.CurrentNamespace()
|
|
||||||
assert.Assert(t, err != nil)
|
|
||||||
assert.ErrorContains(t, err, "can not be found")
|
|
||||||
assert.Assert(t, actual == "")
|
|
||||||
|
|
||||||
// Variable namespace override
|
t.Run("MissingConfig", func(t *testing.T) {
|
||||||
kp = &KnParams{fixedCurrentNamespace: FakeNamespace}
|
// Missing kubeconfig
|
||||||
actual, err = kp.CurrentNamespace()
|
kp := &KnParams{KubeCfgPath: filepath.Join(tempDir, "missing")}
|
||||||
assert.NilError(t, err)
|
actual, err := kp.CurrentNamespace()
|
||||||
assert.Equal(t, actual, FakeNamespace)
|
assert.Assert(t, err != nil)
|
||||||
|
assert.ErrorContains(t, err, "can not be found")
|
||||||
|
assert.Assert(t, actual == "")
|
||||||
|
})
|
||||||
|
|
||||||
// Fallback to "default" namespace from mock kubeconfig
|
t.Run("MissingConfig", func(t *testing.T) {
|
||||||
tempFile = filepath.Join(tempDir, "mock")
|
// Variable namespace override
|
||||||
err = ioutil.WriteFile(tempFile, []byte(BASIC_KUBECONFIG), test.FileModeReadWrite)
|
kp := &KnParams{fixedCurrentNamespace: FakeNamespace}
|
||||||
assert.NilError(t, err)
|
actual, err := kp.CurrentNamespace()
|
||||||
kp = &KnParams{KubeCfgPath: tempFile}
|
assert.NilError(t, err)
|
||||||
actual, err = kp.CurrentNamespace()
|
assert.Equal(t, actual, FakeNamespace)
|
||||||
assert.NilError(t, err)
|
})
|
||||||
assert.Equal(t, actual, "default")
|
|
||||||
|
t.Run("MockConfig", func(t *testing.T) {
|
||||||
|
// Fallback to "default" namespace from mock kubeconfig
|
||||||
|
tempFile := filepath.Join(tempDir, "mock")
|
||||||
|
err = ioutil.WriteFile(tempFile, []byte(BASIC_KUBECONFIG), test.FileModeReadWrite)
|
||||||
|
assert.NilError(t, err)
|
||||||
|
kp := &KnParams{KubeCfgPath: tempFile}
|
||||||
|
actual, err := kp.CurrentNamespace()
|
||||||
|
assert.NilError(t, err)
|
||||||
|
if isInCluster() {
|
||||||
|
// In-cluster config overrides the mocked one in OpenShift CI
|
||||||
|
assert.Equal(t, actual, os.Getenv("NAMESPACE"))
|
||||||
|
} else {
|
||||||
|
assert.Equal(t, actual, "default")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// Inspired by client-go function
|
||||||
|
// https://github.com/kubernetes/client-go/blob/master/tools/clientcmd/client_config.go#L600-L606
|
||||||
|
func isInCluster() bool {
|
||||||
|
fi, err := os.Stat("/var/run/secrets/kubernetes.io/serviceaccount/token")
|
||||||
|
return os.Getenv("KUBERNETES_SERVICE_HOST") != "" &&
|
||||||
|
os.Getenv("KUBERNETES_SERVICE_PORT") != "" &&
|
||||||
|
err == nil && !fi.IsDir()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue