Skip to content

Commit

Permalink
Let VRT::Map#find_node accept nil values
Browse files Browse the repository at this point in the history
  • Loading branch information
adamrdavid committed May 30, 2018
1 parent 25f0c98 commit c87ca0b
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 0 deletions.
1 change: 1 addition & 0 deletions lib/vrt/map.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ def initialize(version = nil)
end

def find_node(string, max_depth: 'variant')
return nil unless valid_identifier?(string)
@_found_nodes[string + max_depth] ||= walk_node_tree(string, max_depth: max_depth)
end

Expand Down
44 changes: 44 additions & 0 deletions spec/vrt/map_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,50 @@
end
end

describe '#find_node' do
subject { sample_map.find_node(vrt_id) }

context 'when vrt_id is nil' do
let(:vrt_id) { nil }

it { is_expected.to be_nil }
end

context 'when vrt_id is not a valid identifier' do
let(:vrt_id) { "I'm not valid" }

it { is_expected.to be_nil }
end

context 'when vrt_id is not a string' do
let(:vrt_id) { 55 }

it { is_expected.to be_nil }
end

context 'when vrt_id is a valid identifier' do
context 'vrt_id does not exist in version' do
let(:vrt_id) { 'cool_new_concept' }

it { is_expected.to be_nil }
end

context 'vrt_id exists in version' do
context 'vrt_id is category level' do
let(:vrt_id) { 'server_security_misconfiguration' }

it { is_expected.to be_a(VRT::Node) }
end

context 'vrt_id is a variant' do
let(:vrt_id) { 'server_security_misconfiguration.using_default_credentials.production_server' }

it { is_expected.to be_a(VRT::Node) }
end
end
end
end

describe '#get_lineage' do
context 'with a complex hierarchy' do
let(:id) { 'server_security_misconfiguration.using_default_credentials.production_server' }
Expand Down

0 comments on commit c87ca0b

Please sign in to comment.