You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							146 lines
						
					
					
						
							4.8 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							146 lines
						
					
					
						
							4.8 KiB
						
					
					
				| #!/bin/bash | |
|  | |
| # Setup OpenBao for SSE Integration Testing | |
| # This script configures OpenBao with encryption keys for S3 SSE testing | |
| 
 | |
| set -e | |
| 
 | |
| # Configuration | |
| OPENBAO_ADDR="${OPENBAO_ADDR:-http://127.0.0.1:8200}" | |
| OPENBAO_TOKEN="${OPENBAO_TOKEN:-root-token-for-testing}" | |
| TRANSIT_PATH="${TRANSIT_PATH:-transit}" | |
| 
 | |
| echo "🚀 Setting up OpenBao for S3 SSE integration testing..." | |
| echo "OpenBao Address: $OPENBAO_ADDR" | |
| echo "Transit Path: $TRANSIT_PATH" | |
| 
 | |
| # Export for API calls | |
| export VAULT_ADDR="$OPENBAO_ADDR" | |
| export VAULT_TOKEN="$OPENBAO_TOKEN" | |
| 
 | |
| # Wait for OpenBao to be ready | |
| echo "⏳ Waiting for OpenBao to be ready..." | |
| for i in {1..30}; do | |
|     if curl -s "$OPENBAO_ADDR/v1/sys/health" > /dev/null 2>&1; then | |
|         echo "✅ OpenBao is ready!" | |
|         break | |
|     fi | |
|     if [ $i -eq 30 ]; then | |
|         echo "❌ OpenBao failed to start within 60 seconds" | |
|         exit 1 | |
|     fi | |
|     sleep 2 | |
| done | |
| 
 | |
| # Enable transit secrets engine (ignore error if already enabled) | |
| echo "🔧 Setting up transit secrets engine..." | |
| curl -s -X POST \ | |
|     -H "X-Vault-Token: $OPENBAO_TOKEN" \ | |
|     -H "Content-Type: application/json" \ | |
|     -d "{\"type\":\"transit\"}" \ | |
|     "$OPENBAO_ADDR/v1/sys/mounts/$TRANSIT_PATH" || echo "Transit engine may already be enabled" | |
| 
 | |
| # Create encryption keys for S3 SSE testing | |
| echo "🔑 Creating encryption keys for SSE testing..." | |
| 
 | |
| # Test keys that match the existing test expectations | |
| declare -a keys=( | |
|     "test-key-123:SSE-KMS basic integration test key" | |
|     "source-test-key-123:SSE-KMS copy source key" | |
|     "dest-test-key-456:SSE-KMS copy destination key" | |
|     "test-multipart-key:SSE-KMS multipart upload test key" | |
|     "invalid-test-key:SSE-KMS error testing key" | |
|     "test-kms-range-key:SSE-KMS range request test key" | |
|     "seaweedfs-test-key:General SeaweedFS SSE test key" | |
|     "bucket-default-key:Default bucket encryption key" | |
|     "high-security-key:High security encryption key" | |
|     "performance-key:Performance testing key" | |
| ) | |
| 
 | |
| for key_info in "${keys[@]}"; do | |
|     IFS=':' read -r key_name description <<< "$key_info" | |
|     echo "   Creating key: $key_name ($description)" | |
|      | |
|     # Create key | |
|     response=$(curl -s -X POST \ | |
|         -H "X-Vault-Token: $OPENBAO_TOKEN" \ | |
|         -H "Content-Type: application/json" \ | |
|         -d "{\"type\":\"aes256-gcm96\",\"description\":\"$description\"}" \ | |
|         "$OPENBAO_ADDR/v1/$TRANSIT_PATH/keys/$key_name") | |
|      | |
|     if echo "$response" | grep -q "errors"; then | |
|         echo "     Warning: $response" | |
|     fi | |
|      | |
|     # Verify key was created | |
|     verify_response=$(curl -s \ | |
|         -H "X-Vault-Token: $OPENBAO_TOKEN" \ | |
|         "$OPENBAO_ADDR/v1/$TRANSIT_PATH/keys/$key_name") | |
|      | |
|     if echo "$verify_response" | grep -q "\"name\":\"$key_name\""; then | |
|         echo "     ✅ Key $key_name created successfully" | |
|     else | |
|         echo "     ❌ Failed to verify key $key_name" | |
|         echo "     Response: $verify_response" | |
|     fi | |
| done | |
| 
 | |
| # Test basic encryption/decryption functionality | |
| echo "🧪 Testing basic encryption/decryption..." | |
| test_plaintext="Hello, SeaweedFS SSE Integration!" | |
| test_key="test-key-123" | |
| 
 | |
| # Encrypt | |
| encrypt_response=$(curl -s -X POST \ | |
|     -H "X-Vault-Token: $OPENBAO_TOKEN" \ | |
|     -H "Content-Type: application/json" \ | |
|     -d "{\"plaintext\":\"$(echo -n "$test_plaintext" | base64)\"}" \ | |
|     "$OPENBAO_ADDR/v1/$TRANSIT_PATH/encrypt/$test_key") | |
| 
 | |
| if echo "$encrypt_response" | grep -q "ciphertext"; then | |
|     ciphertext=$(echo "$encrypt_response" | grep -o '"ciphertext":"[^"]*"' | cut -d'"' -f4) | |
|     echo "   ✅ Encryption successful: ${ciphertext:0:50}..." | |
|      | |
|     # Decrypt to verify | |
|     decrypt_response=$(curl -s -X POST \ | |
|         -H "X-Vault-Token: $OPENBAO_TOKEN" \ | |
|         -H "Content-Type: application/json" \ | |
|         -d "{\"ciphertext\":\"$ciphertext\"}" \ | |
|         "$OPENBAO_ADDR/v1/$TRANSIT_PATH/decrypt/$test_key") | |
|      | |
|     if echo "$decrypt_response" | grep -q "plaintext"; then | |
|         decrypted_b64=$(echo "$decrypt_response" | grep -o '"plaintext":"[^"]*"' | cut -d'"' -f4) | |
|         decrypted=$(echo "$decrypted_b64" | base64 -d) | |
|         if [ "$decrypted" = "$test_plaintext" ]; then | |
|             echo "   ✅ Decryption successful: $decrypted" | |
|         else | |
|             echo "   ❌ Decryption failed: expected '$test_plaintext', got '$decrypted'" | |
|         fi | |
|     else | |
|         echo "   ❌ Decryption failed: $decrypt_response" | |
|     fi | |
| else | |
|     echo "   ❌ Encryption failed: $encrypt_response" | |
| fi | |
| 
 | |
| echo "" | |
| echo "📊 OpenBao SSE setup summary:" | |
| echo "   Address: $OPENBAO_ADDR" | |
| echo "   Transit Path: $TRANSIT_PATH" | |
| echo "   Keys Created: ${#keys[@]}" | |
| echo "   Status: Ready for S3 SSE integration testing" | |
| echo "" | |
| echo "🎯 Ready to run S3 SSE integration tests!" | |
| echo "" | |
| echo "Usage:" | |
| echo "   # Run with Docker Compose" | |
| echo "   make test-with-kms" | |
| echo "" | |
| echo "   # Run specific test suites" | |
| echo "   make test-ssekms-integration" | |
| echo "" | |
| echo "   # Check status" | |
| echo "   curl $OPENBAO_ADDR/v1/sys/health" | |
| echo "" | |
| 
 | |
| echo "✅ OpenBao SSE setup complete!"
 |