wavefront-sdk 3.3.2 → 3.3.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/HISTORY.md +42 -35
- data/README.md +5 -5
- data/lib/wavefront-sdk/alert.rb +2 -0
- data/lib/wavefront-sdk/core/api_caller.rb +6 -3
- data/lib/wavefront-sdk/defs/version.rb +2 -2
- data/lib/wavefront-sdk/derivedmetric.rb +7 -0
- data/lib/wavefront-sdk/externallink.rb +2 -2
- data/lib/wavefront-sdk/maintenancewindow.rb +6 -2
- data/lib/wavefront-sdk/notificant.rb +7 -0
- data/lib/wavefront-sdk/paginator/base.rb +8 -0
- data/lib/wavefront-sdk/search.rb +11 -2
- data/lib/wavefront-sdk/user.rb +39 -8
- data/lib/wavefront-sdk/webhook.rb +1 -1
- data/spec/constants.rb +30 -0
- data/spec/spec_helper.rb +12 -237
- data/spec/support/bad_mocket.rb +15 -0
- data/spec/support/hash.rb +9 -0
- data/spec/support/minitest_assertions.rb +110 -0
- data/spec/support/mocket.rb +19 -0
- data/spec/test_mixins/acl.rb +78 -0
- data/spec/test_mixins/general.rb +120 -0
- data/spec/test_mixins/tag.rb +55 -0
- data/spec/test_mixins/update_keys.rb +11 -0
- data/spec/wavefront-sdk/alert_spec.rb +88 -136
- data/spec/wavefront-sdk/apitoken_spec.rb +26 -13
- data/spec/wavefront-sdk/cloudintegration_spec.rb +42 -44
- data/spec/wavefront-sdk/dashboard_spec.rb +53 -72
- data/spec/wavefront-sdk/derivedmetric_spec.rb +23 -49
- data/spec/wavefront-sdk/distribution_spec.rb +14 -14
- data/spec/wavefront-sdk/event_spec.rb +39 -48
- data/spec/wavefront-sdk/externallink_spec.rb +19 -50
- data/spec/wavefront-sdk/integration_spec.rb +33 -38
- data/spec/wavefront-sdk/maintenancewindow_spec.rb +18 -33
- data/spec/wavefront-sdk/message_spec.rb +19 -4
- data/spec/wavefront-sdk/metric_spec.rb +13 -9
- data/spec/wavefront-sdk/notificant_spec.rb +16 -15
- data/spec/wavefront-sdk/proxy_spec.rb +20 -25
- data/spec/wavefront-sdk/query_spec.rb +50 -24
- data/spec/wavefront-sdk/report_spec.rb +3 -6
- data/spec/wavefront-sdk/resources/user_responses/add_user_groups.json +1 -0
- data/spec/wavefront-sdk/resources/user_responses/create.json +28 -0
- data/spec/wavefront-sdk/resources/user_responses/delete_multiple.json +1 -0
- data/spec/wavefront-sdk/resources/user_responses/describe.json +1 -0
- data/spec/wavefront-sdk/resources/user_responses/grant.json +1 -0
- data/spec/wavefront-sdk/resources/user_responses/list.json +1 -0
- data/spec/wavefront-sdk/savedsearch_spec.rb +41 -35
- data/spec/wavefront-sdk/search_spec.rb +35 -29
- data/spec/wavefront-sdk/settings_spec.rb +18 -12
- data/spec/wavefront-sdk/source_spec.rb +29 -32
- data/spec/wavefront-sdk/user_spec.rb +101 -74
- data/spec/wavefront-sdk/usergroup_spec.rb +56 -67
- data/spec/wavefront-sdk/webhook_spec.rb +22 -34
- data/spec/wavefront-sdk/write_spec.rb +2 -0
- data/spec/wavefront-sdk/writers/core_spec.rb +2 -0
- data/spec/wavefront-sdk/writers/summary_spec.rb +2 -0
- data/wavefront-sdk.gemspec +5 -5
- metadata +44 -13
@@ -0,0 +1,19 @@
|
|
1
|
+
# A mock socket
|
2
|
+
#
|
3
|
+
class Mocket
|
4
|
+
def puts(socket); end
|
5
|
+
|
6
|
+
def close; end
|
7
|
+
|
8
|
+
def ok?
|
9
|
+
true
|
10
|
+
end
|
11
|
+
|
12
|
+
def response
|
13
|
+
{ sent: 1, rejected: 0, unsent: 0 }
|
14
|
+
end
|
15
|
+
|
16
|
+
def status
|
17
|
+
{ result: 'OK', message: nil, code: nil }
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
module WavefrontTest
|
2
|
+
#
|
3
|
+
# require and include this module to get ACL tests
|
4
|
+
#
|
5
|
+
module Acl
|
6
|
+
def test_acls
|
7
|
+
assert_gets("/api/v2/#{api_class}/acl?id=#{id}&id=#{id.reverse}") do
|
8
|
+
wf.acls([id, id.reverse])
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_acl_add
|
13
|
+
assert_posts("/api/v2/#{api_class}/acl/add",
|
14
|
+
acl_body(id, user_acls, group_acls)) do
|
15
|
+
wf.acl_add(id, user_acls, group_acls)
|
16
|
+
end
|
17
|
+
|
18
|
+
assert_posts("/api/v2/#{api_class}/acl/add",
|
19
|
+
acl_body(id, user_acls)) do
|
20
|
+
wf.acl_add(id, user_acls)
|
21
|
+
end
|
22
|
+
|
23
|
+
assert_raises(ArgumentError) { wf.acl_add(id, user_acls.first) }
|
24
|
+
assert_raises(ArgumentError) do
|
25
|
+
wf.acl_add(id, user_acls, group_acls.first)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_acl_delete
|
30
|
+
assert_posts("/api/v2/#{api_class}/acl/remove",
|
31
|
+
acl_body(id, user_acls, group_acls)) do
|
32
|
+
wf.acl_delete(id, user_acls, group_acls)
|
33
|
+
end
|
34
|
+
|
35
|
+
assert_posts("/api/v2/#{api_class}/acl/remove",
|
36
|
+
acl_body(id, user_acls)) do
|
37
|
+
wf.acl_delete(id, user_acls)
|
38
|
+
end
|
39
|
+
|
40
|
+
assert_raises(ArgumentError) { wf.acl_delete(id, U_ACL_1) }
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_acl_set
|
44
|
+
assert_puts("/api/v2/#{api_class}/acl/set",
|
45
|
+
acl_body(id, user_acls, group_acls)) do
|
46
|
+
wf.acl_set(id, user_acls, group_acls)
|
47
|
+
end
|
48
|
+
|
49
|
+
assert_puts("/api/v2/#{api_class}/acl/set",
|
50
|
+
acl_body(id, user_acls)) do
|
51
|
+
wf.acl_set(id, user_acls)
|
52
|
+
end
|
53
|
+
|
54
|
+
assert_raises(ArgumentError) { wf.acl_set(id, U_ACL_1) }
|
55
|
+
end
|
56
|
+
|
57
|
+
private
|
58
|
+
|
59
|
+
# @return [Array[String]] list of user IDs for ACL testing
|
60
|
+
#
|
61
|
+
def user_acls
|
62
|
+
%w[someone@example.com other@elsewhere.com]
|
63
|
+
end
|
64
|
+
|
65
|
+
# @return [Array[String]] list of group IDs for ACL testing
|
66
|
+
#
|
67
|
+
def group_acls
|
68
|
+
%w[f8dc0c14-91a0-4ca9-8a2a-7d47f4db4672]
|
69
|
+
end
|
70
|
+
|
71
|
+
# @return [String] JSON representation of an ACL request
|
72
|
+
# payload
|
73
|
+
#
|
74
|
+
def acl_body(id, view = [], modify = [])
|
75
|
+
[{ entityId: id, viewAcl: view, modifyAcl: modify }].to_json
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
@@ -0,0 +1,120 @@
|
|
1
|
+
module WavefrontTest
|
2
|
+
module List
|
3
|
+
def test_list
|
4
|
+
assert_gets("/api/v2/#{api_class}?offset=0&limit=100") do
|
5
|
+
wf.list
|
6
|
+
end
|
7
|
+
|
8
|
+
assert_gets("/api/v2/#{api_class}?offset=10&limit=100") do
|
9
|
+
wf.list(10)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_list_all
|
14
|
+
assert_gets("/api/v2/#{api_class}?limit=999&offset=0") do
|
15
|
+
wf.list(0, :all)
|
16
|
+
end
|
17
|
+
|
18
|
+
assert_gets("/api/v2/#{api_class}?limit=20&offset=0") do
|
19
|
+
wf.list(20, :all)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
module Create
|
25
|
+
def test_create
|
26
|
+
[payload].flatten.each do |p|
|
27
|
+
assert_posts("/api/v2/#{api_class}", p) { wf.create(p) }
|
28
|
+
assert_raises(ArgumentError) { wf.create }
|
29
|
+
assert_raises(ArgumentError) { wf.create('test') }
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
module Describe
|
35
|
+
def test_describe
|
36
|
+
assert_gets("/api/v2/#{api_class}/#{id}") { wf.describe(id) }
|
37
|
+
assert_invalid_id { wf.describe(invalid_id) }
|
38
|
+
assert_raises(ArgumentError) { wf.describe }
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
module Delete
|
43
|
+
def test_delete
|
44
|
+
assert_deletes("/api/v2/#{api_class}/#{id}") { wf.delete(id) }
|
45
|
+
assert_invalid_id { wf.delete(invalid_id) }
|
46
|
+
assert_raises(ArgumentError) { wf.delete }
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
module DeleteUndelete
|
51
|
+
include Delete
|
52
|
+
|
53
|
+
def test_undelete
|
54
|
+
assert_posts("/api/v2/#{api_class}/#{id}/undelete") do
|
55
|
+
wf.undelete(id)
|
56
|
+
end
|
57
|
+
|
58
|
+
assert_invalid_id { wf.undelete(invalid_id) }
|
59
|
+
assert_raises(ArgumentError) { wf.undelete }
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
module Update
|
64
|
+
def test_update
|
65
|
+
[payload].flatten.each do |p|
|
66
|
+
assert_puts("/api/v2/#{api_class}/#{id}", p) do
|
67
|
+
wf.update(id, p, false)
|
68
|
+
end
|
69
|
+
|
70
|
+
assert_invalid_id { wf.update(invalid_id, p) }
|
71
|
+
assert_raises(ArgumentError) { wf.update }
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
module Clone
|
77
|
+
def test_clone
|
78
|
+
assert_posts("/api/v2/#{api_class}/#{id}/clone",
|
79
|
+
id: id, name: nil, v: nil) do
|
80
|
+
wf.clone(id)
|
81
|
+
end
|
82
|
+
|
83
|
+
assert_posts("/api/v2/#{api_class}/#{id}/clone",
|
84
|
+
id: id, name: nil, v: 4) do
|
85
|
+
wf.clone(id, 4)
|
86
|
+
end
|
87
|
+
|
88
|
+
assert_raises(ArgumentError) { wf.clone }
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
module InstallUninstall
|
93
|
+
def test_install
|
94
|
+
assert_posts("/api/v2/#{api_class}/#{id}/install") { wf.install(id) }
|
95
|
+
assert_invalid_id { wf.install(invalid_id) }
|
96
|
+
end
|
97
|
+
|
98
|
+
def test_uninstall
|
99
|
+
assert_posts("/api/v2/#{api_class}/#{id}/uninstall") do
|
100
|
+
wf.uninstall(id)
|
101
|
+
end
|
102
|
+
|
103
|
+
assert_invalid_id { wf.uninstall(invalid_id) }
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
module History
|
108
|
+
def test_describe_v
|
109
|
+
assert_gets("/api/v2/#{api_class}/#{id}/history/4") do
|
110
|
+
wf.describe(id, 4)
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
def test_history
|
115
|
+
assert_gets("/api/v2/#{api_class}/#{id}/history") { wf.history(id) }
|
116
|
+
assert_invalid_id { wf.history(invalid_id) }
|
117
|
+
assert_raises(ArgumentError) { wf.history }
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module WavefrontTest
|
2
|
+
#
|
3
|
+
# require and include this module to get tag tests
|
4
|
+
#
|
5
|
+
module Tag
|
6
|
+
def test_tags
|
7
|
+
assert_gets("/api/v2/#{api_class}/#{id}/tag") { wf.tags(id) }
|
8
|
+
assert_invalid_id { wf.tags(invalid_id) }
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_tag_set
|
12
|
+
assert_posts("/api/v2/#{api_class}/#{id}/tag", '["mytag"]') do
|
13
|
+
wf.tag_set(id, 'mytag')
|
14
|
+
end
|
15
|
+
|
16
|
+
assert_posts("/api/v2/#{api_class}/#{id}/tag", '["tag1","tag2"]') do
|
17
|
+
wf.tag_set(id, %w[tag1 tag2])
|
18
|
+
end
|
19
|
+
|
20
|
+
assert_invalid_id { wf.tag_set(invalid_id, 'valid_tag') }
|
21
|
+
|
22
|
+
assert_raises(Wavefront::Exception::InvalidString) do
|
23
|
+
wf.tag_set(id, '<!!!>')
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_tag_add
|
28
|
+
#
|
29
|
+
# We have to use a literal 'null' to trick assert_puts into
|
30
|
+
# checking for the right content-type
|
31
|
+
#
|
32
|
+
assert_puts("/api/v2/#{api_class}/#{id}/tag/mytag", 'null') do
|
33
|
+
wf.tag_add(id, 'mytag')
|
34
|
+
end
|
35
|
+
|
36
|
+
assert_invalid_id { wf.tag_add(invalid_id, 'valid_tag') }
|
37
|
+
|
38
|
+
assert_raises(Wavefront::Exception::InvalidString) do
|
39
|
+
wf.tag_add(id, '<!!!>')
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_tag_delete
|
44
|
+
assert_deletes("/api/v2/#{api_class}/#{id}/tag/mytag") do
|
45
|
+
wf.tag_delete(id, 'mytag')
|
46
|
+
end
|
47
|
+
|
48
|
+
assert_invalid_id { wf.tag_delete(invalid_id, 'valid_tag') }
|
49
|
+
|
50
|
+
assert_raises(Wavefront::Exception::InvalidString) do
|
51
|
+
wf.tag_delete(id, '<!!!>')
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -1,191 +1,143 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
require_relative '../spec_helper'
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
name: 'SDK test alert',
|
9
|
-
target: 'user@example.com',
|
10
|
-
condition: 'ts("app.errors") > 0',
|
11
|
-
displayExpression: 'ts("app.errors")',
|
12
|
-
minutes: 5,
|
13
|
-
resolveAfterMinutes: 5,
|
14
|
-
severity: 'INFO'
|
15
|
-
}.freeze
|
16
|
-
|
17
|
-
def search_body(val)
|
18
|
-
{ limit: 999,
|
19
|
-
offset: 0,
|
20
|
-
query: [
|
21
|
-
{ key: 'status',
|
22
|
-
value: val,
|
23
|
-
matchingMethod: 'EXACT' }
|
24
|
-
],
|
25
|
-
sort: { field: 'status', ascending: true } }
|
26
|
-
end
|
4
|
+
require_relative '../test_mixins/acl'
|
5
|
+
require_relative '../test_mixins/tag'
|
6
|
+
require_relative '../test_mixins/update_keys'
|
7
|
+
require_relative '../test_mixins/general'
|
27
8
|
|
28
9
|
# Unit tests for Alert class
|
29
10
|
#
|
30
11
|
class WavefrontAlertTest < WavefrontTestBase
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
wf.update_keys.each { |k| assert_instance_of(Symbol, k) }
|
43
|
-
end
|
44
|
-
|
45
|
-
def test_describe
|
46
|
-
should_work(:describe, ALERT, ALERT)
|
47
|
-
assert_raises(ArgumentError) { wf.describe }
|
48
|
-
should_be_invalid(:describe)
|
49
|
-
end
|
50
|
-
|
51
|
-
def test_create
|
52
|
-
should_work(:create, ALERT_BODY, '', :post, JSON_POST_HEADERS,
|
53
|
-
ALERT_BODY.to_json)
|
54
|
-
assert_raises(ArgumentError) { wf.create }
|
55
|
-
assert_raises(ArgumentError) { wf.create('test') }
|
56
|
-
end
|
57
|
-
|
58
|
-
def test_clone
|
59
|
-
should_work(:clone, [ALERT], [ALERT, :clone].uri_concat,
|
60
|
-
:post, JSON_POST_HEADERS,
|
61
|
-
{ id: ALERT, name: nil, v: nil }.to_json)
|
62
|
-
should_work(:clone, [ALERT, 4], [ALERT, :clone].uri_concat,
|
63
|
-
:post, JSON_POST_HEADERS,
|
64
|
-
{ id: ALERT, name: nil, v: 4 }.to_json)
|
65
|
-
assert_raises(ArgumentError) { wf.clone }
|
66
|
-
end
|
67
|
-
|
68
|
-
def test_describe_v
|
69
|
-
should_work(:describe, [ALERT, 4], "#{ALERT}/history/4")
|
70
|
-
end
|
71
|
-
|
72
|
-
def test_delete
|
73
|
-
should_work(:delete, ALERT, ALERT, :delete)
|
74
|
-
should_be_invalid(:delete)
|
75
|
-
end
|
76
|
-
|
77
|
-
def test_history
|
78
|
-
should_work(:history, ALERT, "#{ALERT}/history")
|
79
|
-
should_be_invalid(:history)
|
80
|
-
end
|
81
|
-
|
82
|
-
def test_install
|
83
|
-
should_work(:install, ALERT, "#{ALERT}/install", :post)
|
84
|
-
should_be_invalid(:install)
|
85
|
-
end
|
12
|
+
include WavefrontTest::Acl
|
13
|
+
include WavefrontTest::Clone
|
14
|
+
include WavefrontTest::Create
|
15
|
+
include WavefrontTest::DeleteUndelete
|
16
|
+
include WavefrontTest::Describe
|
17
|
+
include WavefrontTest::History
|
18
|
+
include WavefrontTest::InstallUninstall
|
19
|
+
include WavefrontTest::List
|
20
|
+
include WavefrontTest::Tag
|
21
|
+
include WavefrontTest::Update
|
22
|
+
include WavefrontTest::UpdateKeys
|
86
23
|
|
87
24
|
def test_snooze
|
88
|
-
|
89
|
-
should_work(:snooze, [ALERT, 3600], "#{ALERT}/snooze?seconds=3600",
|
90
|
-
:post, POST_HEADERS)
|
91
|
-
should_be_invalid(:snooze)
|
92
|
-
end
|
25
|
+
assert_posts("/api/v2/alert/#{id}/snooze") { wf.snooze(id) }
|
93
26
|
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
should_be_invalid(:update, ['abcde', ALERT_BODY])
|
98
|
-
assert_raises(ArgumentError) { wf.update }
|
99
|
-
end
|
100
|
-
|
101
|
-
def test_tags
|
102
|
-
tag_tester(ALERT)
|
103
|
-
end
|
27
|
+
assert_posts("/api/v2/alert/#{id}/snooze?seconds=3600") do
|
28
|
+
wf.snooze(id, 3600)
|
29
|
+
end
|
104
30
|
|
105
|
-
|
106
|
-
acl_tester(ALERT)
|
107
|
-
end
|
108
|
-
|
109
|
-
def test_undelete
|
110
|
-
should_work(:undelete, ALERT, ["#{ALERT}/undelete", nil], :post,
|
111
|
-
POST_HEADERS)
|
112
|
-
should_be_invalid(:undelete)
|
113
|
-
end
|
114
|
-
|
115
|
-
def test_uninstall
|
116
|
-
should_work(:uninstall, ALERT, "#{ALERT}/uninstall", :post)
|
117
|
-
should_be_invalid(:uninstall)
|
31
|
+
assert_invalid_id { wf.snooze(invalid_id) }
|
118
32
|
end
|
119
33
|
|
120
34
|
def test_unsnooze
|
121
|
-
|
122
|
-
|
123
|
-
should_be_invalid(:unsnooze)
|
35
|
+
assert_posts("/api/v2/alert/#{id}/unsnooze") { wf.unsnooze(id) }
|
36
|
+
assert_invalid_id { wf.unsnooze(invalid_id) }
|
124
37
|
end
|
125
38
|
|
126
39
|
def test_summary
|
127
|
-
|
40
|
+
assert_gets('/api/v2/alert/summary') { wf.summary }
|
128
41
|
end
|
129
42
|
|
130
43
|
def test_alerts_in_state
|
131
|
-
|
132
|
-
|
44
|
+
assert_posts('/api/v2/search/alert', search_payload('state')) do
|
45
|
+
wf.alerts_in_state('state')
|
46
|
+
end
|
133
47
|
end
|
134
48
|
|
135
49
|
def test_firing
|
136
|
-
|
137
|
-
|
50
|
+
assert_posts('/api/v2/search/alert', search_payload('firing')) do
|
51
|
+
wf.firing
|
52
|
+
end
|
138
53
|
end
|
139
54
|
|
140
55
|
def test_active
|
141
|
-
|
142
|
-
|
56
|
+
assert_posts('/api/v2/search/alert', search_payload('firing')) do
|
57
|
+
wf.active
|
58
|
+
end
|
143
59
|
end
|
144
60
|
|
145
61
|
def test_affected_by_maintenance
|
146
|
-
|
147
|
-
|
62
|
+
assert_posts('/api/v2/search/alert',
|
63
|
+
search_payload('in_maintenance')) do
|
64
|
+
wf.affected_by_maintenance
|
65
|
+
end
|
148
66
|
end
|
149
67
|
|
150
68
|
def test_invalid
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
def test_in_maintenance
|
156
|
-
should_work(:affected_by_maintenance, nil, '/api/v2/search/alert',
|
157
|
-
:post, {}, search_body('in_maintenance'))
|
69
|
+
assert_posts('/api/v2/search/alert', search_payload('invalid')) do
|
70
|
+
wf.invalid
|
71
|
+
end
|
158
72
|
end
|
159
73
|
|
160
74
|
def test_none
|
161
|
-
|
162
|
-
|
75
|
+
assert_posts('/api/v2/search/alert', search_payload('none')) do
|
76
|
+
wf.none
|
77
|
+
end
|
163
78
|
end
|
164
79
|
|
165
80
|
def test_checking
|
166
|
-
|
167
|
-
|
81
|
+
assert_posts('/api/v2/search/alert', search_payload('checking')) do
|
82
|
+
wf.checking
|
83
|
+
end
|
168
84
|
end
|
169
85
|
|
170
86
|
def test_trash
|
171
|
-
|
172
|
-
|
87
|
+
assert_posts('/api/v2/search/alert', search_payload('trash')) do
|
88
|
+
wf.trash
|
89
|
+
end
|
173
90
|
end
|
174
91
|
|
175
92
|
def test_no_data
|
176
|
-
|
177
|
-
|
93
|
+
assert_posts('/api/v2/search/alert', search_payload('no_data')) do
|
94
|
+
wf.no_data
|
95
|
+
end
|
178
96
|
end
|
179
97
|
|
180
98
|
def test_snoozed
|
181
|
-
|
182
|
-
|
99
|
+
assert_posts('/api/v2/search/alert', search_payload('snoozed')) do
|
100
|
+
wf.snoozed
|
101
|
+
end
|
183
102
|
end
|
184
103
|
|
185
104
|
# Not a full test, because it's a recursive API call. Just test
|
186
105
|
# the first API call is made correctly.
|
187
106
|
#
|
188
107
|
def test_all
|
189
|
-
|
108
|
+
assert_gets("/api/v2/#{api_class}?offset=0&limit=999") { wf.all }
|
109
|
+
end
|
110
|
+
|
111
|
+
private
|
112
|
+
|
113
|
+
# used by the things we #include
|
114
|
+
#
|
115
|
+
def api_class
|
116
|
+
'alert'
|
117
|
+
end
|
118
|
+
|
119
|
+
def id
|
120
|
+
'1481553823153'
|
121
|
+
end
|
122
|
+
|
123
|
+
def invalid_id
|
124
|
+
'invalid_alert'
|
125
|
+
end
|
126
|
+
|
127
|
+
def payload
|
128
|
+
{ name: 'SDK test alert',
|
129
|
+
target: 'user@example.com',
|
130
|
+
condition: 'ts("app.errors") > 0',
|
131
|
+
displayExpression: 'ts("app.errors")',
|
132
|
+
minutes: 5,
|
133
|
+
resolveAfterMinutes: 5,
|
134
|
+
severity: 'INFO' }
|
135
|
+
end
|
136
|
+
|
137
|
+
def search_payload(value)
|
138
|
+
{ limit: 999,
|
139
|
+
offset: 0,
|
140
|
+
query: [{ key: 'status', value: value, matchingMethod: 'EXACT' }],
|
141
|
+
sort: { field: 'status', ascending: true } }
|
190
142
|
end
|
191
143
|
end
|