mirror of
https://github.com/ahmetb/kubectx.git
synced 2025-09-11 05:19:11 +00:00
add cli tests for kubens (#117)
* split bats test invocation by executable * add more cli tests for kubens * clean up kubens tests * small cleanup to kubens tests
This commit is contained in:
committed by
Ahmet Alp Balkan
parent
df557e4fa7
commit
402cc2c4b9
@@ -17,6 +17,14 @@ use_config() {
|
||||
|
||||
# wrappers around "kubectl config" command
|
||||
|
||||
get_context() {
|
||||
kubectl config current-context
|
||||
get_namespace() {
|
||||
kubectl config view -o=jsonpath="{.contexts[?(@.name==\"$(get_context)\")].context.namespace}"
|
||||
}
|
||||
|
||||
get_context() {
|
||||
kubectl config current-context
|
||||
}
|
||||
|
||||
switch_context() {
|
||||
kubectl config use-context "${1}"
|
||||
}
|
||||
|
@@ -1,15 +1,104 @@
|
||||
#!/usr/bin/env bats
|
||||
|
||||
COMMAND="${BATS_TEST_DIRNAME}/../kubens"
|
||||
export KUBECTL="$BATS_TEST_DIRNAME/../test/mock-kubectl"
|
||||
|
||||
load common
|
||||
|
||||
@test "--help should not fail" {
|
||||
run ${COMMAND} --help
|
||||
echo "$output">&2
|
||||
[ "$status" -eq 0 ]
|
||||
[[ "$status" -eq 0 ]]
|
||||
}
|
||||
|
||||
@test "-h should not fail" {
|
||||
run ${COMMAND} -h
|
||||
echo "$output">&2
|
||||
[ "$status" -eq 0 ]
|
||||
[[ "$status" -eq 0 ]]
|
||||
}
|
||||
|
||||
@test "list namespaces when no kubeconfig exists" {
|
||||
run ${COMMAND}
|
||||
echo "$output"
|
||||
[[ "$status" -eq 1 ]]
|
||||
[[ "$output" = *"current-context is not set"* ]]
|
||||
}
|
||||
|
||||
@test "list namespaces" {
|
||||
use_config config1
|
||||
switch_context user1@cluster1
|
||||
|
||||
run ${COMMAND}
|
||||
echo "$output"
|
||||
[[ "$status" -eq 0 ]]
|
||||
[[ "$output" = *"ns1"* ]]
|
||||
[[ "$output" = *"ns2"* ]]
|
||||
}
|
||||
|
||||
@test "switch to existing namespace" {
|
||||
use_config config1
|
||||
switch_context user1@cluster1
|
||||
|
||||
run ${COMMAND} "ns1"
|
||||
echo "$output"
|
||||
[[ "$status" -eq 0 ]]
|
||||
[[ "$output" = *'Active namespace is "ns1"'* ]]
|
||||
}
|
||||
|
||||
@test "switch to non-existing namespace" {
|
||||
use_config config1
|
||||
switch_context user1@cluster1
|
||||
|
||||
run ${COMMAND} "unknown-namespace"
|
||||
echo "$output"
|
||||
[[ "$status" -eq 1 ]]
|
||||
[[ "$output" = *'no namespace exists with name "unknown-namespace"'* ]]
|
||||
}
|
||||
|
||||
@test "switch between namespaces" {
|
||||
use_config config1
|
||||
switch_context user1@cluster1
|
||||
|
||||
run ${COMMAND} ns1
|
||||
echo "$output"
|
||||
[[ "$status" -eq 0 ]]
|
||||
echo "$(get_namespace)"
|
||||
[[ "$(get_namespace)" = "ns1" ]]
|
||||
|
||||
run ${COMMAND} ns2
|
||||
echo "$output"
|
||||
[[ "$status" -eq 0 ]]
|
||||
echo "$(get_namespace)"
|
||||
[[ "$(get_namespace)" = "ns2" ]]
|
||||
|
||||
run ${COMMAND} -
|
||||
echo "$output"
|
||||
[[ "$status" -eq 0 ]]
|
||||
echo "$(get_namespace)"
|
||||
[[ "$(get_namespace)" = "ns1" ]]
|
||||
|
||||
run ${COMMAND} -
|
||||
echo "$output"
|
||||
[[ "$status" -eq 0 ]]
|
||||
echo "$(get_namespace)"
|
||||
[[ "$(get_namespace)" = "ns2" ]]
|
||||
}
|
||||
|
||||
@test "switch to previous namespace when none exists" {
|
||||
use_config config1
|
||||
switch_context user1@cluster1
|
||||
|
||||
run ${COMMAND} -
|
||||
echo "$output"
|
||||
[[ "$status" -eq 1 ]]
|
||||
[[ "$output" = *"No previous namespace found for current context"* ]]
|
||||
}
|
||||
|
||||
@test "switch to namespace when current context is empty" {
|
||||
use_config config1
|
||||
|
||||
run ${COMMAND} -
|
||||
echo "$output"
|
||||
[[ "$status" -eq 1 ]]
|
||||
[[ "$output" = *"current-context is not set"* ]]
|
||||
}
|
||||
|
12
test/mock-kubectl
Executable file
12
test/mock-kubectl
Executable file
@@ -0,0 +1,12 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
[[ -n $DEBUG ]] && set -x
|
||||
|
||||
set -eou pipefail
|
||||
|
||||
if [[ $@ == *'get namespaces'* ]]; then
|
||||
echo "ns1"
|
||||
echo "ns2"
|
||||
else
|
||||
kubectl $@
|
||||
fi
|
Reference in New Issue
Block a user