Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion k8s/instance/list
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,4 @@ echo "$PODS" | jq --argjson limit ${LIMIT:-10} '{
launch_time: .metadata.creationTimestamp,
spot: (.spec.nodeName // "" | test("spot"; "i"))
})
}'
}'
107 changes: 107 additions & 0 deletions k8s/instance/tests/build_context.bats
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
#!/usr/bin/env bats
# =============================================================================
# Unit tests for instance/build_context - instance parameter extraction
# =============================================================================

setup() {
export PROJECT_ROOT="$(cd "$BATS_TEST_DIRNAME/../../.." && pwd)"
source "$PROJECT_ROOT/testing/assertions.sh"

export SCRIPT="$BATS_TEST_DIRNAME/../build_context"

export CONTEXT='{
"arguments": {
"application_id": "app-123",
"scope_id": "scope-456",
"deployment_id": "deploy-789"
}
}'

export LIMIT=10
}

teardown() {
unset CONTEXT LIMIT APPLICATION_ID SCOPE_ID DEPLOYMENT_ID
}

# =============================================================================
# Success flow
# =============================================================================
@test "instance/build_context: exports all parameters correctly" {
source "$SCRIPT"

assert_equal "$APPLICATION_ID" "app-123"
assert_equal "$SCOPE_ID" "scope-456"
assert_equal "$DEPLOYMENT_ID" "deploy-789"
assert_equal "$LIMIT" "10"
}

@test "instance/build_context: produces no stdout output" {
run bash -c 'source "$SCRIPT"'

assert_equal "$status" "0"
assert_equal "$output" ""
}

# =============================================================================
# Array argument handling
# =============================================================================
@test "instance/build_context: handles array arguments (takes first element)" {
export CONTEXT='{
"arguments": {
"application_id": ["app-first", "app-second"],
"scope_id": ["scope-first", "scope-second"],
"deployment_id": ["deploy-first", "deploy-second"]
}
}'

source "$SCRIPT"

assert_equal "$APPLICATION_ID" "app-first"
assert_equal "$SCOPE_ID" "scope-first"
assert_equal "$DEPLOYMENT_ID" "deploy-first"
}

# =============================================================================
# Missing / null arguments
# =============================================================================
@test "instance/build_context: handles missing arguments" {
export CONTEXT='{
"arguments": {}
}'

source "$SCRIPT"

assert_equal "$APPLICATION_ID" "null"
assert_equal "$SCOPE_ID" "null"
assert_equal "$DEPLOYMENT_ID" "null"
}

@test "instance/build_context: handles null arguments object" {
export CONTEXT='{}'

source "$SCRIPT"

assert_empty "$APPLICATION_ID"
assert_empty "$SCOPE_ID"
assert_empty "$DEPLOYMENT_ID"
}

# =============================================================================
# LIMIT handling
# =============================================================================
@test "instance/build_context: uses default LIMIT of 10 when not set" {
unset LIMIT

source "$SCRIPT"

assert_equal "$LIMIT" "10"
}

@test "instance/build_context: preserves custom LIMIT" {
export LIMIT=50

source "$SCRIPT"

assert_equal "$LIMIT" "50"
}
Loading