Skip to content

Commit de18da9

Browse files
authored
Merge pull request #172 from DavidS/maint-test-cleanups
(maint) test cleanups
2 parents eeb69a1 + 7ae2b22 commit de18da9

File tree

3 files changed

+41
-60
lines changed

3 files changed

+41
-60
lines changed

lib/puppet/resource_api/transport.rb

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -9,21 +9,19 @@ def register(schema)
99
raise Puppet::DevError, 'requires `:connection_info`' unless schema.key? :connection_info
1010
raise Puppet::DevError, '`:connection_info` must be a hash, not `%{other_type}`' % { other_type: schema[:connection_info].class } unless schema[:connection_info].is_a?(Hash)
1111

12-
init_transports
13-
unless @transports[@environment][schema[:name]].nil?
12+
unless transports[schema[:name]].nil?
1413
raise Puppet::DevError, 'Transport `%{name}` is already registered for `%{environment}`' % {
1514
name: schema[:name],
16-
environment: @environment,
15+
environment: current_environment,
1716
}
1817
end
19-
@transports[@environment][schema[:name]] = Puppet::ResourceApi::TransportSchemaDef.new(schema)
18+
transports[schema[:name]] = Puppet::ResourceApi::TransportSchemaDef.new(schema)
2019
end
2120
module_function :register # rubocop:disable Style/AccessModifierDeclarations
2221

2322
# retrieve a Hash of transport schemas, keyed by their name.
2423
def list
25-
init_transports
26-
Marshal.load(Marshal.dump(@transports[@environment]))
24+
Marshal.load(Marshal.dump(transports))
2725
end
2826
module_function :list # rubocop:disable Style/AccessModifierDeclarations
2927

@@ -47,13 +45,12 @@ def inject_device(name, transport)
4745
module_function :inject_device # rubocop:disable Style/AccessModifierDeclarations
4846

4947
def self.validate(name, connection_info)
50-
init_transports
51-
require "puppet/transport/schema/#{name}" unless @transports[@environment].key? name
52-
transport_schema = @transports[@environment][name]
48+
require "puppet/transport/schema/#{name}" unless transports.key? name
49+
transport_schema = transports[name]
5350
if transport_schema.nil?
5451
raise Puppet::DevError, 'Transport for `%{target}` not registered with `%{environment}`' % {
5552
target: name,
56-
environment: @environment,
53+
environment: current_environment,
5754
}
5855
end
5956
message_prefix = 'The connection info provided does not match the Transport Schema'
@@ -64,24 +61,12 @@ def self.validate(name, connection_info)
6461

6562
def self.get_context(name)
6663
require 'puppet/resource_api/puppet_context'
67-
Puppet::ResourceApi::PuppetContext.new(@transports[@environment][name])
64+
Puppet::ResourceApi::PuppetContext.new(transports[name])
6865
end
6966
private_class_method :get_context
7067

71-
def self.init_transports
72-
lookup = Puppet.lookup(:current_environment) if Puppet.respond_to? :lookup
73-
@environment = if lookup.nil?
74-
:transports_default
75-
else
76-
lookup.name
77-
end
78-
@transports ||= {}
79-
@transports[@environment] ||= {}
80-
end
81-
private_class_method :init_transports
82-
8368
def self.wrap_sensitive(name, connection_info)
84-
transport_schema = @transports[@environment][name]
69+
transport_schema = transports[name]
8570
if transport_schema
8671
transport_schema.definition[:connection_info].each do |attr_name, options|
8772
if options.key?(:sensitive) && (options[:sensitive] == true) && connection_info.key?(attr_name)
@@ -92,4 +77,20 @@ def self.wrap_sensitive(name, connection_info)
9277
connection_info
9378
end
9479
private_class_method :wrap_sensitive
80+
81+
def self.transports
82+
@transports ||= {}
83+
@transports[current_environment] ||= {}
84+
end
85+
private_class_method :transports
86+
87+
def self.current_environment
88+
if Puppet.respond_to? :lookup
89+
env = Puppet.lookup(:current_environment)
90+
env.nil? ? :transports_default : env.name
91+
else
92+
:transports_default
93+
end
94+
end
95+
private_class_method :current_environment
9596
end

spec/puppet/resource_api/transport/wrapper_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ class SomethingSomethingDarkside; end
109109

110110
context 'when using method?' do
111111
it 'will return false' do
112-
expect { instance.method :wibble }.to raise_error
112+
expect { instance.method :wibble }.to raise_error NameError, %r{undefined method `wibble'}
113113
end
114114
end
115115
end

spec/puppet/resource_api/transport_spec.rb

Lines changed: 15 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -113,27 +113,29 @@ def change_environment(name = nil)
113113
end
114114

115115
context 'when a transports are added to multiple environments' do
116+
let(:transports) { described_class.instance_variable_get(:@transports) }
117+
116118
it 'will record the schemas in the correct structure' do
117-
change_environment(:wibble)
119+
change_environment(nil)
118120
described_class.register(schema)
119-
expect(described_class.instance_variable_get(:@transports)).to be_key(:wibble)
120-
expect(described_class.instance_variable_get(:@transports)[:wibble][schema[:name]]).to be_a_kind_of(Puppet::ResourceApi::TransportSchemaDef)
121-
expect(described_class.instance_variable_get(:@transports)[:wibble][schema[:name]].definition).to eq(schema)
121+
expect(transports).to have_key(:transports_default)
122+
expect(transports[:transports_default][schema[:name]]).to be_a_kind_of(Puppet::ResourceApi::TransportSchemaDef)
123+
expect(transports[:transports_default][schema[:name]].definition).to eq(schema)
122124

123-
change_environment(:foo)
125+
change_environment('foo')
124126
described_class.register(schema)
125127
described_class.register(schema2)
126-
expect(described_class.instance_variable_get(:@transports)).to be_key(:foo)
127-
expect(described_class.instance_variable_get(:@transports)[:foo][schema[:name]]).to be_a_kind_of(Puppet::ResourceApi::TransportSchemaDef)
128-
expect(described_class.instance_variable_get(:@transports)[:foo][schema[:name]].definition).to eq(schema)
129-
expect(described_class.instance_variable_get(:@transports)[:foo][schema2[:name]]).to be_a_kind_of(Puppet::ResourceApi::TransportSchemaDef)
130-
expect(described_class.instance_variable_get(:@transports)[:foo][schema2[:name]].definition).to eq(schema2)
128+
expect(transports).to have_key('foo')
129+
expect(transports['foo'][schema[:name]]).to be_a_kind_of(Puppet::ResourceApi::TransportSchemaDef)
130+
expect(transports['foo'][schema[:name]].definition).to eq(schema)
131+
expect(transports['foo'][schema2[:name]]).to be_a_kind_of(Puppet::ResourceApi::TransportSchemaDef)
132+
expect(transports['foo'][schema2[:name]].definition).to eq(schema2)
131133

132134
change_environment(:bar)
133135
described_class.register(schema3)
134-
expect(described_class.instance_variable_get(:@transports)).to be_key(:bar)
135-
expect(described_class.instance_variable_get(:@transports)[:bar][schema3[:name]]).to be_a_kind_of(Puppet::ResourceApi::TransportSchemaDef)
136-
expect(described_class.instance_variable_get(:@transports)[:bar][schema3[:name]].definition).to eq(schema3)
136+
expect(transports).to have_key(:bar)
137+
expect(transports[:bar][schema3[:name]]).to be_a_kind_of(Puppet::ResourceApi::TransportSchemaDef)
138+
expect(transports[:bar][schema3[:name]].definition).to eq(schema3)
137139
end
138140
end
139141
end
@@ -310,28 +312,6 @@ class Wibble; end
310312
end
311313
end
312314

313-
describe '#init_transports' do
314-
context 'when there is not a current_environment' do
315-
it 'will return the default transport environment name' do
316-
change_environment
317-
318-
described_class.send :init_transports
319-
320-
expect(described_class.instance_variable_get(:@environment)).to eq(:transports_default)
321-
end
322-
end
323-
324-
context 'when there is a current_environment' do
325-
it 'will return the set environment name' do
326-
change_environment(:something)
327-
328-
described_class.send :init_transports
329-
330-
expect(described_class.instance_variable_get(:@environment)).to eq(:something)
331-
end
332-
end
333-
end
334-
335315
describe '#wrap_sensitive(name, connection_info)' do
336316
let(:schema) do
337317
{

0 commit comments

Comments
 (0)