Sha256: 01fc9359f22f9633369e1923a2d823df6c6cbab8a5d411f23d7afee20d2c571c

Contents?: true

Size: 1.13 KB

Versions: 6

Compression:

Stored size: 1.13 KB

Contents

require 'hash_validator'
require 'xing/nominal/dependency_utils'

module Xing
  module Nominal
    class YamlConfigValidator
      include DependencyUtils

      attr_accessor :yaml_hash, :results
      def initialize
        self.yaml_hash = YAML.load(File.open(file_under_test))
        self.results = []
      end

      # Validate only with common secrets requirements
      def validate(*envs)
        envs << 'test' if envs.include?('development')
        self.results.push(*envs.map{ |env|
          HashValidator.validate(yaml_hash, { env => rules(env) })
        })
      end

      def report!
        if errors.blank?
          dep_success("#{file_under_test} appears correctly formatted.")
        else
          dep_fail("#{file_under_test} didn't contain required values.", errors)
        end
      end

      def errors
        self.results.reduce({}) do |errs, validator|
          errs.deep_merge!(validator.errors)
        end
      end

      def assert_existence
        unless File.exists?(file_under_test)
          dep_fail("Please create #{file_under_test}, check the .example for format")
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
xing-backend-1.0.0.pre.beta lib/xing/nominal/yaml_config_validator.rb
xing-backend-0.0.25 lib/xing/nominal/yaml_config_validator.rb
xing-backend-0.0.23 lib/xing/nominal/yaml_config_validator.rb
xing-backend-0.0.22 lib/xing/nominal/yaml_config_validator.rb
xing-backend-0.0.21 lib/xing/nominal/yaml_config_validator.rb
xing-backend-0.0.20 lib/xing/nominal/yaml_config_validator.rb