Vaultx.Config.Validator (Vaultx v0.7.0)

View Source

Advanced configuration validation with comprehensive error reporting.

This module provides intelligent configuration validation that goes beyond basic type checking to include security analysis, performance validation, compatibility checks, and best practice recommendations.

Features

  • Comprehensive Validation: Deep validation of all configuration aspects
  • Security Analysis: Security-focused configuration validation
  • Performance Validation: Performance impact analysis
  • Compatibility Checks: Version and feature compatibility validation
  • Best Practice Recommendations: Industry best practice validation

Validation Categories

Core Configuration

  • URL format and accessibility validation
  • Authentication configuration validation
  • Network and timeout configuration validation

Security Configuration

  • SSL/TLS configuration security analysis
  • Authentication method security validation
  • Sensitive data exposure prevention

Performance Configuration

  • Connection pool optimization validation
  • Cache configuration performance analysis
  • Timeout and retry configuration optimization

Compatibility Configuration

  • Vault version compatibility checks
  • Feature availability validation
  • Environment-specific configuration validation

Usage

# Comprehensive validation
issues = Vaultx.Config.Validator.validate_comprehensive(config)

# Security-focused validation
warnings = Vaultx.Config.Validator.check_security_configuration(config)

# Compatibility validation
compatibility = Vaultx.Config.Validator.check_compatibility(config)

Summary

Functions

Checks configuration compatibility with Vault versions and features.

Performs security-focused configuration validation.

Performs comprehensive configuration validation.

Types

compatibility_result()

@type compatibility_result() :: %{
  vault_version_compatible: boolean(),
  feature_compatibility: map(),
  environment_compatibility: map(),
  deprecation_warnings: [String.t()]
}

security_warning()

@type security_warning() :: %{
  type: :security_warning,
  category: atom(),
  message: String.t(),
  recommendation: String.t(),
  severity: :low | :medium | :high | :critical,
  compliance_impact: [String.t()]
}

validation_issue()

@type validation_issue() :: %{
  type: Vaultx.Base.Logger.log_level(),
  category: atom(),
  field: String.t(),
  message: String.t(),
  suggestion: String.t() | nil,
  severity: :low | :medium | :high | :critical
}

Functions

check_compatibility(config)

@spec check_compatibility(Vaultx.Base.Config.t()) :: compatibility_result()

Checks configuration compatibility with Vault versions and features.

Parameters

  • config - Configuration map to validate

Returns

Compatibility analysis results.

Examples

config = Vaultx.Base.Config.get()
compatibility = Vaultx.Config.Validator.check_compatibility(config)

unless compatibility.vault_version_compatible do
  IO.puts("Warning: Configuration may not be compatible with target Vault version")
end

check_security_configuration(config)

@spec check_security_configuration(Vaultx.Base.Config.t()) :: [security_warning()]

Performs security-focused configuration validation.

This function specifically validates security-related configuration settings and identifies potential security risks or compliance issues.

Parameters

  • config - Configuration map to validate

Returns

List of security warnings and recommendations.

Examples

config = Vaultx.Base.Config.get()
warnings = Vaultx.Config.Validator.check_security_configuration(config)

Enum.each(warnings, fn warning ->
  IO.puts("Security Warning: #{warning.message}")
  IO.puts("Recommendation: #{warning.recommendation}")
end)

validate_basic(config)

@spec validate_basic(map()) :: :ok | {:error, [String.t()]}

Performs comprehensive configuration validation.

This function validates all aspects of the configuration including core settings, security configuration, performance settings, and compatibility requirements.

Parameters

  • config - Configuration map to validate

Returns

List of validation issues, empty list if configuration is valid.

Examples

config = Vaultx.Base.Config.get()
issues = Vaultx.Config.Validator.validate_comprehensive(config)

if Enum.empty?(issues) do
  IO.puts("Configuration is valid")
else
  Enum.each(issues, fn issue ->
    IO.puts("#{issue.severity}: #{issue.message}")
  end)
end

validate_comprehensive(config)

@spec validate_comprehensive(Vaultx.Base.Config.t()) :: [validation_issue()]