summaryrefslogtreecommitdiff
path: root/qa/qa/flow/alert_settings.rb
blob: 2a464c16c6dd597821a9096c6afc60494468be26 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# frozen_string_literal: true

module QA
  module Flow
    module AlertSettings
      extend self

      def setup_http_endpoint(
        integration_name: random_word,
        payload: { title: random_word, description: random_word },
        send: true
      )
        credentials = {}
        Page::Project::Menu.perform(&:go_to_monitor_settings)
        Page::Project::Settings::Monitor.perform do |setting|
          setting.expand_alerts do |alert|
            alert.add_new_integration
            alert.select_http_endpoint
            alert.enter_integration_name(integration_name)
            alert.activate_integration
            alert.save_and_create_alert

            if send
              alert.fill_in_test_payload(payload.to_json)
              alert.send_test_alert
            else
              alert.go_to_view_credentials
              credentials = { url: alert.webhook_url, auth_key: alert.authorization_key }
            end
          end
        end

        credentials
      end

      def setup_prometheus(payload: { title: random_word, description: random_word }, send: true)
        credentials = {}
        Page::Project::Menu.perform(&:go_to_monitor_settings)
        Page::Project::Settings::Monitor.perform do |setting|
          setting.expand_alerts do |alert|
            alert.add_new_integration
            alert.select_prometheus
            alert.activate_integration
            alert.fill_in_prometheus_url
            alert.save_and_create_alert

            if send
              alert.fill_in_test_payload(payload.to_json)
              alert.send_test_alert
            else
              alert.go_to_view_credentials
              credentials = { url: alert.webhook_url, auth_key: alert.authorization_key }
            end
          end
        end

        credentials
      end

      private

      def random_word
        Faker::Lorem.word
      end
    end
  end
end