spec/lib/flapjack/data/notification_rule_spec.rb in flapjack-1.6.0rc2 vs spec/lib/flapjack/data/notification_rule_spec.rb in flapjack-1.6.0rc3

- old
+ new

@@ -14,11 +14,11 @@ let(:rule_data) { {:contact_id => '23', :tags => ["database","physical"], :regex_tags => [], - :entities => ["foo-app-01.example.com"], + :entities => ["foo-app-01.example.com", "foo-app-10.example.com"], :regex_entities => [], :time_restrictions => [ weekdays_8_18 ], :unknown_media => [], :warning_media => ["email"], :critical_media => ["sms", "email"], @@ -26,16 +26,32 @@ :warning_blackhole => false, :critical_blackhole => false } } + let(:empty_rule_data) { + {:contact_id => '23', + :tags => [], + :regex_tags => [], + :entities => [], + :regex_entities => [], + :time_restrictions => [ weekdays_8_18 ], + :unknown_media => [], + :warning_media => ["email"], + :critical_media => ["sms", "email"], + :unknown_blackhole => false, + :warning_blackhole => false, + :critical_blackhole => false + } + } + let(:regex_rule_data) { {:contact_id => '23', :tags => [], :regex_tags => ["^data.*$","^(physical|bare_metal)$"], :entities => [], - :regex_entities => ["^foo-\S{3}-\d{2}.example.com$"], + :regex_entities => ['^foo-\S{3}-\d{2}.example.com$','.*abc.*'], :time_restrictions => [ weekdays_8_18 ], :unknown_media => [], :warning_media => ["email"], :critical_media => ["sms", "email"], :unknown_blackhole => false, @@ -50,10 +66,14 @@ let(:existing_rule) { Flapjack::Data::NotificationRule.add(rule_data, :redis => @redis) } + let(:existing_empty_rule) { + Flapjack::Data::NotificationRule.add(empty_rule_data, :redis => @redis) + } + let(:existing_regex_rule) { Flapjack::Data::NotificationRule.add(regex_rule_data, :redis => @redis) } it "checks that a notification rule exists" do @@ -98,28 +118,50 @@ it "checks whether entity names match" do rule = existing_rule expect(rule.match_entity?('foo-app-01.example.com')).to be true + expect(rule.match_entity?('foo-app-10.example.com')).to be true expect(rule.match_entity?('foo-app-02.example.com')).to be false + + expect(existing_empty_rule.match_entity?('anything.example.com')).to be true end - it "checks whether entity tags match" do + it "checks whether entity names match a regex" do + rule = existing_regex_rule + + expect(rule.match_regex_entities?('foo-abc-01.example.com')).to be true + expect(rule.match_regex_entities?('foo-abc-99.example.com')).to be true + expect(rule.match_regex_entities?('foo-app-01.example.com')).to be false # does not match second regexp_entities + expect(rule.match_regex_entities?('foo-abc.example.com')).to be false + expect(rule.match_regex_entities?('bar-abc-01.example.com')).to be false + + expect(existing_empty_rule.match_regex_entities?('anything.example.com')).to be true + end + + it "checks whether event tags match" do rule = existing_rule expect(rule.match_tags?(['database', 'physical'].to_set)).to be true expect(rule.match_tags?(['database', 'physical', 'beetroot'].to_set)).to be true expect(rule.match_tags?(['database'].to_set)).to be false expect(rule.match_tags?(['virtual'].to_set)).to be false + expect(rule.match_tags?([].to_set)).to be false + + expect(existing_empty_rule.match_regex_entities?(['virtual'].to_set)).to be true end - it "checks whether entity tags match a regex" do + it "checks whether event tags match a regex" do rule = existing_regex_rule expect(rule.match_regex_tags?(['database', 'physical'].to_set)).to be true expect(rule.match_regex_tags?(['database', 'physical', 'beetroot'].to_set)).to be true expect(rule.match_regex_tags?(['database'].to_set)).to be false + expect(rule.match_regex_tags?(['database.physical'].to_set)).to be false # does not match second regex_tags + expect(rule.match_regex_tags?(['data1', 'data2'].to_set)).to be false # does not match second regex_tags expect(rule.match_regex_tags?(['virtual'].to_set)).to be false + + expect(existing_empty_rule.match_regex_entities?(['virtual'].to_set)).to be true end it "checks if blackhole settings for a rule match a severity level" do rule_data[:warning_blackhole] = true rule = Flapjack::Data::NotificationRule.add(rule_data, :redis => @redis)