Class: Console1984::CommandValidator::ForbiddenConstantReferenceValidation
- Inherits:
-
Object
- Object
- Console1984::CommandValidator::ForbiddenConstantReferenceValidation
- 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
-
#initialize(shield = Console1984.shield, config) ⇒ ForbiddenConstantReferenceValidation
constructor
config
will be a hash like:. -
#validate(parsed_command) ⇒ Object
Raises a Console1984::Errors::ForbiddenCommandAttempted if a banned constant is referenced.
Methods included from Freezeable
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 |