From cca9b5efbeb1e5134bc1cdff294369de19d143e5 Mon Sep 17 00:00:00 2001 From: Lance Albertson Date: Thu, 3 Dec 2020 13:47:18 -0800 Subject: [PATCH] Improve ChefSpec tests Signed-off-by: Lance Albertson --- CHANGELOG.md | 1 + spec/unit/recipes/default_spec.rb | 117 +++++++++++++++++++++++++++++- 2 files changed, 115 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8b72106..1dc112b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Fix EL8 systemd unit for slapd daemon - Move platform attributes and resource methods to library helpers - Add `install_client` and `install_server` properties to `openldap_install` resource +- Improve ChefSpec tests ## 4.3.0 - *2020-11-23* diff --git a/spec/unit/recipes/default_spec.rb b/spec/unit/recipes/default_spec.rb index 18065e2..fbb5a99 100644 --- a/spec/unit/recipes/default_spec.rb +++ b/spec/unit/recipes/default_spec.rb @@ -12,13 +12,30 @@ expect(chef_run).to install_package('slapd') end - it 'installs the ldap-utils' do + it 'installs the openldap client packages' do expect(chef_run).to install_package('ldap-utils') end it 'installs the dbd package' do expect(chef_run).to install_package('db-util') end + + it do + expect(chef_run).to create_template('/etc/default/slapd').with(source: 'default_slapd.erb') + end + + it do + expect(chef_run).to create_template('/etc/ldap/slapd.conf').with(owner: 'openldap', group: 'openldap') + end + + it do + expect(chef_run).to_not create_systemd_unit('slapd.service') + end + + it do + expect(chef_run).to enable_service('slapd') + expect(chef_run).to start_service('slapd') + end end describe 'default recipe on centos 7' do @@ -33,13 +50,86 @@ expect(chef_run).to install_package('openldap-servers') end + it 'installs the openldap client packages' do + expect(chef_run).to install_package('openldap-clients') + end + it 'installs the dbd package' do expect(chef_run).to install_package('compat-db47') end + + it do + expect(chef_run).to_not create_yum_repository('osuosl-openldap') + end + + it do + expect(chef_run).to create_template('/etc/sysconfig/slapd').with(source: 'sysconfig_slapd.erb') + end + + it do + expect(chef_run).to create_template('/etc/openldap/slapd.conf').with(owner: 'ldap', group: 'ldap') + end + + it do + expect(chef_run).to_not create_systemd_unit('slapd.service') + end + + it do + expect(chef_run).to enable_service('slapd') + expect(chef_run).to start_service('slapd') + end end -describe 'default recipe on freebsd 11' do - cached(:runner) { ChefSpec::ServerRunner.new(platform: 'freebsd', version: '11', step_into: ['openldap_install']) } +describe 'default recipe on centos 8' do + cached(:runner) { ChefSpec::ServerRunner.new(platform: 'centos', version: '8', step_into: ['openldap_install']) } + cached(:chef_run) { runner.converge('openldap::default') } + + it 'converges successfully' do + expect { :chef_run }.to_not raise_error + end + + it 'installs the openldap server package' do + expect(chef_run).to install_package('openldap-servers') + end + + it 'installs the openldap client packages' do + expect(chef_run).to install_package('openldap-clients') + end + + it do + expect(chef_run).to create_yum_repository('osuosl-openldap').with( + baseurl: 'https://ftp.osuosl.org/pub/osl/repos/yum/$releasever/openldap/$basearch', + gpgkey: 'https://ftp.osuosl.org/pub/osl/repos/yum/RPM-GPG-KEY-osuosl', + description: 'OSUOSL OpenLDAP repository', + gpgcheck: true, + enabled: true + ) + end + + it do + expect(chef_run).to_not install_package('compat-db47') + end + + it do + expect(chef_run).to create_template('/etc/sysconfig/slapd').with(source: 'sysconfig_slapd.erb') + end + + it do + expect(chef_run).to create_template('/etc/openldap/slapd.conf').with(owner: 'ldap', group: 'ldap') + end + + it do + expect(chef_run).to create_systemd_unit('slapd.service') + end + + it do + expect(chef_run).to enable_service('slapd') + expect(chef_run).to start_service('slapd') + end +end + +describe 'default recipe on freebsd 12' do + cached(:runner) { ChefSpec::ServerRunner.new(platform: 'freebsd', version: '12', step_into: ['openldap_install']) } cached(:chef_run) { runner.converge('openldap::default') } it 'converges successfully' do @@ -50,7 +140,28 @@ expect(chef_run).to install_package('openldap-server') end + it 'installs the openldap client packages' do + expect(chef_run).to install_package('openldap-client') + end + it 'does not install the dbd package' do expect(chef_run).to install_package('libdbi') end + + it do + expect(chef_run).to create_template('/etc/rc.conf.d/slapd').with(source: 'rc_slapd.erb') + end + + it do + expect(chef_run).to create_template('/usr/local/etc/openldap/slapd.conf').with(owner: 'ldap', group: 'ldap') + end + + it do + expect(chef_run).to_not create_systemd_unit('slapd.service') + end + + it do + expect(chef_run).to enable_service('slapd') + expect(chef_run).to start_service('slapd') + end end