Skip to content
This repository was archived by the owner on Jan 22, 2026. It is now read-only.

Commit 8c6191f

Browse files
committed
Single namespace testing
1 parent 743645c commit 8c6191f

File tree

2 files changed

+58
-52
lines changed

2 files changed

+58
-52
lines changed

action.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,11 +87,13 @@ runs:
8787
sudo mkdir -p /etc/jumpstarter/exporters
8888
sudo chown $USER /etc/jumpstarter/exporters
8989
90+
export JS_NAMESPACE="jumpstarter-lab"
91+
9092
. .venv/bin/activate
9193
9294
export JUMPSTARTER_GRPC_INSECURE=1
9395
94-
kubectl create -n default sa test-client-sa
95-
kubectl create -n default sa test-exporter-sa
96+
kubectl create -n "${JS_NAMESPACE}" sa test-client-sa
97+
kubectl create -n "${JS_NAMESPACE}" sa test-exporter-sa
9698
9799
bats --show-output-of-passing-tests --verbose-run "$GITHUB_ACTION_PATH"/tests.bats

tests.bats

Lines changed: 54 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
JS_NAMESPACE="${JS_NAMESPACE:-jumpstarter-lab}"
2+
13
setup() {
24
bats_load_library bats-support
35
bats_load_library bats-assert
@@ -9,30 +11,30 @@ wait_for_exporter() {
911
# After a lease operation the exporter is disconnecting from controller and reconnecting.
1012
# The disconnect can take a short while so let's avoid catching the pre-disconnect state and early return
1113
sleep 2
12-
kubectl -n default wait --timeout 20m --for=condition=Online --for=condition=Registered \
14+
kubectl -n "${JS_NAMESPACE}" wait --timeout 20m --for=condition=Online --for=condition=Registered \
1315
exporters.jumpstarter.dev/test-exporter-oidc
14-
kubectl -n default wait --timeout 20m --for=condition=Online --for=condition=Registered \
16+
kubectl -n "${JS_NAMESPACE}" wait --timeout 20m --for=condition=Online --for=condition=Registered \
1517
exporters.jumpstarter.dev/test-exporter-sa
16-
kubectl -n default wait --timeout 20m --for=condition=Online --for=condition=Registered \
18+
kubectl -n "${JS_NAMESPACE}" wait --timeout 20m --for=condition=Online --for=condition=Registered \
1719
exporters.jumpstarter.dev/test-exporter-legacy
1820
}
1921

2022
@test "can create clients with admin cli" {
21-
jmp admin create client test-client-oidc --unsafe --out /dev/null \
23+
jmp admin create client -n "${JS_NAMESPACE}" test-client-oidc --unsafe --out /dev/null \
2224
--oidc-username dex:test-client-oidc
23-
jmp admin create client test-client-sa --unsafe --out /dev/null \
24-
--oidc-username dex:system:serviceaccount:default:test-client-sa
25-
jmp admin create client test-client-legacy --unsafe --save
25+
jmp admin create client -n "${JS_NAMESPACE}" test-client-sa --unsafe --out /dev/null \
26+
--oidc-username dex:system:serviceaccount:"${JS_NAMESPACE}":test-client-sa
27+
jmp admin create client -n "${JS_NAMESPACE}" test-client-legacy --unsafe --save
2628
}
2729

2830
@test "can create exporters with admin cli" {
29-
jmp admin create exporter test-exporter-oidc --out /dev/null \
31+
jmp admin create exporter -n "${JS_NAMESPACE}" test-exporter-oidc --out /dev/null \
3032
--oidc-username dex:test-exporter-oidc \
3133
--label example.com/board=oidc
32-
jmp admin create exporter test-exporter-sa --out /dev/null \
33-
--oidc-username dex:system:serviceaccount:default:test-exporter-sa \
34+
jmp admin create exporter -n "${JS_NAMESPACE}" test-exporter-sa --out /dev/null \
35+
--oidc-username dex:system:serviceaccount:"${JS_NAMESPACE}":test-exporter-sa \
3436
--label example.com/board=sa
35-
jmp admin create exporter test-exporter-legacy --save \
37+
jmp admin create exporter -n "${JS_NAMESPACE}" test-exporter-legacy --save \
3638
--label example.com/board=legacy
3739
}
3840

@@ -41,31 +43,31 @@ wait_for_exporter() {
4143
jmp config exporter list
4244

4345
jmp login --client test-client-oidc \
44-
--endpoint "$ENDPOINT" --namespace default --name test-client-oidc \
46+
--endpoint "$ENDPOINT" --namespace "${JS_NAMESPACE}" --name test-client-oidc \
4547
--issuer https://dex.dex.svc.cluster.local:5556 \
4648
--username test-client-oidc@example.com --password password --unsafe
4749

4850
jmp login --client test-client-oidc-provisioning \
49-
--endpoint "$ENDPOINT" --namespace default --name "" \
51+
--endpoint "$ENDPOINT" --namespace "${JS_NAMESPACE}" --name "" \
5052
--issuer https://dex.dex.svc.cluster.local:5556 \
5153
--username test-client-oidc-provisioning@example.com --password password --unsafe
5254

5355
jmp login --client test-client-sa \
54-
--endpoint "$ENDPOINT" --namespace default --name test-client-sa \
56+
--endpoint "$ENDPOINT" --namespace "${JS_NAMESPACE}" --name test-client-sa \
5557
--issuer https://dex.dex.svc.cluster.local:5556 \
5658
--connector-id kubernetes \
57-
--token $(kubectl create -n default token test-client-sa) --unsafe
59+
--token $(kubectl create -n "${JS_NAMESPACE}" token test-client-sa) --unsafe
5860

5961
jmp login --exporter test-exporter-oidc \
60-
--endpoint "$ENDPOINT" --namespace default --name test-exporter-oidc \
62+
--endpoint "$ENDPOINT" --namespace "${JS_NAMESPACE}" --name test-exporter-oidc \
6163
--issuer https://dex.dex.svc.cluster.local:5556 \
6264
--username test-exporter-oidc@example.com --password password
6365

6466
jmp login --exporter test-exporter-sa \
65-
--endpoint "$ENDPOINT" --namespace default --name test-exporter-sa \
67+
--endpoint "$ENDPOINT" --namespace "${JS_NAMESPACE}" --name test-exporter-sa \
6668
--issuer https://dex.dex.svc.cluster.local:5556 \
6769
--connector-id kubernetes \
68-
--token $(kubectl create -n default token test-exporter-sa)
70+
--token $(kubectl create -n "${JS_NAMESPACE}" token test-exporter-sa)
6971

7072
go run github.com/mikefarah/yq/v4@latest -i ". * load(\"$GITHUB_ACTION_PATH/exporter.yaml\")" \
7173
/etc/jumpstarter/exporters/test-exporter-oidc.yaml
@@ -104,10 +106,12 @@ EOF
104106
@test "can specify client config only using environment variables" {
105107
wait_for_exporter
106108

107-
JMP_NAMEPSACE=default \
109+
# we feed the namespace into JMP_NAMESPACE along with all the other client details
110+
# to verify that the client can operate without a config file
111+
JMP_NAMESPACE="${JS_NAMESPACE}" \
108112
JMP_NAME=test-exporter-legacy \
109-
JMP_ENDPOINT=$(kubectl get clients.jumpstarter.dev -n default test-client-legacy -o 'jsonpath={.status.endpoint}') \
110-
JMP_TOKEN=$(kubectl get secrets -n default test-client-legacy-client -o 'jsonpath={.data.token}' | base64 -d) \
113+
JMP_ENDPOINT=$(kubectl get clients.jumpstarter.dev -n "${JS_NAMESPACE}" test-client-legacy -o 'jsonpath={.status.endpoint}') \
114+
JMP_TOKEN=$(kubectl get secrets -n "${JS_NAMESPACE}" test-client-legacy-client -o 'jsonpath={.data.token}' | base64 -d) \
111115
jmp shell --selector example.com/board=oidc j power on
112116
}
113117

@@ -134,39 +138,39 @@ EOF
134138
}
135139

136140
@test "can get crds with admin cli" {
137-
jmp admin get client
138-
jmp admin get exporter
139-
jmp admin get lease
141+
jmp admin get client --namespace "${JS_NAMESPACE}"
142+
jmp admin get exporter --namespace "${JS_NAMESPACE}"
143+
jmp admin get lease --namespace "${JS_NAMESPACE}"
140144
}
141145

142146
@test "can delete clients with admin cli" {
143-
kubectl -n default get secret test-client-oidc-client
144-
kubectl -n default get clients.jumpstarter.dev/test-client-oidc
145-
kubectl -n default get clients.jumpstarter.dev/test-client-sa
146-
kubectl -n default get clients.jumpstarter.dev/test-client-legacy
147-
148-
jmp admin delete client test-client-oidc --delete
149-
jmp admin delete client test-client-sa --delete
150-
jmp admin delete client test-client-legacy --delete
151-
152-
run ! kubectl -n default get secret test-client-oidc-client
153-
run ! kubectl -n default get clients.jumpstarter.dev/test-client-oidc
154-
run ! kubectl -n default get clients.jumpstarter.dev/test-client-sa
155-
run ! kubectl -n default get clients.jumpstarter.dev/test-client-legacy
147+
kubectl -n "${JS_NAMESPACE}" get secret test-client-oidc-client
148+
kubectl -n "${JS_NAMESPACE}" get clients.jumpstarter.dev/test-client-oidc
149+
kubectl -n "${JS_NAMESPACE}" get clients.jumpstarter.dev/test-client-sa
150+
kubectl -n "${JS_NAMESPACE}" get clients.jumpstarter.dev/test-client-legacy
151+
152+
jmp admin delete client --namespace "${JS_NAMESPACE}" test-client-oidc --delete
153+
jmp admin delete client --namespace "${JS_NAMESPACE}" test-client-sa --delete
154+
jmp admin delete client --namespace "${JS_NAMESPACE}" test-client-legacy --delete
155+
156+
run ! kubectl -n "${JS_NAMESPACE}" get secret test-client-oidc-client
157+
run ! kubectl -n "${JS_NAMESPACE}" get clients.jumpstarter.dev/test-client-oidc
158+
run ! kubectl -n "${JS_NAMESPACE}" get clients.jumpstarter.dev/test-client-sa
159+
run ! kubectl -n "${JS_NAMESPACE}" get clients.jumpstarter.dev/test-client-legacy
156160
}
157161

158162
@test "can delete exporters with admin cli" {
159-
kubectl -n default get secret test-exporter-oidc-exporter
160-
kubectl -n default get exporters.jumpstarter.dev/test-exporter-oidc
161-
kubectl -n default get exporters.jumpstarter.dev/test-exporter-sa
162-
kubectl -n default get exporters.jumpstarter.dev/test-exporter-legacy
163-
164-
jmp admin delete exporter test-exporter-oidc --delete
165-
jmp admin delete exporter test-exporter-sa --delete
166-
jmp admin delete exporter test-exporter-legacy --delete
167-
168-
run ! kubectl -n default get secret test-exporter-oidc-exporter
169-
run ! kubectl -n default get exporters.jumpstarter.dev/test-exporter-oidc
170-
run ! kubectl -n default get exporters.jumpstarter.dev/test-exporter-sa
171-
run ! kubectl -n default get exporters.jumpstarter.dev/test-exporter-legacy
163+
kubectl -n "${JS_NAMESPACE}" get secret test-exporter-oidc-exporter
164+
kubectl -n "${JS_NAMESPACE}" get exporters.jumpstarter.dev/test-exporter-oidc
165+
kubectl -n "${JS_NAMESPACE}" get exporters.jumpstarter.dev/test-exporter-sa
166+
kubectl -n "${JS_NAMESPACE}" get exporters.jumpstarter.dev/test-exporter-legacy
167+
168+
jmp admin delete exporter --namespace "${JS_NAMESPACE}" test-exporter-oidc --delete
169+
jmp admin delete exporter --namespace "${JS_NAMESPACE}" test-exporter-sa --delete
170+
jmp admin delete exporter --namespace "${JS_NAMESPACE}" test-exporter-legacy --delete
171+
172+
run ! kubectl -n "${JS_NAMESPACE}" get secret test-exporter-oidc-exporter
173+
run ! kubectl -n "${JS_NAMESPACE}" get exporters.jumpstarter.dev/test-exporter-oidc
174+
run ! kubectl -n "${JS_NAMESPACE}" get exporters.jumpstarter.dev/test-exporter-sa
175+
run ! kubectl -n "${JS_NAMESPACE}" get exporters.jumpstarter.dev/test-exporter-legacy
172176
}

0 commit comments

Comments
 (0)