diff options
Diffstat (limited to 'spec/lib/gitlab/alert_management')
3 files changed, 104 insertions, 3 deletions
diff --git a/spec/lib/gitlab/alert_management/payload/generic_spec.rb b/spec/lib/gitlab/alert_management/payload/generic_spec.rb index b7660462b0d..d022c629458 100644 --- a/spec/lib/gitlab/alert_management/payload/generic_spec.rb +++ b/spec/lib/gitlab/alert_management/payload/generic_spec.rb @@ -19,7 +19,34 @@ RSpec.describe Gitlab::AlertManagement::Payload::Generic do describe '#severity' do subject { parsed_payload.severity } - it_behaves_like 'parsable alert payload field with fallback', 'critical', 'severity' + context 'when set' do + using RSpec::Parameterized::TableSyntax + + let(:raw_payload) { { 'severity' => payload_severity } } + + where(:payload_severity, :expected_severity) do + 'critical' | :critical + 'high' | :high + 'medium' | :medium + 'low' | :low + 'info' | :info + + 'CRITICAL' | :critical + 'cRiTiCaL' | :critical + + 'unmapped' | nil + 1 | nil + nil | nil + end + + with_them do + it { is_expected.to eq(expected_severity) } + end + end + + context 'without key' do + it { is_expected.to be_nil } + end end describe '#monitoring_tool' do diff --git a/spec/lib/gitlab/alert_management/payload/prometheus_spec.rb b/spec/lib/gitlab/alert_management/payload/prometheus_spec.rb index 457db58a28b..f574f5ba6a3 100644 --- a/spec/lib/gitlab/alert_management/payload/prometheus_spec.rb +++ b/spec/lib/gitlab/alert_management/payload/prometheus_spec.rb @@ -156,8 +156,6 @@ RSpec.describe Gitlab::AlertManagement::Payload::Prometheus do end describe '#gitlab_fingerprint' do - subject { parsed_payload.gitlab_fingerprint } - let(:raw_payload) do { 'startsAt' => Time.current.to_s, @@ -166,6 +164,8 @@ RSpec.describe Gitlab::AlertManagement::Payload::Prometheus do } end + subject { parsed_payload.gitlab_fingerprint } + it 'returns a fingerprint' do plain_fingerprint = [ parsed_payload.send(:starts_at_raw), @@ -237,4 +237,63 @@ RSpec.describe Gitlab::AlertManagement::Payload::Prometheus do it { is_expected.to be_falsey } end end + + describe '#severity' do + subject { parsed_payload.severity } + + context 'when set' do + using RSpec::Parameterized::TableSyntax + + let(:raw_payload) { { 'labels' => { 'severity' => payload_severity } } } + + where(:payload_severity, :expected_severity) do + 'critical' | :critical + 'high' | :high + 'medium' | :medium + 'low' | :low + 'info' | :info + + 's1' | :critical + 's2' | :high + 's3' | :medium + 's4' | :low + 's5' | :info + 'p1' | :critical + 'p2' | :high + 'p3' | :medium + 'p4' | :low + 'p5' | :info + + 'CRITICAL' | :critical + 'cRiTiCaL' | :critical + 'S1' | :critical + + 'unmapped' | nil + 1 | nil + nil | nil + + 'debug' | :info + 'information' | :info + 'notice' | :info + 'warn' | :low + 'warning' | :low + 'minor' | :low + 'error' | :medium + 'major' | :high + 'emergency' | :critical + 'fatal' | :critical + + 'alert' | :medium + 'page' | :high + end + + with_them do + it { is_expected.to eq(expected_severity) } + end + end + + context 'without key' do + it { is_expected.to be_nil } + end + end end diff --git a/spec/lib/gitlab/alert_management/payload_spec.rb b/spec/lib/gitlab/alert_management/payload_spec.rb index 44b55e228c5..7c129a8a48e 100644 --- a/spec/lib/gitlab/alert_management/payload_spec.rb +++ b/spec/lib/gitlab/alert_management/payload_spec.rb @@ -56,5 +56,20 @@ RSpec.describe Gitlab::AlertManagement::Payload do it { is_expected.to be_a Gitlab::AlertManagement::Payload::Generic } end end + + context 'with integration specified by caller' do + let(:integration) { instance_double(AlertManagement::HttpIntegration) } + + subject { described_class.parse(project, payload, integration: integration) } + + it 'passes an integration to a specific payload' do + expect(::Gitlab::AlertManagement::Payload::Generic) + .to receive(:new) + .with(project: project, payload: payload, integration: integration) + .and_call_original + + subject + end + end end end |