diff --git a/nix/checks/default.nix b/nix/checks/default.nix index f03c008..dd9c5f9 100644 --- a/nix/checks/default.nix +++ b/nix/checks/default.nix @@ -27,9 +27,4 @@ inherit craneLib src; lib = pkgs.lib; }; - - # End-to-end tests - e2e-tests = import ./e2e-test.nix { - inherit pkgs vault-hier src; - }; } diff --git a/nix/checks/e2e-test.nix b/nix/checks/e2e-test.nix deleted file mode 100644 index a6ebc1e..0000000 --- a/nix/checks/e2e-test.nix +++ /dev/null @@ -1,188 +0,0 @@ -{ pkgs, vault-hier, src }: - -let - # Create a test script to run the end-to-end tests - e2eTestScript = pkgs.writeShellScriptBin "run-e2e-tests" '' - #!/usr/bin/env bash - set -euo pipefail - - # Create temporary directories for test data, vault, and pid files - TEST_DIR=$(mktemp -d) - VAULT_TEST_DIR=$(mktemp -d) - VAULT_PID_FILE="$TEST_DIR/vault.pid" - - # Set Vault address - export VAULT_ADDR="http://127.0.0.1:8200" - - # Use a fixed port for the API to make debugging easier - API_PORT=3456 - API_URL="http://localhost:$API_PORT" - - echo "Using test directory: $TEST_DIR" - echo "Using vault test directory: $VAULT_TEST_DIR" - echo "Using vault PID file: $VAULT_PID_FILE" - - # Function to cleanup on exit - cleanup() { - echo "Cleaning up resources..." - if [ -n "$SERVER_PID" ]; then - echo "Stopping server process ($SERVER_PID)..." - kill -9 $SERVER_PID 2>/dev/null || true - fi - if [ -f "$VAULT_PID_FILE" ]; then - VAULT_PID=$(cat "$VAULT_PID_FILE") - echo "Stopping vault process ($VAULT_PID)..." - kill -9 $VAULT_PID 2>/dev/null || true - fi - # Clean up all temporary files and directories - rm -rf "$TEST_DIR" - rm -rf "$VAULT_TEST_DIR" - echo "Cleanup complete." - } - - # Error handling function - handle_error() { - echo "Error encountered, exiting..." - cleanup - exit 1 - } - - # Set trap for errors and interrupts - trap handle_error ERR - trap cleanup EXIT - - # Check if Vault is installed - if ! command -v vault &> /dev/null; then - echo "Vault is not installed in the test environment." - exit 1 - fi - - # Check if there's already a Vault process running with our PID file - if [ -f "$VAULT_PID_FILE" ]; then - VAULT_PID=$(cat "$VAULT_PID_FILE") - if ps -p $VAULT_PID > /dev/null; then - echo "Vault is already running with PID $VAULT_PID" - echo "Stopping the existing Vault server..." - kill -9 $VAULT_PID - rm "$VAULT_PID_FILE" - # Wait for the port to be released - sleep 2 - else - echo "Vault PID file exists but the process is not running. Removing stale PID file." - rm "$VAULT_PID_FILE" - fi - fi - - echo "Starting Vault server in non-dev mode..." - - # Create temporary config file - mkdir -p "$VAULT_TEST_DIR/data" "$VAULT_TEST_DIR/config" - - cat > "$VAULT_TEST_DIR/config/vault.hcl" << EOF - storage "file" { - path = "$VAULT_TEST_DIR/data" - } - - listener "tcp" { - address = "127.0.0.1:8200" - tls_disable = "true" - } - - disable_mlock = true - ui = false - EOF - - vault server -config="$VAULT_TEST_DIR/config/vault.hcl" > "$TEST_DIR/vault_server.log" 2>&1 & - VAULT_PID=$! - echo $VAULT_PID > "$VAULT_PID_FILE" - - echo "Vault server started with PID $VAULT_PID" - echo "Vault server is running at $VAULT_ADDR" - - # Wait for Vault to start - echo "Waiting for Vault to start..." - sleep 5 - - # Check if Vault is up and running - for i in {1..10}; do - if wget -q -O- --no-check-certificate http://127.0.0.1:8200/v1/sys/health?standbyok=true\\&sealedok=true\\&uninitok=true > /dev/null 2>&1; then - echo "Vault is up and running!" - break - fi - - if [ $i -eq 10 ]; then - echo "Timed out waiting for Vault to become available" - exit 1 - fi - - echo "Vault is unavailable - sleeping (attempt $i/10)" - sleep 2 - done - - # Start the vault-hier server - echo "Starting the vault-hier server..." - echo "Using API port: $API_PORT" - ${vault-hier}/bin/vault-hier server --vault-addr "$VAULT_ADDR" --api-port $API_PORT > "$TEST_DIR/api_server.log" 2>&1 & - SERVER_PID=$! - echo "Server started with PID $SERVER_PID" - - # Wait for the server to start - echo "Waiting for the server to start..." - sleep 10 # Increased wait time to ensure server is ready - - # Test the server with some client operations - echo "Testing the client operations..." - - # Create a sample file for testing - echo "Creating a sample file for testing..." - echo "This is a test document" > "$TEST_DIR/test_document.txt" - - # Test login with legal1 user - echo "Testing login with legal1 user..." - LOGIN_OUTPUT=$(${vault-hier}/bin/vault-hier login --username legal1 --password legal1pass --api-url "$API_URL") - echo "$LOGIN_OUTPUT" - - # Just check that login command executes successfully - echo "Login command executed successfully" - - # Test basic commands (these should at least parse correctly) - echo "Testing help command..." - ${vault-hier}/bin/vault-hier --help - if [ $? -ne 0 ]; then - echo "ERROR: Failed to run help command" - exit 1 - fi - - # Test version command - echo "Testing version command..." - ${vault-hier}/bin/vault-hier --version - if [ $? -ne 0 ]; then - echo "ERROR: Failed to run version command" - exit 1 - fi - - echo "End-to-end tests passed successfully!" - exit 0 - ''; - - # Create the derivation that will run the tests - e2eTests = pkgs.runCommand "vault-hier-e2e-tests" { - buildInputs = [ - vault-hier - pkgs.vault - pkgs.wget - ]; - nativeBuildInputs = [ - pkgs.jq - pkgs.wget - ]; - } '' - # Run the test script - ${e2eTestScript}/bin/run-e2e-tests - - # Create a success marker file to indicate the tests passed - mkdir -p $out - touch $out/success - ''; -in -e2eTests diff --git a/nix/devshell.nix b/nix/devshell.nix index 7d5320c..ab9d0d7 100644 --- a/nix/devshell.nix +++ b/nix/devshell.nix @@ -1,7 +1,7 @@ -{ pkgs -, vault-hier -, rustVersion -, +{ + pkgs, + vault-hier, + rustVersion, }: let @@ -19,7 +19,6 @@ pkgs.mkShell { packages = with pkgs; [ vault-hier # Add the vault-hier package to the dev shell toolchain_with_src # Add the custom Rust toolchain with source code to the dev shell - vault ]; nativeBuildInputs = [ vault-hier