newer pg module
[mirror/dsa-puppet.git] / 3rdparty / modules / postgresql / spec / acceptance / z_alternative_pgdata_spec.rb
diff --git a/3rdparty/modules/postgresql/spec/acceptance/z_alternative_pgdata_spec.rb b/3rdparty/modules/postgresql/spec/acceptance/z_alternative_pgdata_spec.rb
new file mode 100644 (file)
index 0000000..9f80f96
--- /dev/null
@@ -0,0 +1,34 @@
+require 'spec_helper_acceptance'
+
+# These tests ensure that postgres can change itself to an alternative pgdata
+# location properly.
+
+# Allow postgresql to use /tmp/* as a datadir
+if fact('osfamily') == 'RedHat' and fact('selinux') == 'true'
+  shell 'setenforce 0'
+end
+
+describe 'postgresql::server', :unless => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do
+  it 'on an alternative pgdata location' do
+    pp = <<-EOS
+      #file { '/var/lib/pgsql': ensure => directory, } ->
+      # needs_initdb will be true by default for all OS's except Debian
+      # in order to change the datadir we need to tell it explicitly to call initdb
+      class { 'postgresql::server': datadir => '/tmp/data', needs_initdb => true }
+    EOS
+
+    apply_manifest(pp, :catch_failures => true)
+    apply_manifest(pp, :catch_changes => true)
+  end
+
+  describe file('/tmp/data') do
+    it { should be_directory }
+  end
+
+  it 'can connect with psql' do
+    psql('--command="\l" postgres', 'postgres') do |r|
+      expect(r.stdout).to match(/List of databases/)
+    end
+  end
+
+end