Class: SecureKeys::Validation::ValidationResult

Inherits:
Object
  • Object
show all
Defined in:
lib/validation/validation_result.rb

Overview

Encapsulates the result of validating a single secret value

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(key:, value:, issues:, detected_type: nil) ⇒ ValidationResult

Initialize a new validation result

Parameters:

  • key (Symbol)

    The key identifier that was validated

  • value (String)

    The value that was validated

  • issues (Array<ValidationIssue>)

    The list of issues found during validation

  • detected_type (Hash, nil) (defaults to: nil)

    The detected secret type config, if any pattern matched



22
23
24
25
26
27
# File 'lib/validation/validation_result.rb', line 22

def initialize(key:, value:, issues:, detected_type: nil)
  @key = key
  @value = value
  @issues = issues
  @detected_type = detected_type
end

Instance Attribute Details

#detected_typeObject

Returns the value of attribute detected_type.



15
16
17
# File 'lib/validation/validation_result.rb', line 15

def detected_type
  @detected_type
end

#issuesObject

Returns the value of attribute issues.



15
16
17
# File 'lib/validation/validation_result.rb', line 15

def issues
  @issues
end

#keyObject

Returns the value of attribute key.



15
16
17
# File 'lib/validation/validation_result.rb', line 15

def key
  @key
end

#valueObject

Returns the value of attribute value.



15
16
17
# File 'lib/validation/validation_result.rb', line 15

def value
  @value
end

Instance Method Details

#critical?Boolean

Check if any critical-severity issues were found

Returns:

  • (Boolean)

    true if critical issues exist



37
38
39
# File 'lib/validation/validation_result.rb', line 37

def critical?
  issues.any? { |issue| issue.severity == :critical }
end

#errors?Boolean

Check if any error-severity issues were found

Returns:

  • (Boolean)

    true if error issues exist



43
44
45
# File 'lib/validation/validation_result.rb', line 43

def errors?
  issues.any? { |issue| issue.severity == :error }
end

Prints the full validation result to the console via Logger



72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/validation/validation_result.rb', line 72

def print
  Core::Console::Logger.message(message: "\nValidation Result for '#{key}':")
  Core::Console::Logger.message(message: '-' * 70)

  if detected_type
    Core::Console::Logger.message(message: "Detected Type: #{detected_type[:description]}")
    Core::Console::Logger.message(message: "Severity:      #{detected_type[:severity]}")
  end

  if issues.empty?
    Core::Console::Logger.success(message: '✅ No issues found')
  else
    Core::Console::Logger.message(message: '')
    issues.each { |issue| Core::Console::Logger.message(message: "  #{issue}") }
  end

  Core::Console::Logger.message(message: '-' * 70)
end

#severity_levelSymbol

Returns the highest severity level across all issues

Returns:

  • (Symbol)

    :critical, :error, :warning, or :ok



55
56
57
58
59
60
61
# File 'lib/validation/validation_result.rb', line 55

def severity_level
  return :critical if critical?
  return :error if errors?
  return :warning if warnings?

  :ok
end

#summaryString

Returns a one-line summary of the validation outcome

Returns:

  • (String)

    The summary string



65
66
67
68
69
# File 'lib/validation/validation_result.rb', line 65

def summary
  return "✅ '#{key}' passed validation" if valid?

  "#{severity_icon} '#{key}' has #{issues.length} issue(s)"
end

#to_hHash

Returns a hash representation of the validation result

Returns:

  • (Hash)

    The hash representation



93
94
95
96
97
98
99
100
101
# File 'lib/validation/validation_result.rb', line 93

def to_h
  {
    key:,
    valid: valid?,
    severity: severity_level,
    detected_type:,
    issues: issues.map(&:to_h),
  }
end

#valid?Boolean

Check if validation passed with no errors or critical issues

Returns:

  • (Boolean)

    true if no critical or error issues were found



31
32
33
# File 'lib/validation/validation_result.rb', line 31

def valid?
  !errors? && !critical?
end

#warnings?Boolean

Check if any warning-severity issues were found

Returns:

  • (Boolean)

    true if warning issues exist



49
50
51
# File 'lib/validation/validation_result.rb', line 49

def warnings?
  issues.any? { |issue| issue.severity == :warning }
end