aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.fixtures.yml4
-rw-r--r--spec/classes/samba__server__config_spec.rb10
-rw-r--r--spec/classes/samba__server__install_spec.rb9
-rw-r--r--spec/classes/samba__server__service_spec.rb40
-rw-r--r--spec/classes/samba__server_spec.rb9
-rw-r--r--spec/fixtures/manifests/init.pp7
-rw-r--r--spec/spec_helper.rb8
-rw-r--r--tests/init.pp25
8 files changed, 112 insertions, 0 deletions
diff --git a/.fixtures.yml b/.fixtures.yml
new file mode 100644
index 0000000..112077f
--- /dev/null
+++ b/.fixtures.yml
@@ -0,0 +1,4 @@
+fixtures:
+ repositories:
+ symlinks:
+ samba: "#{source_dir}"
diff --git a/spec/classes/samba__server__config_spec.rb b/spec/classes/samba__server__config_spec.rb
new file mode 100644
index 0000000..5f13aa4
--- /dev/null
+++ b/spec/classes/samba__server__config_spec.rb
@@ -0,0 +1,10 @@
+require 'spec_helper'
+
+describe 'samba::server::config', :type => :class do
+ context "on a Debian OS" do
+ let( :facts ) { { :osfamily => 'Debian' } }
+
+ it { should contain_file('/etc/samba/smb.conf').with_owner('root') }
+ end
+end
+
diff --git a/spec/classes/samba__server__install_spec.rb b/spec/classes/samba__server__install_spec.rb
new file mode 100644
index 0000000..9764687
--- /dev/null
+++ b/spec/classes/samba__server__install_spec.rb
@@ -0,0 +1,9 @@
+require 'spec_helper'
+
+describe 'samba::server::install', :type => :class do
+ context "on a Debian OS" do
+ let(:facts) {{ :osfamily => 'Debian' }}
+ it { should contain_package('samba') }
+ end
+end
+
diff --git a/spec/classes/samba__server__service_spec.rb b/spec/classes/samba__server__service_spec.rb
new file mode 100644
index 0000000..bc28a9b
--- /dev/null
+++ b/spec/classes/samba__server__service_spec.rb
@@ -0,0 +1,40 @@
+require 'spec_helper'
+
+describe 'samba::server::service' do
+ context 'on a Debian os family' do
+ let(:facts) {{ :osfamily => 'Debian' }}
+
+ it { should contain_service('samba')
+ .with_require('Class[Samba::Server::Config]') }
+
+ context 'Debian' do
+ let(:facts) {{ :osfamily => 'Debian', :operatingsystem => 'Debian' }}
+ it { should contain_service('samba') }
+ end
+
+ context 'Ubuntu' do
+ let(:facts) {{ :osfamily => 'Debian', :operatingsystem => 'Ubuntu' }}
+ it { should contain_service('smbd') }
+ end
+ end
+
+ context 'on a Redhat os family' do
+ let(:facts) {{ :osfamily => 'Redhat' }}
+ it { should contain_service('smb') }
+ end
+
+ context 'on a Archlinux os family' do
+ let(:facts) {{ :osfamily => 'Archlinux' }}
+ it { should contain_service('smbd') }
+ end
+
+ context 'on a Gentoo os family' do
+ let(:facts) {{ :osfamily => 'Linux', :operatingsystem => 'Gentoo' }}
+ it { should contain_service('samba') }
+ end
+
+ context 'on an unsupported OS' do
+ let(:facts) {{ :osfamily => 'Solaris' }}
+ it { should raise_error(/Solaris is not supported by this module./) }
+ end
+end
diff --git a/spec/classes/samba__server_spec.rb b/spec/classes/samba__server_spec.rb
new file mode 100644
index 0000000..89d994f
--- /dev/null
+++ b/spec/classes/samba__server_spec.rb
@@ -0,0 +1,9 @@
+require 'spec_helper'
+
+describe 'samba::server' do
+ let(:facts) {{ :osfamily => 'Debian' }}
+
+ it { should contain_class('samba::server::install') }
+ it { should contain_class('samba::server::config') }
+ it { should contain_class('samba::server::service') }
+end
diff --git a/spec/fixtures/manifests/init.pp b/spec/fixtures/manifests/init.pp
new file mode 100644
index 0000000..0f64360
--- /dev/null
+++ b/spec/fixtures/manifests/init.pp
@@ -0,0 +1,7 @@
+node 'testhost.example.com' {
+
+ include samba::server
+
+}
+
+node default {}
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
new file mode 100644
index 0000000..81f98ac
--- /dev/null
+++ b/spec/spec_helper.rb
@@ -0,0 +1,8 @@
+require 'puppetlabs_spec_helper/module_spec_helper'
+
+RSpec.configure do |c|
+ c.before do
+ # avoid "Only root can execute commands as other users"
+ Puppet.features.stubs(:root? => true)
+ end
+end
diff --git a/tests/init.pp b/tests/init.pp
new file mode 100644
index 0000000..142ba4e
--- /dev/null
+++ b/tests/init.pp
@@ -0,0 +1,25 @@
+# Smoketest.
+
+class {'samba::server':
+ workgroup => 'example',
+ server_string => "Example Samba Server",
+ interfaces => "eth0 lo",
+ security => 'share'
+ }
+
+ samba::server::share {'example-share':
+ comment => 'Example Share',
+ path => '/path/to/share',
+ guest_only => true,
+ guest_ok => true,
+ guest_account => "guest",
+ browsable => false,
+ create_mask => 0777,
+ force_create_mask => 0777,
+ directory_mask => 0777,
+ force_directory_mask => 0777,
+ force_group => 'group',
+ force_user => 'user',
+ copy => 'some-other-share',
+ }
+}