3d678ea03c8e557b7550fc1403a3d0f84a0a610b
[mirror/dsa-puppet.git] / 3rdparty / modules / postgresql / spec / unit / puppet / provider / postgresql_conn_validator / ruby_spec.rb
1 require 'spec_helper'
2
3 describe Puppet::Type.type(:postgresql_conn_validator).provider(:ruby) do
4
5   let(:resource) { Puppet::Type.type(:postgresql_conn_validator).new({
6                                                                    :name => "testname"
7                                                                   }.merge attributes) }
8   let(:provider) { resource.provider }
9
10   let(:attributes) do
11     {
12       :psql_path   => '/usr/bin/psql',
13       :host        => 'db.test.com',
14       :port        => 4444,
15       :db_username => 'testuser',
16       :db_password => 'testpass'
17     }
18   end
19
20   describe '#build_psql_cmd' do
21     it 'contains expected commandline options' do
22       expect(provider.validator.build_psql_cmd).to match /\/usr\/bin\/psql.*--host.*--port.*--username.*/
23     end
24   end
25
26   describe '#parse_connect_settings' do
27     it 'returns array if password is present' do
28       expect(provider.validator.parse_connect_settings).to eq(['PGPASSWORD=testpass'])
29     end
30
31     it 'returns an empty array if password is nil' do
32       attributes.delete(:db_password)
33       expect(provider.validator.parse_connect_settings).to eq([])
34     end
35
36     let(:connect_settings) do
37       {
38         :connect_settings => {
39           :PGPASSWORD => 'testpass',
40           :PGHOST     => 'db.test.com',
41           :PGPORT     => '1234'
42         }
43       }
44     end
45     it 'returns an array of settings' do
46       attributes.delete(:db_password)
47       attributes.merge! connect_settings
48       expect(provider.validator.parse_connect_settings).to eq(['PGPASSWORD=testpass','PGHOST=db.test.com','PGPORT=1234'])
49     end
50   end
51
52   describe '#attempt_connection' do
53     let(:sleep_length) {1}
54     let(:tries) {3}
55     let(:exec) {
56       provider.validator.stub(:execute_command).and_return(true)
57     }
58
59     it 'tries the correct number of times' do
60       expect(provider.validator).to receive(:execute_command).exactly(3).times
61
62       provider.validator.attempt_connection(sleep_length,tries)
63
64     end
65   end
66 end