Class: Mxrb::Dsl::SecurityValidator

Inherits:
Object
  • Object
show all
Defined in:
lib/mxrb/dsl/builder.rb

Overview

Validates project-security references that cross DSL builders.

Instance Method Summary collapse

Constructor Details

#initialize(modules, security) ⇒ SecurityValidator

Returns a new instance of SecurityValidator.



11
12
13
14
# File 'lib/mxrb/dsl/builder.rb', line 11

def initialize(modules, security)
  @modules = modules
  @security = security
end

Instance Method Details

#validate!Object

Raises:



16
17
18
19
20
21
22
23
24
25
# File 'lib/mxrb/dsl/builder.rb', line 16

def validate!
  return unless @security

  errors = demo_users.flat_map { reference_errors(_1) }
  duplicates = demo_users.group_by { _1.fetch(:name) }.select { |_name, users| users.size > 1 }
  errors << "duplicate demo user name(s): #{duplicates.keys.join(', ')}" unless duplicates.empty?
  return if errors.empty?

  raise ValidationError, "security validation failed:\n- #{errors.join("\n- ")}"
end