Skip to content

Commit

Permalink
test: Add more kubectx tests (#111)
Browse files Browse the repository at this point in the history
  • Loading branch information
feloy authored and ahmetb committed Dec 25, 2018
1 parent 845f3b6 commit acbf324
Show file tree
Hide file tree
Showing 4 changed files with 140 additions and 0 deletions.
22 changes: 22 additions & 0 deletions test/common.bash
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#!/usr/bin/env bats

# bats setup function
setup() {
export XDG_CACHE_HOME="$(mktemp -d)"
export KUBECONFIG="${XDG_CACHE_HOME}/config"
}

# bats teardown function
teardown() {
rm -rf "$XDG_CACHE_HOME"
}

use_config() {
cp "$BATS_TEST_DIRNAME/testdata/$1" $KUBECONFIG
}

# wrappers around "kubectl config" command

get_context() {
kubectl config current-context
}
76 changes: 76 additions & 0 deletions test/kubectx.bats
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,88 @@

COMMAND="$BATS_TEST_DIRNAME/../kubectx"

load common

@test "--help should not fail" {
run ${COMMAND} --help
echo "$output"
[ "$status" -eq 0 ]
}

@test "-h should not fail" {
run ${COMMAND} -h
echo "$output"
[ "$status" -eq 0 ]
}

@test "switch to previous context when no one exists" {
use_config config1

run ${COMMAND} -
echo "$output"
[ "$status" -eq 1 ]
[[ "$output" = "error: No previous context found." ]]
}

@test "create one context and list contexts" {
use_config config1

run ${COMMAND}
echo "$output"
[ "$status" -eq 0 ]
[[ "$output" = "user1@cluster1" ]]
}

@test "create two contexts and list contexts" {
use_config config2

run ${COMMAND}
echo "$output"
[ "$status" -eq 0 ]
[[ "$output" = *"user1@cluster1"* ]]
[[ "$output" = *"user2@cluster1"* ]]
}

@test "create two contexts and select contexts" {
use_config config2

run ${COMMAND} user1@cluster1
echo "$output"
[ "$status" -eq 0 ]
echo "$(get_context)"
[[ "$(get_context)" = "user1@cluster1" ]]

run ${COMMAND} user2@cluster1
echo "$output"
[ "$status" -eq 0 ]
echo "$(get_context)"
[[ "$(get_context)" = "user2@cluster1" ]]
}

@test "create two contexts and switch between contexts" {
use_config config2

run ${COMMAND} user1@cluster1
echo "$output"
[ "$status" -eq 0 ]
echo "$(get_context)"
[[ "$(get_context)" = "user1@cluster1" ]]

run ${COMMAND} user2@cluster1
echo "$output"
[ "$status" -eq 0 ]
echo "$(get_context)"
[[ "$(get_context)" = "user2@cluster1" ]]

run ${COMMAND} -
echo "$output"
[ "$status" -eq 0 ]
echo "$(get_context)"
[[ "$(get_context)" = "user1@cluster1" ]]

run ${COMMAND} -
echo "$output"
[ "$status" -eq 0 ]
echo "$(get_context)"
[[ "$(get_context)" = "user2@cluster1" ]]
}
18 changes: 18 additions & 0 deletions test/testdata/config1
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# config with one context

apiVersion: v1
clusters:
- cluster:
server: ""
name: cluster1
contexts:
- context:
cluster: cluster1
user: user1
name: user1@cluster1
current-context: ""
kind: Config
preferences: {}
users:
- name: user1
user: {}
24 changes: 24 additions & 0 deletions test/testdata/config2
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# config with two contexts

apiVersion: v1
clusters:
- cluster:
server: ""
name: cluster1
contexts:
- context:
cluster: cluster1
user: user1
name: user1@cluster1
- context:
cluster: cluster1
user: user2
name: user2@cluster1
current-context: ""
kind: Config
preferences: {}
users:
- name: user1
user: {}
- name: user2
user: {}

0 comments on commit acbf324

Please sign in to comment.