Correctly fix aliases quoting logic (#206)
We were previously incorrectly adding double quotes for the alias values. According to the man page it's not required. However, there is a requirement if its a command being pipe. In addition, the man page mentions this for the alias name: The name is a local address (no domain part). Use double quotes when the name contains any special characters such as whitespace, `#', `:', or `@'. The name is folded to lowercase, in order to make database lookups case insensitive. This includes logic to support this automatically. - Add new tests for aliases testing all types - Convert all serverspec tests to inspec - Add Github actions - Update platforms to test Signed-off-by: Lance Albertson <lance@osuosl.org>
This commit is contained in:
parent
6cb80c3be7
commit
1cd55ab40d
60
.github/workflows/ci.yml
vendored
Normal file
60
.github/workflows/ci.yml
vendored
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
---
|
||||||
|
name: ci
|
||||||
|
|
||||||
|
"on":
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
lint-unit:
|
||||||
|
uses: sous-chefs/.github/.github/workflows/lint-unit.yml@3.0.0
|
||||||
|
permissions:
|
||||||
|
actions: write
|
||||||
|
checks: write
|
||||||
|
pull-requests: write
|
||||||
|
statuses: write
|
||||||
|
|
||||||
|
integration:
|
||||||
|
needs: 'lint-unit'
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os:
|
||||||
|
- almalinux-8
|
||||||
|
- almalinux-9
|
||||||
|
- amazonlinux-2023
|
||||||
|
- centos-stream-9
|
||||||
|
- debian-11
|
||||||
|
- debian-12
|
||||||
|
- opensuse-leap-15
|
||||||
|
- rockylinux-8
|
||||||
|
- rockylinux-9
|
||||||
|
- ubuntu-2004
|
||||||
|
- ubuntu-2204
|
||||||
|
- ubuntu-2404
|
||||||
|
suite:
|
||||||
|
- default
|
||||||
|
- aliases
|
||||||
|
- client
|
||||||
|
- server
|
||||||
|
- canonical
|
||||||
|
- sasl-auth-none
|
||||||
|
- sasl-auth-multiple
|
||||||
|
- sasl-auth-one
|
||||||
|
fail-fast: false
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Check out code
|
||||||
|
uses: actions/checkout@v4 # v4
|
||||||
|
- name: Install Chef
|
||||||
|
uses: actionshub/chef-install@2.0.4
|
||||||
|
- name: Dokken
|
||||||
|
uses: actionshub/test-kitchen@2.1.0
|
||||||
|
env:
|
||||||
|
CHEF_LICENSE: accept-no-persist
|
||||||
|
KITCHEN_LOCAL_YAML: kitchen.dokken.yml
|
||||||
|
with:
|
||||||
|
suite: ${{ matrix.suite }}
|
||||||
|
os: ${{ matrix.os }}
|
17
CHANGELOG.md
17
CHANGELOG.md
@ -4,25 +4,24 @@ This file is used to list changes made in each version of the postfix cookbook.
|
|||||||
|
|
||||||
## Unreleased
|
## Unreleased
|
||||||
|
|
||||||
|
- Correctly fix aliases quoting logic
|
||||||
|
- Convert all serverspec tests to inspec
|
||||||
|
- Add Github actions
|
||||||
|
- Update platforms to test
|
||||||
|
|
||||||
## 6.0.29 - *2024-11-18*
|
## 6.0.29 - *2024-11-18*
|
||||||
|
|
||||||
Standardise files with files in sous-chefs/repo-management
|
- Standardise files with files in sous-chefs/repo-management
|
||||||
|
|
||||||
Standardise files with files in sous-chefs/repo-management
|
|
||||||
|
|
||||||
## 6.0.28 - *2024-07-15*
|
## 6.0.28 - *2024-07-15*
|
||||||
|
|
||||||
Standardise files with files in sous-chefs/repo-management
|
- Standardise files with files in sous-chefs/repo-management
|
||||||
|
|
||||||
Standardise files with files in sous-chefs/repo-management
|
|
||||||
|
|
||||||
Standardise files with files in sous-chefs/repo-management
|
|
||||||
|
|
||||||
## 6.0.27 - *2024-05-06*
|
## 6.0.27 - *2024-05-06*
|
||||||
|
|
||||||
## 6.0.26 - *2023-10-03*
|
## 6.0.26 - *2023-10-03*
|
||||||
|
|
||||||
- add installation of postfix addon packages for RHEL 8
|
- Add installation of postfix addon packages for RHEL 8
|
||||||
|
|
||||||
## 6.0.25 - *2023-10-03*
|
## 6.0.25 - *2023-10-03*
|
||||||
|
|
||||||
|
23
kitchen.yml
23
kitchen.yml
@ -14,16 +14,18 @@ verifier:
|
|||||||
|
|
||||||
platforms:
|
platforms:
|
||||||
- name: almalinux-8
|
- name: almalinux-8
|
||||||
- name: amazonlinux-2
|
- name: almalinux-9
|
||||||
- name: centos-7
|
- name: amazonlinux-2023
|
||||||
- name: centos-stream-8
|
- name: centos-stream-9
|
||||||
- name: debian-10
|
|
||||||
- name: debian-11
|
- name: debian-11
|
||||||
|
- name: debian-12
|
||||||
- name: fedora-latest
|
- name: fedora-latest
|
||||||
- name: opensuse-leap-15
|
- name: opensuse-leap-15
|
||||||
- name: rockylinux-8
|
- name: rockylinux-8
|
||||||
- name: ubuntu-18.04
|
- name: rockylinux-9
|
||||||
- name: ubuntu-20.04
|
- name: ubuntu-20.04
|
||||||
|
- name: ubuntu-22.04
|
||||||
|
- name: ubuntu-24.04
|
||||||
|
|
||||||
suites:
|
suites:
|
||||||
- name: default
|
- name: default
|
||||||
@ -33,6 +35,17 @@ suites:
|
|||||||
- name: aliases
|
- name: aliases
|
||||||
run_list:
|
run_list:
|
||||||
- recipe[postfix::aliases]
|
- recipe[postfix::aliases]
|
||||||
|
attributes:
|
||||||
|
postfix:
|
||||||
|
aliases:
|
||||||
|
foo1: bar
|
||||||
|
foo@bar: foo
|
||||||
|
foo2: "|/usr/bin/bar"
|
||||||
|
foo3: foo,bar
|
||||||
|
foo4: foo@example.com
|
||||||
|
foo5:
|
||||||
|
- foo
|
||||||
|
- bar
|
||||||
|
|
||||||
- name: client
|
- name: client
|
||||||
run_list:
|
run_list:
|
||||||
|
@ -6,5 +6,5 @@
|
|||||||
postmaster: root
|
postmaster: root
|
||||||
|
|
||||||
<% node['postfix']['aliases'].each do |name, value| %>
|
<% node['postfix']['aliases'].each do |name, value| %>
|
||||||
<%= name %>: <%= [value].flatten.map{|x| if (x.include?("@")) then x else %Q("#{x}") end}.join(', ') %>
|
<%= name.match?(/[\s#:@]/) ? "\"#{name}\"" : name %>: <%= [value].flatten.map{|x| x.include?("|") ? "\"#{x}\"" : x}.join(',') %>
|
||||||
<% end unless node['postfix']['aliases'].nil? %>
|
<% end unless node['postfix']['aliases'].nil? %>
|
||||||
|
@ -1,3 +1,6 @@
|
|||||||
|
# sysctl missing on SUSE
|
||||||
|
package 'procps' if platform_family?('suse')
|
||||||
|
|
||||||
sysctl 'net.ipv6.conf.lo.disable_ipv6' do
|
sysctl 'net.ipv6.conf.lo.disable_ipv6' do
|
||||||
value 0
|
value 0
|
||||||
end
|
end
|
||||||
|
21
test/integration/aliases/controls/aliases.rb
Normal file
21
test/integration/aliases/controls/aliases.rb
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
control 'aliases' do
|
||||||
|
describe file '/etc/aliases' do
|
||||||
|
its('content') do
|
||||||
|
should cmp <<~EOF
|
||||||
|
#
|
||||||
|
# Auto-generated by Chef.
|
||||||
|
# Local modifications will be overwritten.
|
||||||
|
#
|
||||||
|
# See man 5 aliases for format
|
||||||
|
postmaster: root
|
||||||
|
|
||||||
|
foo1: bar
|
||||||
|
"foo@bar": foo
|
||||||
|
foo2: "|/usr/bin/bar"
|
||||||
|
foo3: foo,bar
|
||||||
|
foo4: foo@example.com
|
||||||
|
foo5: foo,bar
|
||||||
|
EOF
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
1
test/integration/aliases/inspec.yml
Normal file
1
test/integration/aliases/inspec.yml
Normal file
@ -0,0 +1 @@
|
|||||||
|
name: aliases
|
@ -1,24 +0,0 @@
|
|||||||
# Copyright:: 2012-2019, Chef Software, Inc.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
#
|
|
||||||
|
|
||||||
require_relative './spec_helper'
|
|
||||||
|
|
||||||
describe 'postfix::aliases' do
|
|
||||||
context 'configures' do
|
|
||||||
describe file('/etc/aliases') do
|
|
||||||
its(:content) { should match(/^# Auto-generated by Chef/) }
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
17
test/integration/canonical/controls/canonical.rb
Normal file
17
test/integration/canonical/controls/canonical.rb
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
recipient_canonical =
|
||||||
|
case os.family
|
||||||
|
when 'suse'
|
||||||
|
'/etc/postfix/recipient_canonical.lmdb'
|
||||||
|
else
|
||||||
|
'/etc/postfix/recipient_canonical.db'
|
||||||
|
end
|
||||||
|
|
||||||
|
control 'canonical' do
|
||||||
|
describe file recipient_canonical do
|
||||||
|
it { should be_file }
|
||||||
|
end
|
||||||
|
|
||||||
|
describe file '/etc/postfix/main.cf' do
|
||||||
|
its('content') { should match(%r{^\s*recipient_canonical_maps\s*=.*\/etc\/postfix\/recipient_canonical\s*$}) }
|
||||||
|
end
|
||||||
|
end
|
1
test/integration/canonical/inspec.yml
Normal file
1
test/integration/canonical/inspec.yml
Normal file
@ -0,0 +1 @@
|
|||||||
|
name: canonical
|
@ -1,23 +0,0 @@
|
|||||||
# Copyright:: 2012-2019, Chef Software, Inc.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
#
|
|
||||||
require_relative './spec_helper'
|
|
||||||
|
|
||||||
describe file('/etc/postfix/recipient_canonical.db') do
|
|
||||||
it { should be_file }
|
|
||||||
end
|
|
||||||
|
|
||||||
describe file('/etc/postfix/main.cf') do
|
|
||||||
its(:content) { should match(%r{^\s*recipient_canonical_maps\s*=.*\/etc\/postfix\/recipient_canonical\s*$}) }
|
|
||||||
end
|
|
7
test/integration/client/controls/client.rb
Normal file
7
test/integration/client/controls/client.rb
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
include_controls 'default'
|
||||||
|
|
||||||
|
control 'client' do
|
||||||
|
describe file '/etc/postfix/main.cf' do
|
||||||
|
its('content') { should match /Configured as client/ }
|
||||||
|
end
|
||||||
|
end
|
4
test/integration/client/inspec.yml
Normal file
4
test/integration/client/inspec.yml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
name: client
|
||||||
|
depends:
|
||||||
|
- name: default
|
||||||
|
path: test/integration/default
|
@ -1,22 +0,0 @@
|
|||||||
# Copyright:: 2012-2019, Chef Software, Inc.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
#
|
|
||||||
|
|
||||||
require_relative './spec_helper'
|
|
||||||
|
|
||||||
describe 'postfix::client' do
|
|
||||||
it 'doesnt configure postfix because solo is unsupported' do
|
|
||||||
pending 'Postfix may be set up by default on the system, but not configured by Chef because this test assumes it is run under Chef Solo'
|
|
||||||
end
|
|
||||||
end
|
|
14
test/integration/default/controls/default.rb
Normal file
14
test/integration/default/controls/default.rb
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
control 'default' do
|
||||||
|
describe package 'postfix' do
|
||||||
|
it { should be_installed }
|
||||||
|
end
|
||||||
|
|
||||||
|
describe service 'postfix' do
|
||||||
|
it { should be_enabled }
|
||||||
|
it { should be_running }
|
||||||
|
end
|
||||||
|
|
||||||
|
describe file '/etc/postfix/main.cf' do
|
||||||
|
its('content') { should match(/^# Auto-generated by Chef/) }
|
||||||
|
end
|
||||||
|
end
|
1
test/integration/default/inspec.yml
Normal file
1
test/integration/default/inspec.yml
Normal file
@ -0,0 +1 @@
|
|||||||
|
name: default
|
@ -1,33 +0,0 @@
|
|||||||
# Copyright:: 2012-2019, Chef Software, Inc.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
#
|
|
||||||
|
|
||||||
require_relative './spec_helper'
|
|
||||||
|
|
||||||
describe 'postfix::default' do
|
|
||||||
describe package('postfix') do
|
|
||||||
it { should be_installed }
|
|
||||||
end
|
|
||||||
|
|
||||||
describe service('postfix') do
|
|
||||||
it { should be_enabled }
|
|
||||||
it { should be_running }
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'configures' do
|
|
||||||
describe file("#{postfix_conf_path}/main.cf") do
|
|
||||||
its(:content) { should match(/^# Auto-generated by Chef/) }
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
@ -1,19 +0,0 @@
|
|||||||
require 'serverspec'
|
|
||||||
|
|
||||||
set :backend, :exec
|
|
||||||
set :path, '/sbin:/usr/local/sbin:$PATH'
|
|
||||||
|
|
||||||
def family
|
|
||||||
fam = 'solaris2'
|
|
||||||
return fam unless File.exist? '/etc/release'
|
|
||||||
fam = 'omnios' if File.read('/etc/release') =~ /^\s*(OmniOS)/
|
|
||||||
fam
|
|
||||||
end
|
|
||||||
|
|
||||||
def postfix_conf_path
|
|
||||||
if os[:family] == 'solaris' && family == 'omnios'
|
|
||||||
'/opt/omni/etc/postfix/'
|
|
||||||
else
|
|
||||||
'/etc/postfix'
|
|
||||||
end
|
|
||||||
end
|
|
@ -0,0 +1,19 @@
|
|||||||
|
control 'sasl_auth_multiple' do
|
||||||
|
describe file '/etc/postfix/sasl_passwd' do
|
||||||
|
its('content') do
|
||||||
|
should cmp <<~EOF
|
||||||
|
# Auto-generated by Chef.
|
||||||
|
# Local modifications will be overwritten.
|
||||||
|
|
||||||
|
relayhost1 kitchenuser:not-a-real-thing
|
||||||
|
relayhost2 anotherkitchenuser:yet-not-a-real-thing
|
||||||
|
smtp_sasl_passwd :
|
||||||
|
smtp_sasl_user_name :
|
||||||
|
EOF
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe postfix_conf '/etc/postfix/main.cf' do
|
||||||
|
its('smtp_sasl_password_maps') { should eq 'hash:/etc/postfix/sasl_passwd' }
|
||||||
|
end
|
||||||
|
end
|
1
test/integration/sasl_auth_multiple/inspec.yml
Normal file
1
test/integration/sasl_auth_multiple/inspec.yml
Normal file
@ -0,0 +1 @@
|
|||||||
|
name: sasl_auth_multiple
|
@ -1,31 +0,0 @@
|
|||||||
# Copyright:: 2012-2019, Chef Software, Inc.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
#
|
|
||||||
require_relative './spec_helper'
|
|
||||||
|
|
||||||
describe 'postfix::sasl_auth' do
|
|
||||||
let(:sasl_passwd_file) { '/etc/postfix/sasl_passwd' }
|
|
||||||
|
|
||||||
it 'manages postfix sasl_passwd' do
|
|
||||||
expect(file(sasl_passwd_file).content).to match(/^# This file is generated by Chef for/)
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'configures postfix to use the sasl_passwd file' do
|
|
||||||
expect(file('/etc/postfix/main.cf').content).to match(/^\s*smtp_sasl_password_maps\s*=.*#{sasl_passwd_file}\s*$/)
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'configures postfix sasl_passwd with multiple entries' do
|
|
||||||
expect(file(sasl_passwd_file).content).to match(/^# This file is generated by Chef for .*\nrelayhost1 kitchenuser:not-a-real-thing\nrelayhost2 anotherkitchenuser:yet-not-a-real-thing\n/)
|
|
||||||
end
|
|
||||||
end
|
|
17
test/integration/sasl_auth_none/controls/sasl_auth_none.rb
Normal file
17
test/integration/sasl_auth_none/controls/sasl_auth_none.rb
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
control 'sasl_auth_none' do
|
||||||
|
describe file '/etc/postfix/sasl_passwd' do
|
||||||
|
its('content') do
|
||||||
|
should cmp <<~EOF
|
||||||
|
# Auto-generated by Chef.
|
||||||
|
# Local modifications will be overwritten.
|
||||||
|
|
||||||
|
smtp_sasl_passwd :
|
||||||
|
smtp_sasl_user_name :
|
||||||
|
EOF
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe postfix_conf '/etc/postfix/main.cf' do
|
||||||
|
its('smtp_sasl_password_maps') { should eq 'hash:/etc/postfix/sasl_passwd' }
|
||||||
|
end
|
||||||
|
end
|
1
test/integration/sasl_auth_none/inspec.yml
Normal file
1
test/integration/sasl_auth_none/inspec.yml
Normal file
@ -0,0 +1 @@
|
|||||||
|
name: sasl_auth_none
|
@ -1,31 +0,0 @@
|
|||||||
# Copyright:: 2012-2019, Chef Software, Inc.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
#
|
|
||||||
require_relative './spec_helper'
|
|
||||||
|
|
||||||
describe 'postfix::sasl_auth' do
|
|
||||||
let(:sasl_passwd_file) { '/etc/postfix/sasl_passwd' }
|
|
||||||
|
|
||||||
it 'manages postfix sasl_passwd' do
|
|
||||||
expect(file(sasl_passwd_file).content).to match(/^# Auto-generated by Chef/)
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'configures postfix to use the sasl_passwd file' do
|
|
||||||
expect(file('/etc/postfix/main.cf').content).to match(/^\s*smtp_sasl_password_maps\s*=.*#{sasl_passwd_file}\s*$/)
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'configures postfix sasl_passwd with nothing in it' do
|
|
||||||
expect(file(sasl_passwd_file).content).to match(/^# This file is generated by Chef for .*\n/)
|
|
||||||
end
|
|
||||||
end
|
|
18
test/integration/sasl_auth_one/controls/sasl_auth_one.rb
Normal file
18
test/integration/sasl_auth_one/controls/sasl_auth_one.rb
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
control 'sasl_auth_one' do
|
||||||
|
describe file '/etc/postfix/sasl_passwd' do
|
||||||
|
its('content') do
|
||||||
|
should cmp <<~EOF
|
||||||
|
# Auto-generated by Chef.
|
||||||
|
# Local modifications will be overwritten.
|
||||||
|
|
||||||
|
relayhost kitchenuser:not-a-real-thing
|
||||||
|
smtp_sasl_passwd :
|
||||||
|
smtp_sasl_user_name :
|
||||||
|
EOF
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe postfix_conf '/etc/postfix/main.cf' do
|
||||||
|
its('smtp_sasl_password_maps') { should eq 'hash:/etc/postfix/sasl_passwd' }
|
||||||
|
end
|
||||||
|
end
|
1
test/integration/sasl_auth_one/inspec.yml
Normal file
1
test/integration/sasl_auth_one/inspec.yml
Normal file
@ -0,0 +1 @@
|
|||||||
|
name: sasl_auth_one
|
@ -1,31 +0,0 @@
|
|||||||
# Copyright:: 2012-2019, Chef Software, Inc.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
#
|
|
||||||
require_relative './spec_helper'
|
|
||||||
|
|
||||||
describe 'postfix::sasl_auth' do
|
|
||||||
let(:sasl_passwd_file) { '/etc/postfix/sasl_passwd' }
|
|
||||||
|
|
||||||
it 'manages postfix sasl_passwd' do
|
|
||||||
expect(file(sasl_passwd_file).content).to match(/^# This file is generated by Chef for/)
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'configures postfix to use the sasl_passwd file' do
|
|
||||||
expect(file('/etc/postfix/main.cf').content).to match(/^\s*smtp_sasl_password_maps\s*=.*#{sasl_passwd_file}\s*$/)
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'configures postfix sasl_passwd with one entry' do
|
|
||||||
expect(file(sasl_passwd_file).content).to match(/^# This file is generated by Chef for .*\nrelayhost kitchenuser:not-a-real-thing\n/)
|
|
||||||
end
|
|
||||||
end
|
|
7
test/integration/server/controls/server.rb
Normal file
7
test/integration/server/controls/server.rb
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
include_controls 'default'
|
||||||
|
|
||||||
|
control 'server' do
|
||||||
|
describe file '/etc/postfix/main.cf' do
|
||||||
|
its('content') { should match /Configured as master/ }
|
||||||
|
end
|
||||||
|
end
|
4
test/integration/server/inspec.yml
Normal file
4
test/integration/server/inspec.yml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
name: server
|
||||||
|
depends:
|
||||||
|
- name: default
|
||||||
|
path: test/integration/default
|
@ -1,21 +0,0 @@
|
|||||||
# Copyright:: 2012-2019, Chef Software, Inc.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
#
|
|
||||||
require_relative './spec_helper'
|
|
||||||
|
|
||||||
describe 'postfix::server' do
|
|
||||||
it 'doesnt configure postfix because solo is unsupported' do
|
|
||||||
pending 'Postfix may be set up by default on the system, but not configured by Chef because this test assumes it is run under Chef Solo'
|
|
||||||
end
|
|
||||||
end
|
|
Loading…
x
Reference in New Issue
Block a user