Skip to content

Commit 5c06edd

Browse files
ShIfTStephen Gellermrwilson
committed
refactor(linter): Obey Rubocop linter rules.
* Some violations still persist, as fixing them could create problems with how Hiera implements the backend. Co-authored-by: Stephen Geller <[email protected]> Co-authored-by: Alex Wilson <[email protected]>
1 parent 2185a74 commit 5c06edd

5 files changed

+51
-44
lines changed

Gemfile

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
source 'https://rubygems.org'
22

3-
gem 'hiera', '1.3.4'
43
gem 'aws-sdk-secretsmanager'
4+
gem 'hiera', '1.3.4'
55

66
group :test, :development do
77
gem 'mocha'
88
gem 'rake'
99
gem 'rspec'
1010
gem 'rubocop'
11-
end
11+
end

Rakefile

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
require "rake"
2-
require "rspec/core/rake_task"
1+
require 'rake'
2+
require 'rspec/core/rake_task'
33

44
RSpec::Core::RakeTask.new(:spec) do |t|
5-
t.pattern = Dir.glob("spec/**/*_spec.rb")
5+
t.pattern = Dir.glob('spec/**/*_spec.rb')
66
end
7-
task default: :spec
7+
task default: :spec

lib/secrets_manager_backend.rb

+7-15
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,29 @@
11
class Hiera
22
module Backend
33
class Secrets_manager_backend
4-
def initialize()
4+
def initialize
55
require 'aws-sdk-secretsmanager'
66

77
# Initialises a new instance of the AWS Secrets Manager client
8-
@client = Aws::SecretsManager::Client.new(region: Config[:secrets_manager][:region])
8+
@client = Aws::SecretsManager::Client.new(
9+
region: Config[:secrets_manager][:region]
10+
)
911

10-
Hiera.debug("AWS Secrets Manager backend starting")
12+
Hiera.debug('AWS Secrets Manager backend starting')
1113
end
1214

13-
# lookup() is called by Hiera to return a secret, and is required by Hiera to work
1415
def lookup(key, scope, order_override, resolution_type)
15-
16-
# If lookup() returns `nil`, it will proceed to the next available backend (possible Hiera)
1716
answer = nil
1817

19-
# begin / rescue / end is like a try / catch,
20-
# and will ensure Hiera doesn't break if the Secrets Manager library doesn't work properly
2118
begin
19+
answer = @client.get_secret_value(secret_id: key)['secret_string']
2220

23-
# queries Secrets Manager for the value of the key passed
24-
# 'secret_string' contains the actual plaintext secret
25-
answer = @client.get_secret_value({secret_id: key})['secret_string']
26-
27-
# Catches any errors, and outputs a debug message
2821
rescue Aws::SecretsManager::Errors::ResourceNotFoundException => error
2922
Hiera.debug("#{key} not found: #{error.message}")
3023
end
3124

32-
# Implicitly returns answer, which will either be nil or the actual answer!
3325
answer
3426
end
3527
end
3628
end
37-
end
29+
end

spec/secrets_manager_backend_spec.rb

+36-21
Original file line numberDiff line numberDiff line change
@@ -5,57 +5,72 @@ class Hiera
55
module Backend
66
describe Secrets_manager_backend do
77
before do
8-
@config_object = { :secrets_manager => { :region => "some_region" } }
8+
@config_object = { secrets_manager: { region: 'some_region' } }
99
Config.load(@config_object)
1010
Hiera.stubs(:debug)
11-
Aws::SecretsManager::Client.stubs(:new).with(@config_object[:secrets_manager])
11+
Aws::SecretsManager::Client
12+
.stubs(:new)
13+
.with(@config_object[:secrets_manager])
1214
end
1315

14-
describe "#initialize" do
15-
it "should announce its creation" do
16-
Hiera.expects(:debug).with("AWS Secrets Manager backend starting")
16+
describe '#initialize' do
17+
it 'should announce its creation' do
18+
Hiera
19+
.expects(:debug)
20+
.with('AWS Secrets Manager backend starting')
1721
Secrets_manager_backend.new
1822
end
1923

20-
it "should set up a connection to AWS Secrets Manager" do
21-
Aws::SecretsManager::Client.expects(:new).with(@config_object[:secrets_manager])
24+
it 'should set up a connection to AWS Secrets Manager' do
25+
Aws::SecretsManager::Client
26+
.expects(:new)
27+
.with(@config_object[:secrets_manager])
2228
Secrets_manager_backend.new
2329
end
24-
2530
end
2631

2732
describe '#lookup' do
2833
before do
2934
@mock_client = mock('client')
30-
Aws::SecretsManager::Client.stubs(:new).with(@config_object[:secrets_manager]).returns(@mock_client)
35+
Aws::SecretsManager::Client
36+
.stubs(:new)
37+
.with(@config_object[:secrets_manager]).returns(@mock_client)
3138
@backend = Secrets_manager_backend.new
3239
end
3340

34-
it "should return a secret that exists" do
35-
secret_name = "secret_name"
36-
secret_string = "i_am_a_secret"
41+
it 'should return a secret that exists' do
42+
secret_name = 'secret_name'
43+
secret_string = 'i_am_a_secret'
3744

3845
@mock_client.stubs(:get_secret_value)
39-
.with({ secret_id: secret_name })
40-
.returns('secret_string' => secret_string)
46+
.with(secret_id: secret_name)
47+
.returns('secret_string' => secret_string)
4148

4249
answer = @backend.lookup(secret_name, nil, nil, nil)
4350
expect(answer).to eq(secret_string)
4451
end
4552

46-
it "should not return a secret that does not exist" do
47-
nonexistent_secret = "does_not_exist"
53+
it 'should not return a secret that does not exist' do
54+
nonexistent_secret = 'does_not_exist'
4855
mock_context = {}
4956
error_message = 'Secrets Manager could not find this secret.'
57+
error = Aws::
58+
SecretsManager::
59+
Errors::
60+
ResourceNotFoundException.new(
61+
mock_context,
62+
error_message
63+
)
5064
@mock_client.stubs(:get_secret_value)
51-
.with({ secret_id: nonexistent_secret })
52-
.raises(Aws::SecretsManager::Errors::ResourceNotFoundException.new(mock_context, error_message))
53-
54-
Hiera.expects(:debug).with("#{nonexistent_secret} not found: #{error_message}")
65+
.with(secret_id: nonexistent_secret)
66+
.raises(error)
67+
Hiera
68+
.expects(:debug)
69+
.with("#{nonexistent_secret} not found: #{error_message}")
5570
answer = @backend.lookup(nonexistent_secret, nil, nil, nil)
5671
expect(answer).to eq(nil)
5772
end
5873
end
5974
end
6075
end
61-
end
76+
end

spec/spec_helper.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
$:.insert(0, File.join([File.dirname(__FILE__), "..", "lib"]))
1+
$LOAD_PATH.insert(0, File.join([File.dirname(__FILE__), '..', 'lib']))
22

33
require 'rubygems'
44
require 'rspec'
@@ -8,4 +8,4 @@
88

99
RSpec.configure do |config|
1010
config.mock_with :mocha
11-
end
11+
end

0 commit comments

Comments
 (0)