Skip to content

Commit de0ca81

Browse files
committed
Let VRT::Map#find_node accept nil values
1 parent 222776d commit de0ca81

File tree

2 files changed

+45
-0
lines changed

2 files changed

+45
-0
lines changed

lib/vrt/map.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ def initialize(version = nil)
1818
end
1919

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

spec/vrt/map_spec.rb

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,50 @@
5151
end
5252
end
5353

54+
describe '#find_node' do
55+
subject { sample_map.find_node(vrt_id) }
56+
57+
context 'when vrt_id is nil' do
58+
let(:vrt_id) { nil }
59+
60+
it { is_expected.to be_nil }
61+
end
62+
63+
context 'when vrt_id is not a valid identifier' do
64+
let(:vrt_id) { "I'm not valid" }
65+
66+
it { is_expected.to be_nil }
67+
end
68+
69+
context 'when vrt_id is not a string' do
70+
let(:vrt_id) { 55 }
71+
72+
it { is_expected.to be_nil }
73+
end
74+
75+
context 'when vrt_id is a valid identifier' do
76+
context 'vrt_id does not exist in version' do
77+
let(:vrt_id) { 'cool_new_concept' }
78+
79+
it { is_expected.to be_nil }
80+
end
81+
82+
context 'vrt_id exists in version' do
83+
context 'vrt_id is category level' do
84+
let(:vrt_id) { 'server_security_misconfiguration' }
85+
86+
it { is_expected.to be_a(VRT::Node) }
87+
end
88+
89+
context 'vrt_id is a variant' do
90+
let(:vrt_id) { 'server_security_misconfiguration.using_default_credentials.production_server' }
91+
92+
it { is_expected.to be_a(VRT::Node) }
93+
end
94+
end
95+
end
96+
end
97+
5498
describe '#get_lineage' do
5599
context 'with a complex hierarchy' do
56100
let(:id) { 'server_security_misconfiguration.using_default_credentials.production_server' }

0 commit comments

Comments
 (0)