Skip to content

Commit 3ca8460

Browse files
authored
BAM: Add element types on violations to difference parameters from resources (#96)
* BAM: Added line numbers and logical resource id to Parameters * Add specs * BAM: Add element type functionality to difference parameters from resources * BAM: Add basic test for element_types
1 parent 683d538 commit 3ca8460

File tree

3 files changed

+28
-1
lines changed

3 files changed

+28
-1
lines changed

lib/cfn-model/model/cfn_model.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
require_relative 'references'
44

55
class CfnModel
6-
attr_reader :resources, :parameters, :line_numbers, :conditions, :globals, :mappings
6+
attr_reader :resources, :parameters, :line_numbers, :conditions, :globals, :mappings, :element_types
77

88
##
99
# if you really want it, here it is - the raw Hash from YAML.load. you'll have to mess with structural nits of
@@ -19,6 +19,7 @@ def initialize
1919
@mappings = {}
2020
@raw_model = nil
2121
@line_numbers = {}
22+
@element_types = {}
2223
end
2324

2425
##

lib/cfn-model/parser/cfn_parser.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,7 @@ def transform_hash_into_model_elements(cfn_hash, cfn_model)
156156
assign_fields_based_upon_properties resource_object, resource, cfn_model
157157

158158
cfn_model.resources[resource_name] = resource_object
159+
cfn_model.element_types[resource_name] = "resource"
159160
end
160161
cfn_model
161162
end
@@ -173,6 +174,7 @@ def transform_hash_into_model_elements_with_numbers(cfn_hash, cfn_model)
173174

174175
cfn_model.resources[resource_name] = resource_object
175176
cfn_model.line_numbers[resource_name] = resource['Type']['line']
177+
cfn_model.element_types[resource_name] = "resource"
176178
end
177179
cfn_model
178180
end
@@ -193,6 +195,7 @@ def transform_hash_into_parameters(cfn_hash, cfn_model)
193195

194196
cfn_model.parameters[parameter_name] = parameter
195197
cfn_model.line_numbers[parameter_name] = parameter_hash['Type']['line']
198+
cfn_model.element_types[parameter_name] = "parameter"
196199
end
197200
cfn_model
198201
end
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
require 'spec_helper'
2+
require 'cfn-model/parser/cfn_parser'
3+
4+
describe CfnParser do
5+
before :each do
6+
@cfn_parser = CfnParser.new
7+
end
8+
9+
context 'element types enabled' do
10+
it 'returns model with element_types for each resource' do
11+
cloudformation_template_yml = IO.read(yaml_test_templates('iam_user/iam_user_with_literal_username_and_addition').first)
12+
actual_cfn_model = @cfn_parser.parse cloudformation_template_yml, nil, true
13+
expected_element_types = {
14+
"AccessKey" => "parameter",
15+
"iamUserWithAddition" => "resource",
16+
"groupA" => "resource",
17+
"addition1" => "resource",
18+
"addition2" => "resource"
19+
}
20+
expect(actual_cfn_model.element_types).to eq expected_element_types
21+
end
22+
end
23+
end

0 commit comments

Comments
 (0)