newer pg module
[mirror/dsa-puppet.git] / 3rdparty / modules / postgresql / spec / unit / puppet / provider / postgresql_conn_validator / ruby_spec.rb
diff --git a/3rdparty/modules/postgresql/spec/unit/puppet/provider/postgresql_conn_validator/ruby_spec.rb b/3rdparty/modules/postgresql/spec/unit/puppet/provider/postgresql_conn_validator/ruby_spec.rb
new file mode 100644 (file)
index 0000000..3d678ea
--- /dev/null
@@ -0,0 +1,66 @@
+require 'spec_helper'
+
+describe Puppet::Type.type(:postgresql_conn_validator).provider(:ruby) do
+
+  let(:resource) { Puppet::Type.type(:postgresql_conn_validator).new({
+                                                                   :name => "testname"
+                                                                  }.merge attributes) }
+  let(:provider) { resource.provider }
+
+  let(:attributes) do
+    {
+      :psql_path   => '/usr/bin/psql',
+      :host        => 'db.test.com',
+      :port        => 4444,
+      :db_username => 'testuser',
+      :db_password => 'testpass'
+    }
+  end
+
+  describe '#build_psql_cmd' do
+    it 'contains expected commandline options' do
+      expect(provider.validator.build_psql_cmd).to match /\/usr\/bin\/psql.*--host.*--port.*--username.*/
+    end
+  end
+
+  describe '#parse_connect_settings' do
+    it 'returns array if password is present' do
+      expect(provider.validator.parse_connect_settings).to eq(['PGPASSWORD=testpass'])
+    end
+
+    it 'returns an empty array if password is nil' do
+      attributes.delete(:db_password)
+      expect(provider.validator.parse_connect_settings).to eq([])
+    end
+
+    let(:connect_settings) do
+      {
+        :connect_settings => {
+          :PGPASSWORD => 'testpass',
+          :PGHOST     => 'db.test.com',
+          :PGPORT     => '1234'
+        }
+      }
+    end
+    it 'returns an array of settings' do
+      attributes.delete(:db_password)
+      attributes.merge! connect_settings
+      expect(provider.validator.parse_connect_settings).to eq(['PGPASSWORD=testpass','PGHOST=db.test.com','PGPORT=1234'])
+    end
+  end
+
+  describe '#attempt_connection' do
+    let(:sleep_length) {1}
+    let(:tries) {3}
+    let(:exec) {
+      provider.validator.stub(:execute_command).and_return(true)
+    }
+
+    it 'tries the correct number of times' do
+      expect(provider.validator).to receive(:execute_command).exactly(3).times
+
+      provider.validator.attempt_connection(sleep_length,tries)
+
+    end
+  end
+end