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:
Lance Albertson
2025-01-29 14:51:57 -08:00
committed by GitHub
parent 6cb80c3be7
commit 1cd55ab40d
30 changed files with 224 additions and 250 deletions

View 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

View File

@@ -0,0 +1 @@
name: aliases

View File

@@ -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