sal/rhai_tests/kubernetes/01_namespace_operations.rhai
Mahmoud-Emad e01b83f12a
Some checks are pending
Test Publishing Setup / Test Publishing Setup (pull_request) Waiting to run
feat: Add CI/CD workflows for testing and publishing SAL crates
- Add a workflow for testing the publishing setup
- Add a workflow for publishing SAL crates to crates.io
- Improve crate metadata and version management
- Add optional dependencies for modularity
- Improve documentation for publishing and usage
2025-07-01 08:34:20 +03:00

153 lines
4.4 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env rhai
// Test 1: Namespace Operations
// This test covers namespace creation, existence checking, and listing
// Helper function to generate timestamp for unique names
fn timestamp() {
let now = 1640995200; // Base timestamp
let random = (now % 1000000).to_string();
random
}
print("=== Kubernetes Namespace Operations Test ===");
print("");
// Test namespace creation and existence checking
print("Test 1: Namespace Creation and Existence");
print("----------------------------------------");
// Create a test namespace
let test_namespace = "sal-test-ns-" + timestamp();
print("Creating test namespace: " + test_namespace);
try {
let km = kubernetes_manager_new("default");
// Check if namespace exists before creation
let exists_before = km.namespace_exists(test_namespace);
print("Namespace exists before creation: " + exists_before);
if exists_before {
print("⚠️ Namespace already exists, this is unexpected");
} else {
print("✅ Namespace doesn't exist yet (expected)");
}
// Create the namespace
print("Creating namespace...");
km.create_namespace(test_namespace);
print("✅ Namespace created successfully");
// Check if namespace exists after creation
let exists_after = km.namespace_exists(test_namespace);
print("Namespace exists after creation: " + exists_after);
if exists_after {
print("✅ Namespace exists after creation (expected)");
} else {
print("❌ Namespace doesn't exist after creation (unexpected)");
throw "Namespace creation verification failed";
}
// Test idempotent creation (should not error)
print("Testing idempotent creation...");
km.create_namespace(test_namespace);
print("✅ Idempotent creation successful");
} catch (error) {
print("❌ Namespace creation test failed: " + error);
throw error;
}
print("");
// Test namespace listing
print("Test 2: Namespace Listing");
print("-------------------------");
try {
let km = kubernetes_manager_new("default");
// List all namespaces
let namespaces = km.namespaces_list();
print("Found " + namespaces.len() + " namespaces");
if namespaces.len() == 0 {
print("⚠️ No namespaces found, this might indicate a connection issue");
} else {
print("✅ Successfully retrieved namespace list");
// Check if our test namespace is in the list
let found_test_ns = false;
for ns in namespaces {
if ns.name == test_namespace {
found_test_ns = true;
break;
}
}
if found_test_ns {
print("✅ Test namespace found in namespace list");
} else {
print("⚠️ Test namespace not found in list (might be propagation delay)");
}
}
} catch (error) {
print("❌ Namespace listing test failed: " + error);
throw error;
}
print("");
// Test namespace manager creation
print("Test 3: Namespace Manager Creation");
print("----------------------------------");
try {
// Create manager for our test namespace
let test_km = kubernetes_manager_new(test_namespace);
// Verify the manager's namespace
let manager_namespace = namespace(test_km);
print("Manager namespace: " + manager_namespace);
if manager_namespace == test_namespace {
print("✅ Manager created for correct namespace");
} else {
print("❌ Manager namespace mismatch");
throw "Manager namespace verification failed";
}
} catch (error) {
print("❌ Namespace manager creation test failed: " + error);
throw error;
}
print("");
// Cleanup
print("Test 4: Namespace Cleanup");
print("-------------------------");
try {
let km = kubernetes_manager_new("default");
// Delete the test namespace
print("Deleting test namespace: " + test_namespace);
km.delete_namespace(test_namespace);
print("✅ Namespace deletion initiated");
// Note: Namespace deletion is asynchronous, so we don't immediately check existence
print(" Namespace deletion is asynchronous and may take time to complete");
} catch (error) {
print("❌ Namespace cleanup failed: " + error);
// Don't throw here as this is cleanup
}
print("");
print("=== Namespace Operations Test Complete ===");
print("✅ All namespace operation tests passed");