Class: Console1984::CommandValidator::ForbiddenConstantReferenceValidation

Inherits:
Object
  • Object
show all
Includes:
Freezeable
Defined in:
lib/console1984/command_validator/forbidden_constant_reference_validation.rb

Overview

Validates references to a configured set of constants.

Instance Method Summary collapse

Methods included from Freezeable

freeze_all, included

Constructor Details

#initialize(shield = Console1984.shield, config) ⇒ ForbiddenConstantReferenceValidation

config will be a hash like:

{ always: [ Console1984 ], protected: [ PG, Mysql2 ] }


8
9
10
11
12
13
14
15
# File 'lib/console1984/command_validator/forbidden_constant_reference_validation.rb', line 8

def initialize(shield = Console1984.shield, config)
  # We make shield an injectable dependency for testing purposes. Everything is frozen
  # for security purposes, so stubbing won't work.
  @shield = shield

  @forbidden_constants_names = config[:always] || []
  @constant_names_forbidden_in_protected_mode = config[:protected] || []
end

Instance Method Details

#validate(parsed_command) ⇒ Object

Raises a Console1984::Errors::ForbiddenCommandAttempted if a banned constant is referenced.



18
19
20
21
22
23
# File 'lib/console1984/command_validator/forbidden_constant_reference_validation.rb', line 18

def validate(parsed_command)
  if contains_invalid_const_reference?(parsed_command, @forbidden_constants_names) ||
    (@shield.protected_mode? && contains_invalid_const_reference?(parsed_command, @constant_names_forbidden_in_protected_mode))
    raise Console1984::Errors::ForbiddenCommandAttempted
  end
end