aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/puppet/provider/ssh_authorized_key/parsed.rb92
-rw-r--r--lib/puppet/provider/sshkey/parsed.rb47
-rw-r--r--lib/puppet/type/ssh_authorized_key.rb17
-rw-r--r--lib/puppet/type/sshkey.rb26
-rw-r--r--spec/acceptance/tests/resource/ssh_authorized_key/create.rb35
-rw-r--r--spec/acceptance/tests/resource/ssh_authorized_key/destroy.rb35
-rw-r--r--spec/acceptance/tests/resource/ssh_authorized_key/modify.rb33
-rw-r--r--spec/acceptance/tests/resource/ssh_authorized_key/query.rb30
-rw-r--r--spec/acceptance/tests/resource/sshkey/create.rb124
-rw-r--r--spec/integration/provider/ssh_authorized_key_spec.rb143
-rw-r--r--spec/integration/provider/sshkey_spec.rb94
-rw-r--r--spec/lib/puppet_spec/compiler.rb10
-rw-r--r--spec/spec_helper_local.rb4
-rw-r--r--spec/unit/provider/sshkey/parsed_spec.rb48
-rw-r--r--spec/unit/type/ssh_authorized_key_spec.rb218
-rw-r--r--spec/unit/type/sshkey_spec.rb42
16 files changed, 480 insertions, 518 deletions
diff --git a/lib/puppet/provider/ssh_authorized_key/parsed.rb b/lib/puppet/provider/ssh_authorized_key/parsed.rb
index f7ac9f7..45ef649 100644
--- a/lib/puppet/provider/ssh_authorized_key/parsed.rb
+++ b/lib/puppet/provider/ssh_authorized_key/parsed.rb
@@ -2,44 +2,44 @@ require 'puppet/provider/parsedfile'
Puppet::Type.type(:ssh_authorized_key).provide(
:parsed,
- :parent => Puppet::Provider::ParsedFile,
- :filetype => :flat,
- :default_target => ''
+ parent: Puppet::Provider::ParsedFile,
+ filetype: :flat,
+ default_target: '',
) do
- desc "Parse and generate authorized_keys files for SSH."
+ desc 'Parse and generate authorized_keys files for SSH.'
- text_line :comment, :match => /^\s*#/
- text_line :blank, :match => /^\s*$/
+ text_line :comment, match: %r{^\s*#}
+ text_line :blank, match: %r{^\s*$}
record_line :parsed,
- :fields => %w{options type key name},
- :optional => %w{options},
- :rts => /^\s+/,
- :match => Puppet::Type.type(:ssh_authorized_key).keyline_regex,
- :post_parse => proc { |h|
- h[:name] = "" if h[:name] == :absent
- h[:options] ||= [:absent]
- h[:options] = Puppet::Type::Ssh_authorized_key::ProviderParsed.parse_options(h[:options]) if h[:options].is_a? String
- },
- :pre_gen => proc { |h|
- # if this name was generated, don't write it back to disk
- h[:name] = "" if h[:unnamed]
- h[:options] = [] if h[:options].include?(:absent)
- h[:options] = h[:options].join(',')
- }
+ fields: ['options', 'type', 'key', 'name'],
+ optional: ['options'],
+ rts: %r{^\s+},
+ match: Puppet::Type.type(:ssh_authorized_key).keyline_regex,
+ post_parse: proc { |h|
+ h[:name] = '' if h[:name] == :absent
+ h[:options] ||= [:absent]
+ h[:options] = Puppet::Type::Ssh_authorized_key::ProviderParsed.parse_options(h[:options]) if h[:options].is_a? String
+ },
+ pre_gen: proc { |h|
+ # if this name was generated, don't write it back to disk
+ h[:name] = '' if h[:unnamed]
+ h[:options] = [] if h[:options].include?(:absent)
+ h[:options] = h[:options].join(',')
+ }
record_line :key_v1,
- :fields => %w{options bits exponent modulus name},
- :optional => %w{options},
- :rts => /^\s+/,
- :match => /^(?:(.+) )?(\d+) (\d+) (\d+)(?: (.+))?$/
+ fields: ['options', 'bits', 'exponent', 'modulus', 'name'],
+ optional: ['options'],
+ rts: %r{^\s+},
+ match: %r{^(?:(.+) )?(\d+) (\d+) (\d+)(?: (.+))?$}
def dir_perm
- 0700
+ 0o700
end
def file_perm
- 0600
+ 0o600
end
def user
@@ -48,7 +48,7 @@ Puppet::Type.type(:ssh_authorized_key).provide(
end
def flush
- raise Puppet::Error, "Cannot write SSH authorized keys without user" unless @resource.should(:user)
+ raise Puppet::Error, 'Cannot write SSH authorized keys without user' unless @resource.should(:user)
raise Puppet::Error, "User '#{@resource.should(:user)}' does not exist" unless Puppet::Util.uid(@resource.should(:user))
# ParsedFile usually calls backup_target much later in the flush process,
# but our SUID makes that fail to open filebucket files for writing.
@@ -57,14 +57,14 @@ Puppet::Type.type(:ssh_authorized_key).provide(
self.class.backup_target(target)
Puppet::Util::SUIDManager.asuser(@resource.should(:user)) do
- unless Puppet::FileSystem.exist?(dir = File.dirname(target))
- Puppet.debug "Creating #{dir} as #{@resource.should(:user)}"
- Dir.mkdir(dir, dir_perm)
- end
+ unless Puppet::FileSystem.exist?(dir = File.dirname(target))
+ Puppet.debug "Creating #{dir} as #{@resource.should(:user)}"
+ Dir.mkdir(dir, dir_perm)
+ end
- super
+ super
- File.chmod(file_perm, target)
+ File.chmod(file_perm, target)
end
end
@@ -73,17 +73,17 @@ Puppet::Type.type(:ssh_authorized_key).provide(
def self.parse_options(options)
result = []
scanner = StringScanner.new(options)
- while !scanner.eos?
- scanner.skip(/[ \t]*/)
+ until scanner.eos?
+ scanner.skip(%r{[ \t]*})
# scan a long option
- if out = scanner.scan(/[-a-z0-9A-Z_]+=\".*?[^\\]\"/) or out = scanner.scan(/[-a-z0-9A-Z_]+/)
+ if (out = scanner.scan(%r{[-a-z0-9A-Z_]+=\".*?[^\\]\"})) || (out = scanner.scan(%r{[-a-z0-9A-Z_]+}))
result << out
else
# found an unscannable token, let's abort
break
end
# eat a comma
- scanner.skip(/[ \t]*,[ \t]*/)
+ scanner.skip(%r{[ \t]*,[ \t]*})
end
result
end
@@ -91,15 +91,13 @@ Puppet::Type.type(:ssh_authorized_key).provide(
def self.prefetch_hook(records)
name_index = 0
records.each do |record|
- if record[:record_type] == :parsed && record[:name].empty?
- record[:unnamed] = true
- # Generate a unique ID for unnamed keys, in case they need purging.
- # If you change this, you have to keep
- # Puppet::Type::User#unknown_keys_in_file in sync! (PUP-3357)
- record[:name] = "#{record[:target]}:unnamed-#{ name_index += 1 }"
- Puppet.debug("generating name for on-disk ssh_authorized_key #{record[:key]}: #{record[:name]}")
- end
+ next unless record[:record_type] == :parsed && record[:name].empty?
+ record[:unnamed] = true
+ # Generate a unique ID for unnamed keys, in case they need purging.
+ # If you change this, you have to keep
+ # Puppet::Type::User#unknown_keys_in_file in sync! (PUP-3357)
+ record[:name] = "#{record[:target]}:unnamed-#{name_index += 1}"
+ Puppet.debug("generating name for on-disk ssh_authorized_key #{record[:key]}: #{record[:name]}")
end
end
end
-
diff --git a/lib/puppet/provider/sshkey/parsed.rb b/lib/puppet/provider/sshkey/parsed.rb
index 1c42aeb..3713df1 100644
--- a/lib/puppet/provider/sshkey/parsed.rb
+++ b/lib/puppet/provider/sshkey/parsed.rb
@@ -2,49 +2,48 @@ require 'puppet/provider/parsedfile'
Puppet::Type.type(:sshkey).provide(
:parsed,
- :parent => Puppet::Provider::ParsedFile,
- :filetype => :flat
+ parent: Puppet::Provider::ParsedFile,
+ filetype: :flat,
) do
- desc "Parse and generate host-wide known hosts files for SSH."
+ desc 'Parse and generate host-wide known hosts files for SSH.'
- text_line :comment, :match => /^#/
- text_line :blank, :match => /^\s*$/
+ text_line :comment, match: %r{^#}
+ text_line :blank, match: %r{^\s*$}
- record_line :parsed, :fields => %w{name type key},
- :post_parse => proc { |hash|
- names = hash[:name].split(",", -1)
- hash[:name] = names.shift
- hash[:host_aliases] = names
- },
- :pre_gen => proc { |hash|
- if hash[:host_aliases]
- hash[:name] = [hash[:name], hash[:host_aliases]].flatten.join(",")
- hash.delete(:host_aliases)
- end
- }
+ record_line :parsed, fields: ['name', 'type', 'key'],
+ post_parse: proc { |hash|
+ names = hash[:name].split(',', -1)
+ hash[:name] = names.shift
+ hash[:host_aliases] = names
+ },
+ pre_gen: proc { |hash|
+ if hash[:host_aliases]
+ hash[:name] = [hash[:name], hash[:host_aliases]].flatten.join(',')
+ hash.delete(:host_aliases)
+ end
+ }
# Make sure to use mode 644 if ssh_known_hosts is newly created
def self.default_mode
- 0644
+ 0o644
end
def self.default_target
case Facter.value(:operatingsystem)
- when "Darwin"
+ when 'Darwin'
# Versions 10.11 and up use /etc/ssh/ssh_known_hosts
version = Facter.value(:macosx_productversion_major)
if version
if Puppet::Util::Package.versioncmp(version, '10.11') >= 0
- "/etc/ssh/ssh_known_hosts"
+ '/etc/ssh/ssh_known_hosts'
else
- "/etc/ssh_known_hosts"
+ '/etc/ssh_known_hosts'
end
else
- "/etc/ssh_known_hosts"
+ '/etc/ssh_known_hosts'
end
else
- "/etc/ssh/ssh_known_hosts"
+ '/etc/ssh/ssh_known_hosts'
end
end
end
-
diff --git a/lib/puppet/type/ssh_authorized_key.rb b/lib/puppet/type/ssh_authorized_key.rb
index c6ff5b6..84dfce5 100644
--- a/lib/puppet/type/ssh_authorized_key.rb
+++ b/lib/puppet/type/ssh_authorized_key.rb
@@ -46,11 +46,10 @@ module Puppet
comment for each instance."
isnamevar
-
end
newproperty(:type) do
- desc "The encryption type used."
+ desc 'The encryption type used.'
newvalues :'ssh-dss', :'ssh-rsa', :'ecdsa-sha2-nistp256', :'ecdsa-sha2-nistp384', :'ecdsa-sha2-nistp521', :'ssh-ed25519'
@@ -71,7 +70,7 @@ module Puppet
the `name` attribute/resource title."
validate do |value|
- raise Puppet::Error, _("Key must not contain whitespace: %{value}") % { value: value } if value =~ /\s/
+ raise Puppet::Error, _('Key must not contain whitespace: %{value}') % { value: value } if value =~ %r{\s}
end
end
@@ -89,14 +88,14 @@ module Puppet
defaultto :absent
def should
- return super if defined?(@should) and @should[0] != :absent
+ return super if defined?(@should) && @should[0] != :absent
return nil unless user = resource[:user]
begin
return File.expand_path("~#{user}/.ssh/authorized_keys")
rescue
- Puppet.debug "The required user is not yet present on the system"
+ Puppet.debug 'The required user is not yet present on the system'
return nil
end
end
@@ -106,14 +105,14 @@ module Puppet
end
end
- newproperty(:options, :array_matching => :all) do
+ newproperty(:options, array_matching: :all) do
desc "Key options; see sshd(8) for possible values. Multiple values
should be specified as an array."
- defaultto do :absent end
+ defaultto { :absent }
validate do |value|
- unless value == :absent or value =~ /^[-a-z0-9A-Z_]+(?:=\".*?\")?$/
+ unless value == :absent || value =~ %r{^[-a-z0-9A-Z_]+(?:=\".*?\")?$}
raise Puppet::Error, _("Option %{value} is not valid. A single option must either be of the form 'option' or 'option=\"value\". Multiple options must be provided as an array") % { value: value }
end
end
@@ -135,7 +134,7 @@ module Puppet
end
# regular expression suitable for use by a ParsedFile based provider
- REGEX = /^(?:(.+)\s+)?(ssh-dss|ssh-ed25519|ssh-rsa|ecdsa-sha2-nistp256|ecdsa-sha2-nistp384|ecdsa-sha2-nistp521)\s+([^ ]+)\s*(.*)$/
+ REGEX = %r{^(?:(.+)\s+)?(ssh-dss|ssh-ed25519|ssh-rsa|ecdsa-sha2-nistp256|ecdsa-sha2-nistp384|ecdsa-sha2-nistp521)\s+([^ ]+)\s*(.*)$}
def self.keyline_regex
REGEX
end
diff --git a/lib/puppet/type/sshkey.rb b/lib/puppet/type/sshkey.rb
index 31e590b..6e51cff 100644
--- a/lib/puppet/type/sshkey.rb
+++ b/lib/puppet/type/sshkey.rb
@@ -9,7 +9,7 @@ module Puppet
ensurable
newproperty(:type) do
- desc "The encryption type used. Probably ssh-dss or ssh-rsa."
+ desc 'The encryption type used. Probably ssh-dss or ssh-rsa.'
newvalues :'ssh-dss', :'ssh-ed25519', :'ssh-rsa', :'ecdsa-sha2-nistp256', :'ecdsa-sha2-nistp384', :'ecdsa-sha2-nistp521'
@@ -30,7 +30,7 @@ module Puppet
the `name` attribute/resource title."
end
- # FIXME This should automagically check for aliases to the hosts, just
+ # FIXME: This should automagically check for aliases to the hosts, just
# to see if we can automatically glean any aliases.
newproperty(:host_aliases) do
desc 'Any aliases the host might have. Multiple values must be
@@ -41,6 +41,7 @@ module Puppet
def insync?(is)
is == @should
end
+
# We actually want to return the whole array here, not just the first
# value.
def should
@@ -48,23 +49,23 @@ module Puppet
end
validate do |value|
- if value =~ /\s/
- raise Puppet::Error, _("Aliases cannot include whitespace")
+ if value =~ %r{\s}
+ raise Puppet::Error, _('Aliases cannot include whitespace')
end
- if value =~ /,/
- raise Puppet::Error, _("Aliases must be provided as an array, not a comma-separated list")
+ if value =~ %r{,}
+ raise Puppet::Error, _('Aliases must be provided as an array, not a comma-separated list')
end
end
end
newparam(:name) do
- desc "The host name that the key is associated with."
+ desc 'The host name that the key is associated with.'
isnamevar
validate do |value|
- raise Puppet::Error, _("Resourcename cannot include whitespaces") if value =~ /\s/
- raise Puppet::Error, _("No comma in resourcename allowed. If you want to specify aliases use the host_aliases property") if value.include?(',')
+ raise Puppet::Error, _('Resourcename cannot include whitespaces') if value =~ %r{\s}
+ raise Puppet::Error, _('No comma in resourcename allowed. If you want to specify aliases use the host_aliases property') if value.include?(',')
end
end
@@ -72,12 +73,13 @@ module Puppet
desc "The file in which to store the ssh key. Only used by
the `parsed` provider."
- defaultto { if @resource.class.defaultprovider.ancestors.include?(Puppet::Provider::ParsedFile)
- @resource.class.defaultprovider.default_target
+ defaultto do
+ if @resource.class.defaultprovider.ancestors.include?(Puppet::Provider::ParsedFile)
+ @resource.class.defaultprovider.default_target
else
nil
end
- }
+ end
end
end
end
diff --git a/spec/acceptance/tests/resource/ssh_authorized_key/create.rb b/spec/acceptance/tests/resource/ssh_authorized_key/create.rb
index 6b4c879..17450e7 100644
--- a/spec/acceptance/tests/resource/ssh_authorized_key/create.rb
+++ b/spec/acceptance/tests/resource/ssh_authorized_key/create.rb
@@ -1,39 +1,38 @@
-test_name "should create an entry for an SSH authorized key"
+test_name 'should create an entry for an SSH authorized key'
tag 'audit:medium',
- 'audit:refactor', # Use block style `test_run`
- 'audit:acceptance' # Could be done at the integration (or unit) layer though
- # actual changing of resources could irreparably damage a
- # host running this, or require special permissions.
+ 'audit:refactor', # Use block style `test_run`
+ # Could be done at the integration (or unit) layer though
+ # actual changing of resources could irreparably damage a
+ # host running this, or require special permissions.
+ 'audit:acceptance'
-confine :except, :platform => ['windows']
+confine :except, platform: ['windows']
auth_keys = '~/.ssh/authorized_keys'
-name = "pl#{rand(999999).to_i}"
+name = "pl#{rand(999_999).to_i}"
agents.each do |agent|
teardown do
- #(teardown) restore the #{auth_keys} file
- on(agent, "mv /tmp/auth_keys #{auth_keys}", :acceptable_exit_codes => [0,1])
+ # (teardown) restore the #{auth_keys} file
+ on(agent, "mv /tmp/auth_keys #{auth_keys}", acceptable_exit_codes: [0, 1])
end
#------- SETUP -------#
step "(setup) backup #{auth_keys} file"
- on(agent, "cp #{auth_keys} /tmp/auth_keys", :acceptable_exit_codes => [0,1])
+ on(agent, "cp #{auth_keys} /tmp/auth_keys", acceptable_exit_codes: [0, 1])
on(agent, "chown $LOGNAME #{auth_keys}")
#------- TESTS -------#
- step "create an authorized key entry with puppet (present)"
+ step 'create an authorized key entry with puppet (present)'
args = ['ensure=present',
- "user=$LOGNAME",
+ 'user=$LOGNAME',
"type='rsa'",
- "key='mykey'",
- ]
- on(agent, puppet_resource('ssh_authorized_key', "#{name}", args))
+ "key='mykey'"]
+ on(agent, puppet_resource('ssh_authorized_key', name.to_s, args))
step "verify entry in #{auth_keys}"
- on(agent, "cat #{auth_keys}") do |res|
- fail_test "didn't find the ssh_authorized_key for #{name}" unless stdout.include? "#{name}"
+ on(agent, "cat #{auth_keys}") do |_res|
+ fail_test "didn't find the ssh_authorized_key for #{name}" unless stdout.include? name.to_s
end
-
end
diff --git a/spec/acceptance/tests/resource/ssh_authorized_key/destroy.rb b/spec/acceptance/tests/resource/ssh_authorized_key/destroy.rb
index c80e967..3d17a23 100644
--- a/spec/acceptance/tests/resource/ssh_authorized_key/destroy.rb
+++ b/spec/acceptance/tests/resource/ssh_authorized_key/destroy.rb
@@ -1,42 +1,41 @@
-test_name "should delete an entry for an SSH authorized key"
+test_name 'should delete an entry for an SSH authorized key'
tag 'audit:medium',
- 'audit:refactor', # Use block style `test_run`
- 'audit:acceptance' # Could be done at the integration (or unit) layer though
- # actual changing of resources could irreparably damage a
- # host running this, or require special permissions.
+ 'audit:refactor', # Use block style `test_run`
+ # Could be done at the integration (or unit) layer though
+ # actual changing of resources could irreparably damage a
+ # host running this, or require special permissions.
+ 'audit:acceptance'
-confine :except, :platform => ['windows']
+confine :except, platform: ['windows']
auth_keys = '~/.ssh/authorized_keys'
-name = "pl#{rand(999999).to_i}"
+name = "pl#{rand(999_999).to_i}"
agents.each do |agent|
teardown do
- #(teardown) restore the #{auth_keys} file
- on(agent, "mv /tmp/auth_keys #{auth_keys}", :acceptable_exit_codes => [0,1])
+ # (teardown) restore the #{auth_keys} file
+ on(agent, "mv /tmp/auth_keys #{auth_keys}", acceptable_exit_codes: [0, 1])
end
#------- SETUP -------#
step "(setup) backup #{auth_keys} file"
- on(agent, "cp #{auth_keys} /tmp/auth_keys", :acceptable_exit_codes => [0,1])
+ on(agent, "cp #{auth_keys} /tmp/auth_keys", acceptable_exit_codes: [0, 1])
step "(setup) create an authorized key in the #{auth_keys} file"
on(agent, "echo '' >> #{auth_keys} && echo 'ssh-rsa mykey #{name}' >> #{auth_keys}")
on(agent, "chown $LOGNAME #{auth_keys}")
#------- TESTS -------#
- step "delete an authorized key entry with puppet (absent)"
+ step 'delete an authorized key entry with puppet (absent)'
args = ['ensure=absent',
- "user=$LOGNAME",
+ 'user=$LOGNAME',
"type='rsa'",
- "key='mykey'",
- ]
- on(agent, puppet_resource('ssh_authorized_key', "#{name}", args))
+ "key='mykey'"]
+ on(agent, puppet_resource('ssh_authorized_key', name.to_s, args))
step "verify entry deleted from #{auth_keys}"
- on(agent, "cat #{auth_keys}") do |res|
- fail_test "found the ssh_authorized_key for #{name}" if stdout.include? "#{name}"
+ on(agent, "cat #{auth_keys}") do |_res|
+ fail_test "found the ssh_authorized_key for #{name}" if stdout.include? name.to_s
end
-
end
diff --git a/spec/acceptance/tests/resource/ssh_authorized_key/modify.rb b/spec/acceptance/tests/resource/ssh_authorized_key/modify.rb
index 0a50c31..85753a3 100644
--- a/spec/acceptance/tests/resource/ssh_authorized_key/modify.rb
+++ b/spec/acceptance/tests/resource/ssh_authorized_key/modify.rb
@@ -1,43 +1,42 @@
-test_name "should update an entry for an SSH authorized key"
+test_name 'should update an entry for an SSH authorized key'
tag 'audit:medium',
- 'audit:refactor', # Use block style `test_run`
- 'audit:acceptance' # Could be done at the integration (or unit) layer though
- # actual changing of resources could irreparably damage a
- # host running this, or require special permissions.
+ 'audit:refactor', # Use block style `test_run`
+ # Could be done at the integration (or unit) layer though
+ # actual changing of resources could irreparably damage a
+ # host running this, or require special permissions.
+ 'audit:acceptance'
-confine :except, :platform => ['windows']
+confine :except, platform: ['windows']
auth_keys = '~/.ssh/authorized_keys'
-name = "pl#{rand(999999).to_i}"
+name = "pl#{rand(999_999).to_i}"
agents.each do |agent|
teardown do
- #(teardown) restore the #{auth_keys} file
- on(agent, "mv /tmp/auth_keys #{auth_keys}", :acceptable_exit_codes => [0,1])
+ # (teardown) restore the #{auth_keys} file
+ on(agent, "mv /tmp/auth_keys #{auth_keys}", acceptable_exit_codes: [0, 1])
end
#------- SETUP -------#
step "(setup) backup #{auth_keys} file"
- on(agent, "cp #{auth_keys} /tmp/auth_keys", :acceptable_exit_codes => [0,1])
+ on(agent, "cp #{auth_keys} /tmp/auth_keys", acceptable_exit_codes: [0, 1])
step "(setup) create an authorized key in the #{auth_keys} file"
on(agent, "echo '' >> #{auth_keys} && echo 'ssh-rsa mykey #{name}' >> #{auth_keys}")
on(agent, "chown $LOGNAME #{auth_keys}")
#------- TESTS -------#
- step "update an authorized key entry with puppet (present)"
+ step 'update an authorized key entry with puppet (present)'
args = ['ensure=present',
- "user=$LOGNAME",
+ 'user=$LOGNAME',
"type='rsa'",
- "key='mynewshinykey'",
- ]
- on(agent, puppet_resource('ssh_authorized_key', "#{name}", args))
+ "key='mynewshinykey'"]
+ on(agent, puppet_resource('ssh_authorized_key', name.to_s, args))
step "verify entry updated in #{auth_keys}"
- on(agent, "cat #{auth_keys}") do |res|
+ on(agent, "cat #{auth_keys}") do |_res|
fail_test "didn't find the updated key for #{name}" unless stdout.include? "mynewshinykey #{name}"
fail_test "Found old key mykey #{name}" if stdout.include? "mykey #{name}"
end
-
end
diff --git a/spec/acceptance/tests/resource/ssh_authorized_key/query.rb b/spec/acceptance/tests/resource/ssh_authorized_key/query.rb
index 8caff85..a31aa93 100644
--- a/spec/acceptance/tests/resource/ssh_authorized_key/query.rb
+++ b/spec/acceptance/tests/resource/ssh_authorized_key/query.rb
@@ -1,35 +1,35 @@
-test_name "should be able to find an existing SSH authorized key"
+test_name 'should be able to find an existing SSH authorized key'
tag 'audit:medium',
- 'audit:refactor', # Use block style `test_run`
- 'audit:acceptance' # Could be done at the integration (or unit) layer though
- # actual changing of resources could irreparably damage a
- # host running this, or require special permissions.
+ 'audit:refactor', # Use block style `test_run`
+ # Could be done at the integration (or unit) layer though
+ # actual changing of resources could irreparably damage a
+ # host running this, or require special permissions.
+ 'audit:acceptance'
-skip_test("This test is blocked by PUP-1605")
+skip_test('This test is blocked by PUP-1605')
-confine :except, :platform => ['windows']
+confine :except, platform: ['windows']
auth_keys = '~/.ssh/authorized_keys'
-name = "pl#{rand(999999).to_i}"
+name = "pl#{rand(999_999).to_i}"
agents.each do |agent|
teardown do
- #(teardown) restore the #{auth_keys} file
- on(agent, "mv /tmp/auth_keys #{auth_keys}", :acceptable_exit_codes => [0,1])
+ # (teardown) restore the #{auth_keys} file
+ on(agent, "mv /tmp/auth_keys #{auth_keys}", acceptable_exit_codes: [0, 1])
end
#------- SETUP -------#
step "(setup) backup #{auth_keys} file"
- on(agent, "cp #{auth_keys} /tmp/auth_keys", :acceptable_exit_codes => [0,1])
+ on(agent, "cp #{auth_keys} /tmp/auth_keys", acceptable_exit_codes: [0, 1])
step "(setup) create an authorized key in the #{auth_keys} file"
on(agent, "echo '' >> #{auth_keys} && echo 'ssh-rsa mykey #{name}' >> #{auth_keys}")
#------- TESTS -------#
- step "verify SSH authorized key query with puppet"
- on(agent, puppet_resource('ssh_authorized_key', "/#{name}")) do |res|
- fail_test "Didn't find the ssh_authorized_key for #{name}" unless stdout.include? "#{name}"
+ step 'verify SSH authorized key query with puppet'
+ on(agent, puppet_resource('ssh_authorized_key', "/#{name}")) do |_res|
+ fail_test "Didn't find the ssh_authorized_key for #{name}" unless stdout.include? name.to_s
end
-
end
diff --git a/spec/acceptance/tests/resource/sshkey/create.rb b/spec/acceptance/tests/resource/sshkey/create.rb
index 4e75379..1aa31c8 100644
--- a/spec/acceptance/tests/resource/sshkey/create.rb
+++ b/spec/acceptance/tests/resource/sshkey/create.rb
@@ -1,77 +1,77 @@
-test_name "(PUP-5508) Should add an SSH key to the correct ssh_known_hosts file on OS X/macOS" do
-# TestRail test case C93370
+test_name '(PUP-5508) Should add an SSH key to the correct ssh_known_hosts file on OS X/macOS' do
+ # TestRail test case C93370
-tag 'audit:medium',
- 'audit:acceptance' # Could be done at the integration (or unit) layer though
- # actual changing of resources could irreparably damage a
- # host running this, or require special permissions.
+ tag 'audit:medium',
+ # Could be done at the integration (or unit) layer though
+ # actual changing of resources could irreparably damage a
+ # host running this, or require special permissions.
+ 'audit:acceptance'
-confine :to, :platform => /osx/
+ confine :to, platform: %r{osx}
-keyname = "pl#{rand(999999).to_i}"
+ keyname = "pl#{rand(999_999).to_i}"
-# FIXME: This is bletcherous
-macos_version = fact_on(agent, "os.macosx.version.major")
-if ["10.9","10.10"].include? macos_version
- ssh_known_hosts = '/etc/ssh_known_hosts'
-else
- ssh_known_hosts = '/etc/ssh/ssh_known_hosts'
-end
+ # FIXME: This is bletcherous
+ macos_version = fact_on(agent, 'os.macosx.version.major')
+ ssh_known_hosts = if ['10.9', '10.10'].include? macos_version
+ '/etc/ssh_known_hosts'
+ else
+ '/etc/ssh/ssh_known_hosts'
+ end
-teardown do
- puts "Restore the #{ssh_known_hosts} file"
- agents.each do |agent|
- # Is it present?
- rc = on(agent, "[ -e /tmp/ssh_known_hosts ]",
- :accept_all_exit_codes => true)
- if rc.exit_code == 0
- # It's present, so restore the original
- on(agent, "mv -fv /tmp/ssh_known_hosts #{ssh_known_hosts}",
- :accept_all_exit_codes => true)
- else
- # It's missing, which means there wasn't one to backup; just
- # delete the one we laid down
- on(agent, "rm -fv #{ssh_known_hosts}",
- :accept_all_exit_codes => true)
+ teardown do
+ puts "Restore the #{ssh_known_hosts} file"
+ agents.each do |agent|
+ # Is it present?
+ rc = on(agent, '[ -e /tmp/ssh_known_hosts ]',
+ accept_all_exit_codes: true)
+ if rc.exit_code == 0
+ # It's present, so restore the original
+ on(agent, "mv -fv /tmp/ssh_known_hosts #{ssh_known_hosts}",
+ accept_all_exit_codes: true)
+ else
+ # It's missing, which means there wasn't one to backup; just
+ # delete the one we laid down
+ on(agent, "rm -fv #{ssh_known_hosts}",
+ accept_all_exit_codes: true)
+ end
end
end
-end
-#------- SETUP -------#
-step "Backup #{ssh_known_hosts} file, if present" do
- # The 'cp' might fail because the source file doesn't exist
- on(agent, "cp -fv #{ssh_known_hosts} /tmp/ssh_known_hosts",
- :acceptable_exit_codes => [0,1])
-end
+ #------- SETUP -------#
+ step "Backup #{ssh_known_hosts} file, if present" do
+ # The 'cp' might fail because the source file doesn't exist
+ on(agent, "cp -fv #{ssh_known_hosts} /tmp/ssh_known_hosts",
+ acceptable_exit_codes: [0, 1])
+ end
-#------- TESTS -------#
-step 'Verify that the default file is empty or non-existent' do
- # Is it even there?
- rc = on(agent, "[ ! -e #{ssh_known_hosts} ]",
- :acceptable_exit_codes => [0, 1])
- if rc.exit_code == 1
- # If it's there, it should be empty
- on(agent, "cat #{ssh_known_hosts}") do |res|
- fail_test "Default #{ssh_known_hosts} file not empty" \
- unless stdout.empty?
+ #------- TESTS -------#
+ step 'Verify that the default file is empty or non-existent' do
+ # Is it even there?
+ rc = on(agent, "[ ! -e #{ssh_known_hosts} ]",
+ acceptable_exit_codes: [0, 1])
+ if rc.exit_code == 1
+ # If it's there, it should be empty
+ on(agent, "cat #{ssh_known_hosts}") do |_res|
+ fail_test "Default #{ssh_known_hosts} file not empty" \
+ unless stdout.empty?
+ end
end
end
-end
-step "Add an sshkey to the default file" do
- args = [
- "ensure=present",
- "key=how_about_the_key_of_c",
- "type=ssh-rsa",
- ]
- on(agent, puppet_resource("sshkey", "#{keyname}", args))
-end
-
-step 'Verify the new entry in the default file' do
- on(agent, "cat #{ssh_known_hosts}") do |rc|
- fail_test "Didn't find the ssh_known_host entry for #{keyname}" \
- unless stdout.include? "#{keyname}"
+ step 'Add an sshkey to the default file' do
+ args = [
+ 'ensure=present',
+ 'key=how_about_the_key_of_c',
+ 'type=ssh-rsa',
+ ]
+ on(agent, puppet_resource('sshkey', keyname.to_s, args))
end
-end
+ step 'Verify the new entry in the default file' do
+ on(agent, "cat #{ssh_known_hosts}") do |_rc|
+ fail_test "Didn't find the ssh_known_host entry for #{keyname}" \
+ unless stdout.include? keyname.to_s
+ end
+ end
end
diff --git a/spec/integration/provider/ssh_authorized_key_spec.rb b/spec/integration/provider/ssh_authorized_key_spec.rb
index 14af2de..7dc40e3 100644
--- a/spec/integration/provider/ssh_authorized_key_spec.rb
+++ b/spec/integration/provider/ssh_authorized_key_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require 'puppet/file_bucket/dipper'
-describe Puppet::Type.type(:ssh_authorized_key).provider(:parsed), '(integration)', :unless => Puppet.features.microsoft_windows? do
+describe Puppet::Type.type(:ssh_authorized_key).provider(:parsed), '(integration)', unless: Puppet.features.microsoft_windows? do
include PuppetSpec::Files
let :fake_userfile do
@@ -18,7 +18,7 @@ describe Puppet::Type.type(:ssh_authorized_key).provider(:parsed), '(integration
[
'AAAAB3NzaC1yc2EAAAADAQABAAAAgQCi18JBZOq10X3w4f67nVhO0O3s5Y1vHH4UgMSM3ZnQwbC5hjGyYSi9UULOoQQoQynI/a0I9NL423/Xk/XJVIKCHcS8q6V2Wmjd+fLNelOjxxoW6mbIytEt9rDvwgq3Mof3/m21L3t2byvegR00a+ikKbmInPmKwjeWZpexCIsHzQ==', # 1024 bit
'AAAAB3NzaC1yc2EAAAADAQABAAAAgQDLClyvi3CsJw5Id6khZs2/+s11qOH4Gdp6iDioDsrIp0m8kSiPr71VGyQYAfPzzvHemHS7Xg0NkG1Kc8u9tRqBQfTvz7ubq0AT/g01+4P2hQ/soFkuwlUG/HVnnaYb6N0Qp5SHWvD5vBE2nFFQVpP5GrSctPtHSjzJq/i+6LYhmQ==', # 1024 bit
- 'AAAAB3NzaC1yc2EAAAADAQABAAABAQDLygAO6txXkh9FNV8xSsBkATeqLbHzS7sFjGI3gt0Dx6q3LjyKwbhQ1RLf28kd5G6VWiXmClU/RtiPdUz8nrGuun++2mrxzrXrvpR9dq1lygLQ2wn2cI35dN5bjRMtXy3decs6HUhFo9MoNwX250rUWfdCyNPhGIp6OOfmjdy+UeLGNxq9wDx6i4bT5tVVSqVRtsEfw9+ICXchzl85QudjneVVpP+thriPZXfXA5eaGwAo/dmoKOIhUwF96gpdLqzNtrGQuxPbV80PTbGv9ZtAtTictxaDz8muXO7he9pXmchUpxUKtMFjHkL0FAZ9tRPmv3RA30sEr2fZ8+LKvnE50w0' #2048 Bit
+ 'AAAAB3NzaC1yc2EAAAADAQABAAABAQDLygAO6txXkh9FNV8xSsBkATeqLbHzS7sFjGI3gt0Dx6q3LjyKwbhQ1RLf28kd5G6VWiXmClU/RtiPdUz8nrGuun++2mrxzrXrvpR9dq1lygLQ2wn2cI35dN5bjRMtXy3decs6HUhFo9MoNwX250rUWfdCyNPhGIp6OOfmjdy+UeLGNxq9wDx6i4bT5tVVSqVRtsEfw9+ICXchzl85QudjneVVpP+thriPZXfXA5eaGwAo/dmoKOIhUwF96gpdLqzNtrGQuxPbV80PTbGv9ZtAtTictxaDz8muXO7he9pXmchUpxUKtMFjHkL0FAZ9tRPmv3RA30sEr2fZ8+LKvnE50w0' # 2048 Bit
]
end
@@ -33,16 +33,16 @@ describe Puppet::Type.type(:ssh_authorized_key).provider(:parsed), '(integration
"ssh-rsa #{sample_rsa_keys[1]} root@someotherhost",
"ssh-dss #{sample_dsa_keys[0]} root@anywhere",
"ssh-rsa #{sample_rsa_keys[2]} paul",
- "ssh-rsa #{sample_rsa_keys[2]} dummy"
+ "ssh-rsa #{sample_rsa_keys[2]} dummy",
]
end
let :dummy do
Puppet::Type.type(:ssh_authorized_key).new(
- :name => 'dummy',
- :target => fake_userfile,
- :user => 'nobody',
- :ensure => :absent
+ name: 'dummy',
+ target: fake_userfile,
+ user: 'nobody',
+ ensure: :absent,
)
end
@@ -57,7 +57,7 @@ describe Puppet::Type.type(:ssh_authorized_key).provider(:parsed), '(integration
end
def create_fake_key(username, content)
- filename = (username == :root ? fake_rootfile : fake_userfile )
+ filename = ((username == :root) ? fake_rootfile : fake_userfile)
File.open(filename, 'w') do |f|
content.each do |line|
f.puts line
@@ -66,8 +66,8 @@ describe Puppet::Type.type(:ssh_authorized_key).provider(:parsed), '(integration
end
def check_fake_key(username, expected_content)
- filename = (username == :root ? fake_rootfile : fake_userfile )
- content = File.readlines(filename).map(&:chomp).sort.reject{ |x| x =~ /^# HEADER:/ }
+ filename = ((username == :root) ? fake_rootfile : fake_userfile)
+ content = File.readlines(filename).map(&:chomp).sort.reject { |x| x =~ %r{^# HEADER:} }
expect(content.join("\n")).to eq(expected_content.sort.join("\n"))
end
@@ -82,35 +82,34 @@ describe Puppet::Type.type(:ssh_authorized_key).provider(:parsed), '(integration
catalog.apply
end
- it "should not complain about empty lines and comments" do
+ it 'does not complain about empty lines and comments' do
described_class.expects(:flush).never
- sample = ['',sample_lines[0],' ',sample_lines[1],'# just a comment','#and another']
- create_fake_key(:user,sample)
+ sample = ['', sample_lines[0], ' ', sample_lines[1], '# just a comment', '#and another']
+ create_fake_key(:user, sample)
run_in_catalog(dummy)
check_fake_key(:user, sample)
end
- it "should keep empty lines and comments when modifying a file" do
- create_fake_key(:user, ['',sample_lines[0],' ',sample_lines[3],'# just a comment','#and another'])
+ it 'keeps empty lines and comments when modifying a file' do
+ create_fake_key(:user, ['', sample_lines[0], ' ', sample_lines[3], '# just a comment', '#and another'])
run_in_catalog(dummy)
- check_fake_key(:user, ['',sample_lines[0],' ','# just a comment','#and another'])
+ check_fake_key(:user, ['', sample_lines[0], ' ', '# just a comment', '#and another'])
end
- describe "when managing one resource" do
-
- describe "with ensure set to absent" do
+ describe 'when managing one resource' do
+ describe 'with ensure set to absent' do
let :resource do
Puppet::Type.type(:ssh_authorized_key).new(
- :name => 'root@hostname',
- :type => :rsa,
- :key => sample_rsa_keys[0],
- :target => fake_rootfile,
- :user => 'root',
- :ensure => :absent
+ name: 'root@hostname',
+ type: :rsa,
+ key: sample_rsa_keys[0],
+ target: fake_rootfile,
+ user: 'root',
+ ensure: :absent,
)
end
- it "should not modify root's keyfile if resource is currently not present" do
+ it "does not modify root's keyfile if resource is currently not present" do
create_fake_key(:root, sample_lines)
run_in_catalog(resource)
check_fake_key(:root, sample_lines)
@@ -123,96 +122,96 @@ describe Puppet::Type.type(:ssh_authorized_key).provider(:parsed), '(integration
end
end
- describe "when ensure is present" do
+ describe 'when ensure is present' do
let :resource do
Puppet::Type.type(:ssh_authorized_key).new(
- :name => 'root@hostname',
- :type => :rsa,
- :key => sample_rsa_keys[0],
- :target => fake_rootfile,
- :user => 'root',
- :ensure => :present
+ name: 'root@hostname',
+ type: :rsa,
+ key: sample_rsa_keys[0],
+ target: fake_rootfile,
+ user: 'root',
+ ensure: :present,
)
end
# just a dummy so the parsedfile provider is aware
# of the user's authorized_keys file
- it "should add the key if it is not present" do
+ it 'adds the key if it is not present' do
create_fake_key(:root, sample_lines)
run_in_catalog(resource)
- check_fake_key(:root, sample_lines + ["ssh-rsa #{sample_rsa_keys[0]} root@hostname" ])
+ check_fake_key(:root, sample_lines + ["ssh-rsa #{sample_rsa_keys[0]} root@hostname"])
end
- it "should modify the type if type is out of sync" do
- create_fake_key(:root,sample_lines + [ "ssh-dss #{sample_rsa_keys[0]} root@hostname" ])
+ it 'modifies the type if type is out of sync' do
+ create_fake_key(:root, sample_lines + ["ssh-dss #{sample_rsa_keys[0]} root@hostname"])
run_in_catalog(resource)
- check_fake_key(:root, sample_lines + [ "ssh-rsa #{sample_rsa_keys[0]} root@hostname" ])
+ check_fake_key(:root, sample_lines + ["ssh-rsa #{sample_rsa_keys[0]} root@hostname"])
end
- it "should modify the key if key is out of sync" do
- create_fake_key(:root,sample_lines + [ "ssh-rsa #{sample_rsa_keys[1]} root@hostname" ])
+ it 'modifies the key if key is out of sync' do
+ create_fake_key(:root, sample_lines + ["ssh-rsa #{sample_rsa_keys[1]} root@hostname"])
run_in_catalog(resource)
- check_fake_key(:root, sample_lines + [ "ssh-rsa #{sample_rsa_keys[0]} root@hostname" ])
+ check_fake_key(:root, sample_lines + ["ssh-rsa #{sample_rsa_keys[0]} root@hostname"])
end
- it "should remove the key from old file if target is out of sync" do
- create_fake_key(:user, [ sample_lines[0], "ssh-rsa #{sample_rsa_keys[0]} root@hostname" ])
- create_fake_key(:root, [ sample_lines[1], sample_lines[2] ])
+ it 'removes the key from old file if target is out of sync' do
+ create_fake_key(:user, [sample_lines[0], "ssh-rsa #{sample_rsa_keys[0]} root@hostname"])
+ create_fake_key(:root, [sample_lines[1], sample_lines[2]])
run_in_catalog(resource, dummy)
- check_fake_key(:user, [ sample_lines[0] ])
- #check_fake_key(:root, [ sample_lines[1], sample_lines[2], "ssh-rsa #{sample_rsa_keys[0]} root@hostname" ])
+ check_fake_key(:user, [sample_lines[0]])
+ # check_fake_key(:root, [ sample_lines[1], sample_lines[2], "ssh-rsa #{sample_rsa_keys[0]} root@hostname" ])
end
- it "should add the key to new file if target is out of sync" do
- create_fake_key(:user, [ sample_lines[0], "ssh-rsa #{sample_rsa_keys[0]} root@hostname" ])
- create_fake_key(:root, [ sample_lines[1], sample_lines[2] ])
+ it 'adds the key to new file if target is out of sync' do
+ create_fake_key(:user, [sample_lines[0], "ssh-rsa #{sample_rsa_keys[0]} root@hostname"])
+ create_fake_key(:root, [sample_lines[1], sample_lines[2]])
run_in_catalog(resource, dummy)
- #check_fake_key(:user, [ sample_lines[0] ])
- check_fake_key(:root, [ sample_lines[1], sample_lines[2], "ssh-rsa #{sample_rsa_keys[0]} root@hostname" ])
+ # check_fake_key(:user, [ sample_lines[0] ])
+ check_fake_key(:root, [sample_lines[1], sample_lines[2], "ssh-rsa #{sample_rsa_keys[0]} root@hostname"])
end
- it "should modify options if options are out of sync" do
- resource[:options]=[ 'from="*.domain1,host1.domain2"', 'no-port-forwarding', 'no-pty' ]
- create_fake_key(:root, sample_lines + [ "from=\"*.false,*.false2\",no-port-forwarding,no-pty ssh-rsa #{sample_rsa_keys[0]} root@hostname"])
+ it 'modifies options if options are out of sync' do
+ resource[:options] = ['from="*.domain1,host1.domain2"', 'no-port-forwarding', 'no-pty']
+ create_fake_key(:root, sample_lines + ["from=\"*.false,*.false2\",no-port-forwarding,no-pty ssh-rsa #{sample_rsa_keys[0]} root@hostname"])
run_in_catalog(resource)
- check_fake_key(:root, sample_lines + [ "from=\"*.domain1,host1.domain2\",no-port-forwarding,no-pty ssh-rsa #{sample_rsa_keys[0]} root@hostname"] )
+ check_fake_key(:root, sample_lines + ["from=\"*.domain1,host1.domain2\",no-port-forwarding,no-pty ssh-rsa #{sample_rsa_keys[0]} root@hostname"])
end
end
end
- describe "when managing two resource" do
+ describe 'when managing two resource' do
let :examples do
resources = []
resources << Puppet::Type.type(:ssh_authorized_key).new(
- :name => 'root@hostname',
- :type => :rsa,
- :key => sample_rsa_keys[0],
- :target => fake_rootfile,
- :user => 'root',
- :ensure => :present
+ name: 'root@hostname',
+ type: :rsa,
+ key: sample_rsa_keys[0],
+ target: fake_rootfile,
+ user: 'root',
+ ensure: :present,
)
resources << Puppet::Type.type(:ssh_authorized_key).new(
- :name => 'user@hostname',
- :key => sample_rsa_keys[1],
- :type => :rsa,
- :target => fake_userfile,
- :user => 'nobody',
- :ensure => :present
+ name: 'user@hostname',
+ key: sample_rsa_keys[1],
+ type: :rsa,
+ target: fake_userfile,
+ user: 'nobody',
+ ensure: :present,
)
resources
end
- describe "and both keys are absent" do
+ describe 'and both keys are absent' do
before :each do
create_fake_key(:root, sample_lines)
create_fake_key(:user, sample_lines)
end
- it "should add both keys" do
+ it 'adds both keys' do
run_in_catalog(*examples)
- check_fake_key(:root, sample_lines + [ "ssh-rsa #{sample_rsa_keys[0]} root@hostname" ])
- check_fake_key(:user, sample_lines + [ "ssh-rsa #{sample_rsa_keys[1]} user@hostname" ])
+ check_fake_key(:root, sample_lines + ["ssh-rsa #{sample_rsa_keys[0]} root@hostname"])
+ check_fake_key(:user, sample_lines + ["ssh-rsa #{sample_rsa_keys[1]} user@hostname"])
end
end
end
diff --git a/spec/integration/provider/sshkey_spec.rb b/spec/integration/provider/sshkey_spec.rb
index f461460..5328f85 100644
--- a/spec/integration/provider/sshkey_spec.rb
+++ b/spec/integration/provider/sshkey_spec.rb
@@ -6,7 +6,7 @@ require 'puppet_spec/files'
require 'puppet_spec/compiler'
describe Puppet::Type.type(:sshkey).provider(:parsed), '(integration)',
- :unless => Puppet.features.microsoft_windows? do
+ unless: Puppet.features.microsoft_windows? do
include PuppetSpec::Files
include PuppetSpec::Compiler
@@ -14,8 +14,8 @@ describe Puppet::Type.type(:sshkey).provider(:parsed), '(integration)',
# Don't backup to filebucket
Puppet::FileBucket::Dipper.any_instance.stubs(:backup)
# We don't want to execute anything
- described_class.stubs(:filetype).
- returns Puppet::Util::FileType::FileTypeFlat
+ described_class.stubs(:filetype)
+ .returns Puppet::Util::FileType::FileTypeFlat
@sshkey_file = tmpfile('sshkey_integration_specs')
FileUtils.cp(my_fixture('sample'), @sshkey_file)
@@ -28,10 +28,9 @@ describe Puppet::Type.type(:sshkey).provider(:parsed), '(integration)',
let(:type_under_test) { 'sshkey' }
- describe "when managing a ssh known hosts file it..." do
-
- let(:super_unique) { "my.super.unique.host" }
- it "should create a new known_hosts file with mode 0644" do
+ describe 'when managing a ssh known hosts file it...' do
+ let(:super_unique) { 'my.super.unique.host' }
+ it 'creates a new known_hosts file with mode 0644' do
target = tmpfile('ssh_known_hosts')
manifest = "#{type_under_test} { '#{super_unique}':
ensure => 'present',
@@ -39,51 +38,51 @@ describe Puppet::Type.type(:sshkey).provider(:parsed), '(integration)',
key => 'TESTKEY',
target => '#{target}' }"
apply_with_error_check(manifest)
- expect_file_mode(target, "644")
+ expect_file_mode(target, '644')
end
- it "should create an SSH host key entry (ensure present)" do
+ it 'creates an SSH host key entry (ensure present)' do
manifest = "#{type_under_test} { '#{super_unique}':
ensure => 'present',
type => 'rsa',
key => 'mykey',
target => '#{@sshkey_file}' }"
apply_with_error_check(manifest)
- expect(File.read(@sshkey_file)).to match(/#{super_unique}.*mykey/)
+ expect(File.read(@sshkey_file)).to match(%r{#{super_unique}.*mykey})
end
let(:sshkey_name) { 'kirby.madstop.com' }
- it "should delete an entry for an SSH host key" do
+ it 'deletes an entry for an SSH host key' do
manifest = "#{type_under_test} { '#{sshkey_name}':
ensure => 'absent',
target => '#{@sshkey_file}' }"
apply_with_error_check(manifest)
- expect(File.read(@sshkey_file)).not_to match(/#{sshkey_name}.*Yqk0=/)
+ expect(File.read(@sshkey_file)).not_to match(%r{#{sshkey_name}.*Yqk0=})
end
- it "should update an entry for an SSH host key" do
+ it 'updates an entry for an SSH host key' do
manifest = "#{type_under_test} { '#{sshkey_name}':
ensure => 'present',
type => 'rsa',
key => 'mynewshinykey',
target => '#{@sshkey_file}' }"
apply_with_error_check(manifest)
- expect(File.read(@sshkey_file)).to match(/#{sshkey_name}.*mynewshinykey/)
- expect(File.read(@sshkey_file)).not_to match(/#{sshkey_name}.*Yqk0=/)
+ expect(File.read(@sshkey_file)).to match(%r{#{sshkey_name}.*mynewshinykey})
+ expect(File.read(@sshkey_file)).not_to match(%r{#{sshkey_name}.*Yqk0=})
end
# test all key types
- types = ["ssh-dss", "dsa",
- "ssh-ed25519", "ed25519",
- "ssh-rsa", "rsa",
- "ecdsa-sha2-nistp256",
- "ecdsa-sha2-nistp384",
- "ecdsa-sha2-nistp521"]
+ types = ['ssh-dss', 'dsa',
+ 'ssh-ed25519', 'ed25519',
+ 'ssh-rsa', 'rsa',
+ 'ecdsa-sha2-nistp256',
+ 'ecdsa-sha2-nistp384',
+ 'ecdsa-sha2-nistp521']
# these types are treated as aliases for sshkey <ahem> type
# so they are populated as the *values* below
- aliases = {"dsa" => "ssh-dss",
- "ed25519" => "ssh-ed25519",
- "rsa" => "ssh-rsa"}
+ aliases = { 'dsa' => 'ssh-dss',
+ 'ed25519' => 'ssh-ed25519',
+ 'rsa' => 'ssh-rsa' }
types.each do |type|
it "should update an entry with #{type} type" do
manifest = "#{type_under_test} { '#{sshkey_name}':
@@ -93,67 +92,66 @@ describe Puppet::Type.type(:sshkey).provider(:parsed), '(integration)',
target => '#{@sshkey_file}' }"
apply_with_error_check(manifest)
- if aliases.has_key?(type)
+ if aliases.key?(type)
full_type = aliases[type]
- expect(File.read(@sshkey_file)).
- to match(/#{sshkey_name}.*#{full_type}.*mynew/)
+ expect(File.read(@sshkey_file))
+ .to match(%r{#{sshkey_name}.*#{full_type}.*mynew})
else
- expect(File.read(@sshkey_file)).
- to match(/#{sshkey_name}.*#{type}.*mynew/)
+ expect(File.read(@sshkey_file))
+ .to match(%r{#{sshkey_name}.*#{type}.*mynew})
end
end
end
# test unknown key type fails
let(:invalid_type) { 'ssh-er0ck' }
- it "should raise an error with an unknown type" do
+ it 'raises an error with an unknown type' do
manifest = "#{type_under_test} { '#{sshkey_name}':
ensure => 'present',
type => '#{invalid_type}',
key => 'mynewshinykey',
target => '#{@sshkey_file}' }"
expect {
- apply_compiled_manifest(manifest)
- }.to raise_error(Puppet::ResourceError, /Invalid value "#{invalid_type}"/)
+ apply_compiled_manifest(manifest)
+ }.to raise_error(Puppet::ResourceError, %r{Invalid value "#{invalid_type}"})
end
- #single host_alias
+ # single host_alias
let(:host_alias) { 'r0ckdata.com' }
- it "should update an entry with new host_alias" do
+ it 'updates an entry with new host_alias' do
manifest = "#{type_under_test} { '#{sshkey_name}':
ensure => 'present',
host_aliases => '#{host_alias}',
target => '#{@sshkey_file}' }"
apply_with_error_check(manifest)
- expect(File.read(@sshkey_file)).to match(/#{sshkey_name},#{host_alias}\s/)
- expect(File.read(@sshkey_file)).not_to match(/#{sshkey_name}\s/)
+ expect(File.read(@sshkey_file)).to match(%r{#{sshkey_name},#{host_alias}\s})
+ expect(File.read(@sshkey_file)).not_to match(%r{#{sshkey_name}\s})
end
- #array host_alias
- let(:host_aliases) { "r0ckdata.com,erict.net" }
- it "should update an entry with new host_alias" do
+ # array host_alias
+ let(:host_aliases) { 'r0ckdata.com,erict.net' }
+
+ it 'updates an entry with new host_alias' do
manifest = "#{type_under_test} { '#{sshkey_name}':
ensure => 'present',
host_aliases => '#{host_alias}',
target => '#{@sshkey_file}' }"
apply_with_error_check(manifest)
- expect(File.read(@sshkey_file)).to match(/#{sshkey_name},#{host_alias}\s/)
- expect(File.read(@sshkey_file)).not_to match(/#{sshkey_name}\s/)
+ expect(File.read(@sshkey_file)).to match(%r{#{sshkey_name},#{host_alias}\s})
+ expect(File.read(@sshkey_file)).not_to match(%r{#{sshkey_name}\s})
end
- #puppet resource sshkey
- it "should fetch an entry from resources" do
+ # puppet resource sshkey
+ it 'fetches an entry from resources' do
@resource_app = Puppet::Application[:resource]
@resource_app.preinit
- @resource_app.command_line.stubs(:args).
- returns([type_under_test, sshkey_name, "target=#{@sshkey_file}"])
+ @resource_app.command_line.stubs(:args)
+ .returns([type_under_test, sshkey_name, "target=#{@sshkey_file}"])
@resource_app.expects(:puts).with do |args|
- expect(args).to match(/#{sshkey_name}/)
+ expect(args).to match(%r{#{sshkey_name}})
end
@resource_app.main
end
-
end
-
end
diff --git a/spec/lib/puppet_spec/compiler.rb b/spec/lib/puppet_spec/compiler.rb
index 8964a26..c3d33a5 100644
--- a/spec/lib/puppet_spec/compiler.rb
+++ b/spec/lib/puppet_spec/compiler.rb
@@ -34,8 +34,8 @@ module PuppetSpec::Compiler
catalog.resources.each { |res| yield res }
end
transaction = Puppet::Transaction.new(catalog,
- Puppet::Transaction::Report.new,
- prioritizer)
+ Puppet::Transaction::Report.new,
+ prioritizer)
transaction.evaluate
transaction.report.finalize_report
@@ -70,7 +70,7 @@ module PuppetSpec::Compiler
collect_notices(code, node) do |compiler|
unless topscope_vars.empty?
scope = compiler.topscope
- topscope_vars.each {|k,v| scope.setvar(k, v) }
+ topscope_vars.each { |k, v| scope.setvar(k, v) }
end
if block_given?
compiler.compile do |catalog|
@@ -95,7 +95,7 @@ module PuppetSpec::Compiler
compiler = Puppet::Parser::Compiler.new(node)
unless variables.empty?
scope = compiler.topscope
- variables.each {|k,v| scope.setvar(k, v) }
+ variables.each { |k, v| scope.setvar(k, v) }
end
if source.nil?
@@ -105,7 +105,7 @@ module PuppetSpec::Compiler
end
# evaluate given source is the context of the compiled state and return its result
- compiler.compile do |catalog |
+ compiler.compile do |_catalog|
Puppet::Pops::Parser::EvaluatingParser.singleton.evaluate_string(compiler.topscope, source, source_location)
end
end
diff --git a/spec/spec_helper_local.rb b/spec/spec_helper_local.rb
index fc786a6..f06b4bb 100644
--- a/spec/spec_helper_local.rb
+++ b/spec/spec_helper_local.rb
@@ -8,10 +8,10 @@ end
require 'puppet_spec/files'
RSpec.configure do |config|
- config.before :each do |test|
+ config.before :each do |_test|
base = PuppetSpec::Files.tmpdir('tmp_settings')
Puppet[:vardir] = File.join(base, 'var')
FileUtils.mkdir_p Puppet[:statedir]
end
-end \ No newline at end of file
+end
diff --git a/spec/unit/provider/sshkey/parsed_spec.rb b/spec/unit/provider/sshkey/parsed_spec.rb
index 38aa7f7..3e7eade 100644
--- a/spec/unit/provider/sshkey/parsed_spec.rb
+++ b/spec/unit/provider/sshkey/parsed_spec.rb
@@ -1,10 +1,11 @@
#! /usr/bin/env ruby
require 'spec_helper'
-describe "sshkey parsed provider" do
+describe 'sshkey parsed provider' do
+ subject { provider }
+
let :type do Puppet::Type.type(:sshkey) end
let :provider do type.provider(:parsed) end
- subject { provider }
after :each do
subject.clear
@@ -14,55 +15,56 @@ describe "sshkey parsed provider" do
'AAAAB3NzaC1yc2EAAAABIwAAAQEAzwHhxXvIrtfIwrudFqc8yQcIfMudrgpnuh1F3AV6d2BrLgu/yQE7W5UyJMUjfj427sQudRwKW45O0Jsnr33F4mUw+GIMlAAmp9g24/OcrTiB8ZUKIjoPy/cO4coxGi8/NECtRzpD/ZUPFh6OEpyOwJPMb7/EC2Az6Otw4StHdXUYw22zHazBcPFnv6zCgPx1hA7QlQDWTu4YcL0WmTYQCtMUb3FUqrcFtzGDD0ytosgwSd+JyN5vj5UwIABjnNOHPZ62EY1OFixnfqX/+dUwrFSs5tPgBF/KkC6R7tmbUfnBON6RrGEmu+ajOTOLy23qUZB4CQ53V7nyAWhzqSK+hw=='
end
- it "should parse the name from the first field" do
- expect(subject.parse_line('test ssh-rsa '+key)[:name]).to eq("test")
+ it 'parses the name from the first field' do
+ expect(subject.parse_line('test ssh-rsa ' + key)[:name]).to eq('test')
end
- it "should parse the first component of the first field as the name" do
- expect(subject.parse_line('test,alias ssh-rsa '+key)[:name]).to eq("test")
+ it 'parses the first component of the first field as the name' do
+ expect(subject.parse_line('test,alias ssh-rsa ' + key)[:name]).to eq('test')
end
- it "should parse host_aliases from the remaining components of the first field" do
- expect(subject.parse_line('test,alias ssh-rsa '+key)[:host_aliases]).to eq(["alias"])
+ it 'parses host_aliases from the remaining components of the first field' do
+ expect(subject.parse_line('test,alias ssh-rsa ' + key)[:host_aliases]).to eq(['alias'])
end
- it "should parse multiple host_aliases" do
- expect(subject.parse_line('test,alias1,alias2,alias3 ssh-rsa '+key)[:host_aliases]).to eq(["alias1","alias2","alias3"])
+ it 'parses multiple host_aliases' do
+ expect(subject.parse_line('test,alias1,alias2,alias3 ssh-rsa ' + key)[:host_aliases]).to eq(['alias1', 'alias2', 'alias3'])
end
- it "should not drop an empty host_alias" do
- expect(subject.parse_line('test,alias, ssh-rsa '+key)[:host_aliases]).to eq(["alias",""])
+ it 'does not drop an empty host_alias' do
+ expect(subject.parse_line('test,alias, ssh-rsa ' + key)[:host_aliases]).to eq(['alias', ''])
end
- it "should recognise when there are no host aliases" do
- expect(subject.parse_line('test ssh-rsa '+key)[:host_aliases]).to eq([])
+ it 'recognises when there are no host aliases' do
+ expect(subject.parse_line('test ssh-rsa ' + key)[:host_aliases]).to eq([])
end
- context "with the sample file" do
+ context 'with the sample file' do
['sample', 'sample_with_blank_lines'].each do |sample_file|
let :fixture do my_fixture(sample_file) end
+
before :each do subject.stubs(:default_target).returns(fixture) end
- it "should parse to records on prefetch" do
+ it 'parses to records on prefetch' do
expect(subject.target_records(fixture)).to be_empty
subject.prefetch
records = subject.target_records(fixture)
expect(records).to be_an Array
- expect(records).to be_all {|x| expect(x).to be_an Hash }
+ expect(records).to be_all { |x| expect(x).to be_an Hash }
end
- it "should reconstitute the file from records" do
+ it 'reconstitutes the file from records' do
subject.prefetch
records = subject.target_records(fixture)
- text = subject.to_file(records).gsub(/^# HEADER.+\n/, '')
+ text = subject.to_file(records).gsub(%r{^# HEADER.+\n}, '')
oldlines = File.readlines(fixture).map(&:chomp)
newlines = text.chomp.split("\n")
expect(oldlines.length).to eq(newlines.length)
oldlines.zip(newlines).each do |old, new|
- expect(old.gsub(/\s+/, '')).to eq(new.gsub(/\s+/, ''))
+ expect(old.gsub(%r{\s+}, '')).to eq(new.gsub(%r{\s+}, ''))
end
end
end
@@ -70,7 +72,7 @@ describe "sshkey parsed provider" do
context 'default ssh_known_hosts target path' do
['9.10', '9.11', '10.10'].each do |version|
- it 'should be `/etc/ssh_known_hosts` when OSX version 10.10 or older`' do
+ it 'is `/etc/ssh_known_hosts` when OSX version 10.10 or older`' do
Facter.expects(:value).with(:operatingsystem).returns('Darwin')
Facter.expects(:value).with(:macosx_productversion_major).returns(version)
expect(subject.default_target).to eq('/etc/ssh_known_hosts')
@@ -78,14 +80,14 @@ describe "sshkey parsed provider" do
end
['10.11', '10.13', '11.0', '11.11'].each do |version|
- it 'should be `/etc/ssh/ssh_known_hosts` when OSX version 10.11 or newer`' do
+ it 'is `/etc/ssh/ssh_known_hosts` when OSX version 10.11 or newer`' do
Facter.expects(:value).with(:operatingsystem).returns('Darwin')
Facter.expects(:value).with(:macosx_productversion_major).returns(version)
expect(subject.default_target).to eq('/etc/ssh/ssh_known_hosts')
end
end
- it 'should be `/etc/ssh/ssh_known_hosts` on other operating systems' do
+ it 'is `/etc/ssh/ssh_known_hosts` on other operating systems' do
Facter.expects(:value).with(:operatingsystem).returns('RedHat')
expect(subject.default_target).to eq('/etc/ssh/ssh_known_hosts')
end
diff --git a/spec/unit/type/ssh_authorized_key_spec.rb b/spec/unit/type/ssh_authorized_key_spec.rb
index ae93667..bc27b64 100644
--- a/spec/unit/type/ssh_authorized_key_spec.rb
+++ b/spec/unit/type/ssh_authorized_key_spec.rb
@@ -1,25 +1,23 @@
#! /usr/bin/env ruby
require 'spec_helper'
-
-describe Puppet::Type.type(:ssh_authorized_key), :unless => Puppet.features.microsoft_windows? do
+describe Puppet::Type.type(:ssh_authorized_key), unless: Puppet.features.microsoft_windows? do
include PuppetSpec::Files
- before do
- provider_class = stub 'provider_class', :name => "fake", :suitable? => true, :supports_parameter? => true
+ before(:each) do
+ provider_class = stub 'provider_class', name: 'fake', suitable?: true, supports_parameter?: true
described_class.stubs(:defaultprovider).returns(provider_class)
described_class.stubs(:provider).returns(provider_class)
- provider = stub 'provider', :class => provider_class, :file_path => make_absolute("/tmp/whatever"), :clear => nil
+ provider = stub 'provider', class: provider_class, file_path: make_absolute('/tmp/whatever'), clear: nil
provider_class.stubs(:new).returns(provider)
end
- it "has :name as its namevar" do
+ it 'has :name as its namevar' do
expect(described_class.key_attributes).to eq [:name]
end
- describe "when validating attributes" do
-
+ describe 'when validating attributes' do
[:name, :provider].each do |param|
it "has a #{param} parameter" do
expect(described_class.attrtype(param)).to eq :param
@@ -31,228 +29,202 @@ describe Puppet::Type.type(:ssh_authorized_key), :unless => Puppet.features.micr
expect(described_class.attrtype(property)).to eq :property
end
end
-
end
- describe "when validating values" do
-
- describe "for name" do
-
- it "supports valid names" do
- described_class.new(:name => "username", :ensure => :present, :user => "nobody")
- described_class.new(:name => "username@hostname", :ensure => :present, :user => "nobody")
+ describe 'when validating values' do
+ describe 'for name' do
+ it 'supports valid names' do
+ described_class.new(name: 'username', ensure: :present, user: 'nobody')
+ described_class.new(name: 'username@hostname', ensure: :present, user: 'nobody')
end
- it "supports whitespace" do
- described_class.new(:name => "my test", :ensure => :present, :user => "nobody")
+ it 'supports whitespace' do
+ described_class.new(name: 'my test', ensure: :present, user: 'nobody')
end
-
end
- describe "for ensure" do
-
- it "supports :present" do
- described_class.new(:name => "whev", :ensure => :present, :user => "nobody")
+ describe 'for ensure' do
+ it 'supports :present' do
+ described_class.new(name: 'whev', ensure: :present, user: 'nobody')
end
- it "supports :absent" do
- described_class.new(:name => "whev", :ensure => :absent, :user => "nobody")
+ it 'supports :absent' do
+ described_class.new(name: 'whev', ensure: :absent, user: 'nobody')
end
- it "nots support other values" do
- expect { described_class.new(:name => "whev", :ensure => :foo, :user => "nobody") }.to raise_error(Puppet::Error, /Invalid value/)
+ it 'nots support other values' do
+ expect { described_class.new(name: 'whev', ensure: :foo, user: 'nobody') }.to raise_error(Puppet::Error, %r{Invalid value})
end
-
end
- describe "for type" do
-
+ describe 'for type' do
[
:'ssh-dss', :dsa,
:'ssh-rsa', :rsa,
:'ecdsa-sha2-nistp256',
:'ecdsa-sha2-nistp384',
:'ecdsa-sha2-nistp521',
- :ed25519, :'ssh-ed25519',
+ :ed25519, :'ssh-ed25519'
].each do |keytype|
it "supports #{keytype}" do
- described_class.new(:name => "whev", :type => keytype, :user => "nobody")
+ described_class.new(name: 'whev', type: keytype, user: 'nobody')
end
end
- it "aliases :rsa to :ssh-rsa" do
- key = described_class.new(:name => "whev", :type => :rsa, :user => "nobody")
+ it 'aliases :rsa to :ssh-rsa' do
+ key = described_class.new(name: 'whev', type: :rsa, user: 'nobody')
expect(key.should(:type)).to eq :'ssh-rsa'
end
- it "aliases :dsa to :ssh-dss" do
- key = described_class.new(:name => "whev", :type => :dsa, :user => "nobody")
+ it 'aliases :dsa to :ssh-dss' do
+ key = described_class.new(name: 'whev', type: :dsa, user: 'nobody')
expect(key.should(:type)).to eq :'ssh-dss'
end
it "doesn't support values other than ssh-dss, ssh-rsa, dsa, rsa" do
- expect { described_class.new(:name => "whev", :type => :something) }.to raise_error(Puppet::Error,/Invalid value/)
+ expect { described_class.new(name: 'whev', type: :something) }.to raise_error(Puppet::Error, %r{Invalid value})
end
-
end
- describe "for key" do
-
- it "supports a valid key like a 1024 bit rsa key" do
- expect { described_class.new(:name => "whev", :type => :rsa, :user => "nobody", :key => 'AAAAB3NzaC1yc2EAAAADAQABAAAAgQDCPfzW2ry7XvMc6E5Kj2e5fF/YofhKEvsNMUogR3PGL/HCIcBlsEjKisrY0aYgD8Ikp7ZidpXLbz5dBsmPy8hJiBWs5px9ZQrB/EOQAwXljvj69EyhEoGawmxQMtYw+OAIKHLJYRuk1QiHAMHLp5piqem8ZCV2mLb9AsJ6f7zUVw==')}.to_not raise_error
+ describe 'for key' do
+ it 'supports a valid key like a 1024 bit rsa key' do
+ expect { described_class.new(name: 'whev', type: :rsa, user: 'nobody', key: 'AAAAB3NzaC1yc2EAAAADAQABAAAAgQDCPfzW2ry7XvMc6E5Kj2e5fF/YofhKEvsNMUogR3PGL/HCIcBlsEjKisrY0aYgD8Ikp7ZidpXLbz5dBsmPy8hJiBWs5px9ZQrB/EOQAwXljvj69EyhEoGawmxQMtYw+OAIKHLJYRuk1QiHAMHLp5piqem8ZCV2mLb9AsJ6f7zUVw==') }.not_to raise_error
end
- it "supports a valid key like a 4096 bit rsa key" do
- expect { described_class.new(:name => "whev", :type => :rsa, :user => "nobody", :key => 'AAAAB3NzaC1yc2EAAAADAQABAAACAQDEY4pZFyzSfRc9wVWI3DfkgT/EL033UZm/7x1M+d+lBD00qcpkZ6CPT7lD3Z+vylQlJ5S8Wcw6C5Smt6okZWY2WXA9RCjNJMIHQbJAzwuQwgnwU/1VMy9YPp0tNVslg0sUUgpXb13WW4mYhwxyGmIVLJnUrjrQmIFhtfHsJAH8ZVqCWaxKgzUoC/YIu1u1ScH93lEdoBPLlwm6J0aiM7KWXRb7Oq1nEDZtug1zpX5lhgkQWrs0BwceqpUbY+n9sqeHU5e7DCyX/yEIzoPRW2fe2Gx1Iq6JKM/5NNlFfaW8rGxh3Z3S1NpzPHTRjw8js3IeGiV+OPFoaTtM1LsWgPDSBlzIdyTbSQR7gKh0qWYCNV/7qILEfa0yIFB5wIo4667iSPZw2pNgESVtenm8uXyoJdk8iWQ4mecdoposV/znknNb2GPgH+n/2vme4btZ0Sl1A6rev22GQjVgbWOn8zaDglJ2vgCN1UAwmq41RXprPxENGeLnWQppTnibhsngu0VFllZR5kvSIMlekLRSOFLFt92vfd+tk9hZIiKm9exxcbVCGGQPsf6dZ27rTOmg0xM2Sm4J6RRKuz79HQgA4Eg18+bqRP7j/itb89DmtXEtoZFAsEJw8IgIfeGGDtHTkfAlAC92mtK8byeaxGq57XCTKbO/r5gcOMElZHy1AcB8kw==')}.to_not raise_error
+ it 'supports a valid key like a 4096 bit rsa key' do
+ expect { described_class.new(name: 'whev', type: :rsa, user: 'nobody', key: 'AAAAB3NzaC1yc2EAAAADAQABAAACAQDEY4pZFyzSfRc9wVWI3DfkgT/EL033UZm/7x1M+d+lBD00qcpkZ6CPT7lD3Z+vylQlJ5S8Wcw6C5Smt6okZWY2WXA9RCjNJMIHQbJAzwuQwgnwU/1VMy9YPp0tNVslg0sUUgpXb13WW4mYhwxyGmIVLJnUrjrQmIFhtfHsJAH8ZVqCWaxKgzUoC/YIu1u1ScH93lEdoBPLlwm6J0aiM7KWXRb7Oq1nEDZtug1zpX5lhgkQWrs0BwceqpUbY+n9sqeHU5e7DCyX/yEIzoPRW2fe2Gx1Iq6JKM/5NNlFfaW8rGxh3Z3S1NpzPHTRjw8js3IeGiV+OPFoaTtM1LsWgPDSBlzIdyTbSQR7gKh0qWYCNV/7qILEfa0yIFB5wIo4667iSPZw2pNgESVtenm8uXyoJdk8iWQ4mecdoposV/znknNb2GPgH+n/2vme4btZ0Sl1A6rev22GQjVgbWOn8zaDglJ2vgCN1UAwmq41RXprPxENGeLnWQppTnibhsngu0VFllZR5kvSIMlekLRSOFLFt92vfd+tk9hZIiKm9exxcbVCGGQPsf6dZ27rTOmg0xM2Sm4J6RRKuz79HQgA4Eg18+bqRP7j/itb89DmtXEtoZFAsEJw8IgIfeGGDtHTkfAlAC92mtK8byeaxGq57XCTKbO/r5gcOMElZHy1AcB8kw==') }.not_to raise_error
end
- it "supports a valid key like a 1024 bit dsa key" do
- expect { described_class.new(:name => "whev", :type => :dsa, :user => "nobody", :key => 'AAAAB3NzaC1kc3MAAACBAI80iR78QCgpO4WabVqHHdEDigOjUEHwIjYHIubR/7u7DYrXY+e+TUmZ0CVGkiwB/0yLHK5dix3Y/bpj8ZiWCIhFeunnXccOdE4rq5sT2V3l1p6WP33RpyVYbLmeuHHl5VQ1CecMlca24nHhKpfh6TO/FIwkMjghHBfJIhXK+0w/AAAAFQDYzLupuMY5uz+GVrcP+Kgd8YqMmwAAAIB3SVN71whLWjFPNTqGyyIlMy50624UfNOaH4REwO+Of3wm/cE6eP8n75vzTwQGBpJX3BPaBGW1S1Zp/DpTOxhCSAwZzAwyf4WgW7YyAOdxN3EwTDJZeyiyjWMAOjW9/AOWt9gtKg0kqaylbMHD4kfiIhBzo31ZY81twUzAfN7angAAAIBfva8sTSDUGKsWWIXkdbVdvM4X14K4gFdy0ZJVzaVOtZ6alysW6UQypnsl6jfnbKvsZ0tFgvcX/CPyqNY/gMR9lyh/TCZ4XQcbqeqYPuceGehz+jL5vArfqsW2fJYFzgCcklmr/VxtP5h6J/T0c9YcDgc/xIfWdZAlznOnphI/FA==')}.to_not raise_error
+ it 'supports a valid key like a 1024 bit dsa key' do
+ expect { described_class.new(name: 'whev', type: :dsa, user: 'nobody', key: 'AAAAB3NzaC1kc3MAAACBAI80iR78QCgpO4WabVqHHdEDigOjUEHwIjYHIubR/7u7DYrXY+e+TUmZ0CVGkiwB/0yLHK5dix3Y/bpj8ZiWCIhFeunnXccOdE4rq5sT2V3l1p6WP33RpyVYbLmeuHHl5VQ1CecMlca24nHhKpfh6TO/FIwkMjghHBfJIhXK+0w/AAAAFQDYzLupuMY5uz+GVrcP+Kgd8YqMmwAAAIB3SVN71whLWjFPNTqGyyIlMy50624UfNOaH4REwO+Of3wm/cE6eP8n75vzTwQGBpJX3BPaBGW1S1Zp/DpTOxhCSAwZzAwyf4WgW7YyAOdxN3EwTDJZeyiyjWMAOjW9/AOWt9gtKg0kqaylbMHD4kfiIhBzo31ZY81twUzAfN7angAAAIBfva8sTSDUGKsWWIXkdbVdvM4X14K4gFdy0ZJVzaVOtZ6alysW6UQypnsl6jfnbKvsZ0tFgvcX/CPyqNY/gMR9lyh/TCZ4XQcbqeqYPuceGehz+jL5vArfqsW2fJYFzgCcklmr/VxtP5h6J/T0c9YcDgc/xIfWdZAlznOnphI/FA==') }.not_to raise_error
end
it "doesn't support whitespaces" do
- expect { described_class.new(:name => "whev", :type => :rsa, :user => "nobody", :key => 'AAA FA==')}.to raise_error(Puppet::Error,/Key must not contain whitespace/)
+ expect { described_class.new(name: 'whev', type: :rsa, user: 'nobody', key: 'AAA FA==') }.to raise_error(Puppet::Error, %r{Key must not contain whitespace})
end
-
end
- describe "for options" do
-
- it "supports flags as options" do
- expect { described_class.new(:name => "whev", :type => :rsa, :user => "nobody", :options => 'cert-authority')}.to_not raise_error
- expect { described_class.new(:name => "whev", :type => :rsa, :user => "nobody", :options => 'no-port-forwarding')}.to_not raise_error
+ describe 'for options' do
+ it 'supports flags as options' do
+ expect { described_class.new(name: 'whev', type: :rsa, user: 'nobody', options: 'cert-authority') }.not_to raise_error
+ expect { described_class.new(name: 'whev', type: :rsa, user: 'nobody', options: 'no-port-forwarding') }.not_to raise_error
end
- it "supports key-value pairs as options" do
- expect { described_class.new(:name => "whev", :type => :rsa, :user => "nobody", :options => 'command="command"')}.to_not raise_error
+ it 'supports key-value pairs as options' do
+ expect { described_class.new(name: 'whev', type: :rsa, user: 'nobody', options: 'command="command"') }.not_to raise_error
end
- it "supports key-value pairs where value consist of multiple items" do
- expect { described_class.new(:name => "whev", :type => :rsa, :user => "nobody", :options => 'from="*.domain1,host1.domain2"')}.to_not raise_error
+ it 'supports key-value pairs where value consist of multiple items' do
+ expect { described_class.new(name: 'whev', type: :rsa, user: 'nobody', options: 'from="*.domain1,host1.domain2"') }.not_to raise_error
end
- it "supports environments as options" do
- expect { described_class.new(:name => "whev", :type => :rsa, :user => "nobody", :options => 'environment="NAME=value"')}.to_not raise_error
+ it 'supports environments as options' do
+ expect { described_class.new(name: 'whev', type: :rsa, user: 'nobody', options: 'environment="NAME=value"') }.not_to raise_error
end
- it "supports multiple options as an array" do
- expect { described_class.new(:name => "whev", :type => :rsa, :user => "nobody", :options => ['cert-authority','environment="NAME=value"'])}.to_not raise_error
+ it 'supports multiple options as an array' do
+ expect { described_class.new(name: 'whev', type: :rsa, user: 'nobody', options: ['cert-authority', 'environment="NAME=value"']) }.not_to raise_error
end
it "doesn't support a comma separated list" do
- expect { described_class.new(:name => "whev", :type => :rsa, :user => "nobody", :options => 'cert-authority,no-port-forwarding')}.to raise_error(Puppet::Error, /must be provided as an array/)
+ expect { described_class.new(name: 'whev', type: :rsa, user: 'nobody', options: 'cert-authority,no-port-forwarding') }.to raise_error(Puppet::Error, %r{must be provided as an array})
end
- it "uses :absent as a default value" do
- expect(described_class.new(:name => "whev", :type => :rsa, :user => "nobody").should(:options)).to eq [:absent]
+ it 'uses :absent as a default value' do
+ expect(described_class.new(name: 'whev', type: :rsa, user: 'nobody').should(:options)).to eq [:absent]
end
- it "property should return well formed string of arrays from is_to_s" do
- resource = described_class.new(:name => "whev", :type => :rsa, :user => "nobody", :options => ["a","b","c"])
- expect(resource.property(:options).is_to_s(["a","b","c"])).to eq "['a', 'b', 'c']"
+ it 'property should return well formed string of arrays from is_to_s' do
+ resource = described_class.new(name: 'whev', type: :rsa, user: 'nobody', options: ['a', 'b', 'c'])
+ expect(resource.property(:options).is_to_s(['a', 'b', 'c'])).to eq "['a', 'b', 'c']"
end
- it "property should return well formed string of arrays from should_to_s" do
- resource = described_class.new(:name => "whev", :type => :rsa, :user => "nobody", :options => ["a","b","c"])
- expect(resource.property(:options).should_to_s(["a","b","c"])).to eq "['a', 'b', 'c']"
+ it 'property should return well formed string of arrays from should_to_s' do
+ resource = described_class.new(name: 'whev', type: :rsa, user: 'nobody', options: ['a', 'b', 'c'])
+ expect(resource.property(:options).should_to_s(['a', 'b', 'c'])).to eq "['a', 'b', 'c']"
end
-
end
- describe "for user" do
-
- it "supports present users" do
- described_class.new(:name => "whev", :type => :rsa, :user => "root")
+ describe 'for user' do
+ it 'supports present users' do
+ described_class.new(name: 'whev', type: :rsa, user: 'root')
end
- it "supports absent users" do
- described_class.new(:name => "whev", :type => :rsa, :user => "ihopeimabsent")
+ it 'supports absent users' do
+ described_class.new(name: 'whev', type: :rsa, user: 'ihopeimabsent')
end
-
end
- describe "for target" do
-
- it "supports absolute paths" do
- described_class.new(:name => "whev", :type => :rsa, :target => "/tmp/here")
+ describe 'for target' do
+ it 'supports absolute paths' do
+ described_class.new(name: 'whev', type: :rsa, target: '/tmp/here')
end
it "uses the user's path if not explicitly specified" do
- expect(described_class.new(:name => "whev", :user => 'root').should(:target)).to eq File.expand_path("~root/.ssh/authorized_keys")
+ expect(described_class.new(name: 'whev', user: 'root').should(:target)).to eq File.expand_path('~root/.ssh/authorized_keys')
end
it "doesn't consider the user's path if explicitly specified" do
- expect(described_class.new(:name => "whev", :user => 'root', :target => '/tmp/here').should(:target)).to eq '/tmp/here'
+ expect(described_class.new(name: 'whev', user: 'root', target: '/tmp/here').should(:target)).to eq '/tmp/here'
end
- it "informs about an absent user" do
+ it 'informs about an absent user' do
Puppet::Log.level = :debug
- described_class.new(:name => "whev", :user => 'idontexist').should(:target)
- expect(@logs.map(&:message)).to include("The required user is not yet present on the system")
+ described_class.new(name: 'whev', user: 'idontexist').should(:target)
+ expect(@logs.map(&:message)).to include('The required user is not yet present on the system')
end
-
end
-
end
- describe "when neither user nor target is specified" do
-
- it "raises an error" do
- expect do
+ describe 'when neither user nor target is specified' do
+ it 'raises an error' do
+ expect {
described_class.new(
- :name => "Test",
- :key => "AAA",
- :type => "ssh-rsa",
- :ensure => :present)
- end.to raise_error(Puppet::Error,/user.*or.*target.*mandatory/)
+ name: 'Test',
+ key: 'AAA',
+ type: 'ssh-rsa',
+ ensure: :present,
+ )
+ }.to raise_error(Puppet::Error, %r{user.*or.*target.*mandatory})
end
-
end
- describe "when both target and user are specified" do
-
- it "uses target" do
+ describe 'when both target and user are specified' do
+ it 'uses target' do
resource = described_class.new(
- :name => "Test",
- :user => "root",
- :target => "/tmp/blah"
+ name: 'Test',
+ user: 'root',
+ target: '/tmp/blah',
)
- expect(resource.should(:target)).to eq "/tmp/blah"
+ expect(resource.should(:target)).to eq '/tmp/blah'
end
-
end
-
- describe "when user is specified" do
-
- it "determines target" do
+ describe 'when user is specified' do
+ it 'determines target' do
resource = described_class.new(
- :name => "Test",
- :user => "root"
+ name: 'Test',
+ user: 'root',
)
- target = File.expand_path("~root/.ssh/authorized_keys")
+ target = File.expand_path('~root/.ssh/authorized_keys')
expect(resource.should(:target)).to eq target
end
# Bug #2124 - ssh_authorized_key always changes target if target is not defined
it "doesn't raise spurious change events" do
- resource = described_class.new(:name => "Test", :user => "root")
- target = File.expand_path("~root/.ssh/authorized_keys")
+ resource = described_class.new(name: 'Test', user: 'root')
+ target = File.expand_path('~root/.ssh/authorized_keys')
expect(resource.property(:target).safe_insync?(target)).to eq true
end
-
end
- describe "when calling validate" do
-
+ describe 'when calling validate' do
it "doesn't crash on a non-existent user" do
resource = described_class.new(
- :name => "Test",
- :user => "ihopesuchuserdoesnotexist"
+ name: 'Test',
+ user: 'ihopesuchuserdoesnotexist',
)
resource.validate
end
-
end
-
end
diff --git a/spec/unit/type/sshkey_spec.rb b/spec/unit/type/sshkey_spec.rb
index d16e595..af3b677 100644
--- a/spec/unit/type/sshkey_spec.rb
+++ b/spec/unit/type/sshkey_spec.rb
@@ -1,14 +1,12 @@
#! /usr/bin/env ruby
require 'spec_helper'
-
describe Puppet::Type.type(:sshkey) do
-
- it "uses :name as its namevar" do
+ it 'uses :name as its namevar' do
expect(described_class.key_attributes).to eq [:name]
end
- describe "when validating attributes" do
+ describe 'when validating attributes' do
[:name, :provider].each do |param|
it "has a #{param} parameter" do
expect(described_class.attrtype(param)).to eq :param
@@ -22,56 +20,54 @@ describe Puppet::Type.type(:sshkey) do
end
end
- describe "when validating values" do
-
+ describe 'when validating values' do
[
:'ssh-dss', :dsa,
:'ssh-rsa', :rsa,
:'ecdsa-sha2-nistp256',
:'ecdsa-sha2-nistp384',
:'ecdsa-sha2-nistp521',
- :'ssh-ed25519', :ed25519,
+ :'ssh-ed25519', :ed25519
].each do |keytype|
it "supports #{keytype} as a type value" do
- described_class.new(:name => "foo", :type => keytype)
+ described_class.new(name: 'foo', type: keytype)
end
end
- it "aliases :rsa to :ssh-rsa" do
- key = described_class.new(:name => "foo", :type => :rsa)
+ it 'aliases :rsa to :ssh-rsa' do
+ key = described_class.new(name: 'foo', type: :rsa)
expect(key.should(:type)).to eq :'ssh-rsa'
end
- it "aliases :dsa to :ssh-dss" do
- key = described_class.new(:name => "foo", :type => :dsa)
+ it 'aliases :dsa to :ssh-dss' do
+ key = described_class.new(name: 'foo', type: :dsa)
expect(key.should(:type)).to eq :'ssh-dss'
end
it "doesn't support values other than ssh-dss, ssh-rsa, dsa, rsa for type" do
expect {
- described_class.new(:name => "whev", :type => :'ssh-dsa')
- }.to raise_error(Puppet::Error, /Invalid value.*ssh-dsa/)
+ described_class.new(name: 'whev', type: :'ssh-dsa')
+ }.to raise_error(Puppet::Error, %r{Invalid value.*ssh-dsa})
end
- it "accepts one host_alias" do
- described_class.new(:name => "foo", :host_aliases => 'foo.bar.tld')
+ it 'accepts one host_alias' do
+ described_class.new(name: 'foo', host_aliases: 'foo.bar.tld')
end
- it "accepts multiple host_aliases as an array" do
- described_class.new(:name => "foo", :host_aliases => ['foo.bar.tld','10.0.9.9'])
+ it 'accepts multiple host_aliases as an array' do
+ described_class.new(name: 'foo', host_aliases: ['foo.bar.tld', '10.0.9.9'])
end
it "doesn't accept spaces in any host_alias" do
expect {
- described_class.new(:name => "foo", :host_aliases => ['foo.bar.tld','foo bar'])
- }.to raise_error(Puppet::Error, /cannot include whitespace/)
+ described_class.new(name: 'foo', host_aliases: ['foo.bar.tld', 'foo bar'])
+ }.to raise_error(Puppet::Error, %r{cannot include whitespace})
end
it "doesn't accept aliases in the resourcename" do
expect {
- described_class.new(:name => 'host,host.domain,ip')
- }.to raise_error(Puppet::Error, /No comma in resourcename/)
+ described_class.new(name: 'host,host.domain,ip')
+ }.to raise_error(Puppet::Error, %r{No comma in resourcename})
end
-
end
end