require 'xing/nominal/secrets_validator' describe Xing::Nominal::SecretsValidator do before do expect(File).to receive(:open).and_return(nil) end let :dev_yaml do YAML.load(FIXTURE) end it "when development has a missing key" do expect(YAML).to receive(:load).and_return(dev_yaml.deep_merge({'development' => { 'email' => nil }})) validator = Xing::Nominal::SecretsValidator.new validator.validate('development') expect(validator.errors['development']).not_to be_blank expect(validator.errors['test']).to be_blank end it "when development has no missing keys" do expect(YAML).to receive(:load).and_return(dev_yaml) validator = Xing::Nominal::SecretsValidator.new validator.validate('development') expect(validator.errors).to be_blank end it "when development has a missing key and test has a misformatted value " do expect(YAML).to receive(:load).and_return(dev_yaml.deep_merge({ 'development' => { 'email' => nil }, 'test' => { 'email' => { 'from' => 'not_an_email' } }}) ) validator = Xing::Nominal::SecretsValidator.new validator.validate('development') expect(validator.errors['development']['email']) .not_to be_blank expect(validator.errors['test']['email']['from']).not_to be_blank end FIXTURE = <<EOS development: secret_key_base: xxxkey smtp: address: smtp.gmail.com port: 587 domain: lrdesign.com user_name: quentin@lrdesign.com password: xxxxxxxx email: from: quentin@lrdesign.com reply_to: quentin@lrdesign.com from_domain: lrdesign.com test: test@lrdesign.com snapshot_server: url: https://www.notaserver.com user: user password: password sitemap_base_url: http://localhost:3000/ test: secret_key_base: xxkey smtp: address: smtp.gmail.com port: 587 domain: equibid.com user_name: sysquentin@equibid.com password: xxxxxxxx email: from: quentin@example.com reply_to: quentin@example.com from_domain: lrdesign.com test: test@lrdesign.com snapshot_server: url: https://www.notaserver.com user: user password: password sitemap_base_url: http://localhost:3000/ EOS end