wavefront-sdk 3.3.2 → 3.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/HISTORY.md +42 -35
  3. data/README.md +5 -5
  4. data/lib/wavefront-sdk/alert.rb +2 -0
  5. data/lib/wavefront-sdk/core/api_caller.rb +6 -3
  6. data/lib/wavefront-sdk/defs/version.rb +2 -2
  7. data/lib/wavefront-sdk/derivedmetric.rb +7 -0
  8. data/lib/wavefront-sdk/externallink.rb +2 -2
  9. data/lib/wavefront-sdk/maintenancewindow.rb +6 -2
  10. data/lib/wavefront-sdk/notificant.rb +7 -0
  11. data/lib/wavefront-sdk/paginator/base.rb +8 -0
  12. data/lib/wavefront-sdk/search.rb +11 -2
  13. data/lib/wavefront-sdk/user.rb +39 -8
  14. data/lib/wavefront-sdk/webhook.rb +1 -1
  15. data/spec/constants.rb +30 -0
  16. data/spec/spec_helper.rb +12 -237
  17. data/spec/support/bad_mocket.rb +15 -0
  18. data/spec/support/hash.rb +9 -0
  19. data/spec/support/minitest_assertions.rb +110 -0
  20. data/spec/support/mocket.rb +19 -0
  21. data/spec/test_mixins/acl.rb +78 -0
  22. data/spec/test_mixins/general.rb +120 -0
  23. data/spec/test_mixins/tag.rb +55 -0
  24. data/spec/test_mixins/update_keys.rb +11 -0
  25. data/spec/wavefront-sdk/alert_spec.rb +88 -136
  26. data/spec/wavefront-sdk/apitoken_spec.rb +26 -13
  27. data/spec/wavefront-sdk/cloudintegration_spec.rb +42 -44
  28. data/spec/wavefront-sdk/dashboard_spec.rb +53 -72
  29. data/spec/wavefront-sdk/derivedmetric_spec.rb +23 -49
  30. data/spec/wavefront-sdk/distribution_spec.rb +14 -14
  31. data/spec/wavefront-sdk/event_spec.rb +39 -48
  32. data/spec/wavefront-sdk/externallink_spec.rb +19 -50
  33. data/spec/wavefront-sdk/integration_spec.rb +33 -38
  34. data/spec/wavefront-sdk/maintenancewindow_spec.rb +18 -33
  35. data/spec/wavefront-sdk/message_spec.rb +19 -4
  36. data/spec/wavefront-sdk/metric_spec.rb +13 -9
  37. data/spec/wavefront-sdk/notificant_spec.rb +16 -15
  38. data/spec/wavefront-sdk/proxy_spec.rb +20 -25
  39. data/spec/wavefront-sdk/query_spec.rb +50 -24
  40. data/spec/wavefront-sdk/report_spec.rb +3 -6
  41. data/spec/wavefront-sdk/resources/user_responses/add_user_groups.json +1 -0
  42. data/spec/wavefront-sdk/resources/user_responses/create.json +28 -0
  43. data/spec/wavefront-sdk/resources/user_responses/delete_multiple.json +1 -0
  44. data/spec/wavefront-sdk/resources/user_responses/describe.json +1 -0
  45. data/spec/wavefront-sdk/resources/user_responses/grant.json +1 -0
  46. data/spec/wavefront-sdk/resources/user_responses/list.json +1 -0
  47. data/spec/wavefront-sdk/savedsearch_spec.rb +41 -35
  48. data/spec/wavefront-sdk/search_spec.rb +35 -29
  49. data/spec/wavefront-sdk/settings_spec.rb +18 -12
  50. data/spec/wavefront-sdk/source_spec.rb +29 -32
  51. data/spec/wavefront-sdk/user_spec.rb +101 -74
  52. data/spec/wavefront-sdk/usergroup_spec.rb +56 -67
  53. data/spec/wavefront-sdk/webhook_spec.rb +22 -34
  54. data/spec/wavefront-sdk/write_spec.rb +2 -0
  55. data/spec/wavefront-sdk/writers/core_spec.rb +2 -0
  56. data/spec/wavefront-sdk/writers/summary_spec.rb +2 -0
  57. data/wavefront-sdk.gemspec +5 -5
  58. metadata +44 -13
@@ -1,25 +1,18 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require_relative '../spec_helper'
4
-
5
- EVENT = '1481553823153:testev'.freeze
6
- EVENT_BODY = {
7
- name: 'test_event',
8
- annotations: {
9
- severity: 'info',
10
- type: 'SDK test event',
11
- details: 'an imaginary event to test the SDK'
12
- },
13
- hosts: %w[host1 host2],
14
- startTime: 1_493_385_089_000,
15
- endTime: 1_493_385_345_678,
16
- tags: %w[tag1 tag2],
17
- isEphemeral: false
18
- }.freeze
4
+ require_relative '../test_mixins/general'
5
+ require_relative '../test_mixins/tag'
19
6
 
20
7
  # Unit tests for event class
21
8
  #
22
9
  class WavefrontEventTest < WavefrontTestBase
10
+ include WavefrontTest::Tag
11
+ include WavefrontTest::Create
12
+ include WavefrontTest::Delete
13
+ include WavefrontTest::Describe
14
+ include WavefrontTest::Update
15
+
23
16
  def test_list
24
17
  t1 = Time.now - 600
25
18
  t2 = Time.now
@@ -28,54 +21,52 @@ class WavefrontEventTest < WavefrontTestBase
28
21
 
29
22
  assert_raises(ArgumentError) { wf.list }
30
23
 
31
- should_work(:list, [t1, t2],
32
- "?earliestStartTimeEpochMillis=#{tms1}" \
33
- "&latestStartTimeEpochMillis=#{tms2}" \
34
- '&limit=100')
24
+ time_qs = ["earliestStartTimeEpochMillis=#{tms1}",
25
+ "latestStartTimeEpochMillis=#{tms2}",
26
+ 'limit=100'].join('&')
35
27
 
36
- should_work(:list, [tms1, tms2],
37
- "?earliestStartTimeEpochMillis=#{tms1}" \
38
- "&latestStartTimeEpochMillis=#{tms2}" \
39
- '&limit=100')
28
+ assert_gets("/api/v2/event?#{time_qs}") { wf.list(t1, t2) }
29
+ assert_gets("/api/v2/event?#{time_qs}") { wf.list(tms1, tms2) }
40
30
 
41
31
  assert_raises(Wavefront::Exception::InvalidTimestamp) do
42
32
  wf.list(t1, 'abc')
43
33
  end
44
34
  end
45
35
 
46
- def test_create
47
- should_work(:create, EVENT_BODY, '', :post,
48
- JSON_POST_HEADERS, EVENT_BODY.to_json)
49
- assert_raises(ArgumentError) { wf.create }
50
- assert_raises(ArgumentError) { wf.create('test') }
51
- end
36
+ def test_close
37
+ assert_posts("/api/v2/event/#{id}/close") do
38
+ wf.close(id)
39
+ end
52
40
 
53
- def test_describe
54
- should_work(:describe, EVENT, EVENT)
55
- should_be_invalid(:describe, 'abcdefg')
56
- assert_raises(ArgumentError) { wf.describe }
41
+ assert_invalid_id { wf.close(invalid_id) }
42
+ assert_raises(ArgumentError) { wf.close }
57
43
  end
58
44
 
59
- def test_close
60
- should_work(:close, EVENT, "#{EVENT}/close", :post, POST_HEADERS)
61
- should_be_invalid(:close, 'abcdefg')
62
- assert_raises(ArgumentError) { wf.close }
45
+ private
46
+
47
+ def id
48
+ '1481553823153:testev'
63
49
  end
64
50
 
65
- def test_update
66
- should_work(:update, [EVENT, EVENT_BODY, false], EVENT, :put,
67
- JSON_POST_HEADERS, EVENT_BODY.to_json)
68
- should_be_invalid(:update, ['abcde', EVENT_BODY])
69
- assert_raises(ArgumentError) { wf.update }
51
+ def invalid_id
52
+ 'nonsense'
70
53
  end
71
54
 
72
- def test_delete
73
- should_work(:delete, EVENT, EVENT, :delete)
74
- should_be_invalid(:delete, 'abcdefg')
75
- assert_raises(ArgumentError) { wf.delete }
55
+ def api_class
56
+ 'event'
76
57
  end
77
58
 
78
- def test_tags
79
- tag_tester(EVENT)
59
+ def payload
60
+ { name: 'test_event',
61
+ annotations: {
62
+ severity: 'info',
63
+ type: 'SDK test event',
64
+ details: 'an imaginary event to test the SDK'
65
+ },
66
+ hosts: %w[host1 host2],
67
+ startTime: 1_493_385_089_000,
68
+ endTime: 1_493_385_345_678,
69
+ tags: %w[tag1 tag2],
70
+ isEphemeral: false }
80
71
  end
81
72
  end
@@ -1,67 +1,36 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require_relative '../spec_helper'
4
-
5
- EXTERNAL_LINK = 'lq6rPlSg2CFMSrg6'.freeze
6
- EXTERNAL_LINK_BODY = {
7
- name: 'test link',
8
- template: 'https://example.com/link/{{value}}',
9
- description: 'an imaginary link for unit testing purposes'
10
- }.freeze
11
-
12
- # rubocop:disable Style/MutableConstant
13
- EXTERNAL_LINK_BODY_2 = {
14
- name: 'test link',
15
- template: 'https://example.com/link/{{value}}'
16
- }
17
- # rubocop:enable Style/MutableConstant
4
+ require_relative '../test_mixins/general'
18
5
 
19
6
  # Unit tests for ExternalLink class
20
7
  #
21
8
  class WavefrontExternalLinkTest < WavefrontTestBase
22
- def api_base
23
- 'extlink'
24
- end
9
+ include WavefrontTest::List
10
+ include WavefrontTest::Create
11
+ include WavefrontTest::Delete
12
+ include WavefrontTest::Describe
13
+ include WavefrontTest::Update
25
14
 
26
- def test_list
27
- should_work(:list, 10, '?offset=10&limit=100')
28
- end
15
+ private
29
16
 
30
- def test_describe
31
- should_work(:describe, EXTERNAL_LINK, EXTERNAL_LINK)
32
- should_be_invalid(:describe, 'abcdefg')
33
- assert_raises(ArgumentError) { wf.describe }
17
+ def id
18
+ 'lq6rPlSg2CFMSrg6'
34
19
  end
35
20
 
36
- def test_create
37
- should_work(:create, EXTERNAL_LINK_BODY, '', :post,
38
- JSON_POST_HEADERS, EXTERNAL_LINK_BODY.to_json)
39
-
40
- should_work(:create, EXTERNAL_LINK_BODY_2, '', :post,
41
- JSON_POST_HEADERS, EXTERNAL_LINK_BODY_2
42
- .merge!(description: '').to_json)
43
-
44
- assert_raises(ArgumentError) { wf.create }
45
- assert_raises(ArgumentError) { wf.create('test') }
21
+ def invalid_id
22
+ '__rubbish_id__'
46
23
  end
47
24
 
48
- def test_delete
49
- should_work(:delete, EXTERNAL_LINK, EXTERNAL_LINK, :delete)
50
- should_be_invalid(:delete, 'abcdefg')
51
- assert_raises(ArgumentError) { wf.delete }
25
+ def payload
26
+ [{ name: 'test link',
27
+ template: 'https://example.com/link/{{value}}',
28
+ description: 'an imaginary link for unit testing purposes' },
29
+ { name: 'test link',
30
+ template: 'https://example.com/link/{{value}}' }]
52
31
  end
53
32
 
54
- def test_update
55
- should_work(:update, [EXTERNAL_LINK, EXTERNAL_LINK_BODY, false],
56
- EXTERNAL_LINK, :put, JSON_POST_HEADERS,
57
- EXTERNAL_LINK_BODY.to_json)
58
-
59
- should_work(:update, [EXTERNAL_LINK, EXTERNAL_LINK_BODY_2, false],
60
- EXTERNAL_LINK, :put, JSON_POST_HEADERS,
61
- EXTERNAL_LINK_BODY_2.to_json)
62
-
63
- should_be_invalid(:update, ['abcde', EXTERNAL_LINK_BODY])
64
- assert_raises(ArgumentError) { wf.update }
65
- assert_raises(ArgumentError) { wf.update(EXTERNAL_LINK) }
33
+ def api_class
34
+ 'extlink'
66
35
  end
67
36
  end
@@ -1,67 +1,62 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require_relative '../spec_helper'
4
-
5
- INTEGRATION = 'tester'.freeze
4
+ require_relative '../test_mixins/general'
6
5
 
7
6
  # Unit tests for Integration class
8
7
  #
9
8
  class WavefrontIntegrationTest < WavefrontTestBase
10
- def test_list
11
- should_work(:list, 10, '?offset=10&limit=100')
12
- end
13
-
14
- def test_install
15
- should_work(:install, INTEGRATION, ["#{INTEGRATION}/install", nil],
16
- :post, POST_HEADERS)
17
- should_be_invalid(:install)
18
- assert_raises(ArgumentError) { wf.install }
19
- end
9
+ include WavefrontTest::Describe
10
+ include WavefrontTest::InstallUninstall
11
+ include WavefrontTest::List
20
12
 
21
13
  def test_install_all_alerts
22
- should_work(:install_all_alerts, INTEGRATION,
23
- ["#{INTEGRATION}/install-all-alerts", nil],
24
- :post, POST_HEADERS)
25
- should_be_invalid(:install_all_alerts)
26
- assert_raises(ArgumentError) { wf.install_all_alerts }
27
- end
14
+ assert_posts("/api/v2/integration/#{id}/install-all-alerts") do
15
+ wf.install_all_alerts(id)
16
+ end
28
17
 
29
- def test_uninstall
30
- should_work(:uninstall, INTEGRATION, ["#{INTEGRATION}/uninstall", nil],
31
- :post, POST_HEADERS)
32
- should_be_invalid(:uninstall)
33
- assert_raises(ArgumentError) { wf.uninstall }
18
+ assert_invalid_id { wf.install_all_alerts(invalid_id) }
19
+ assert_raises(ArgumentError) { wf.install_all_alerts }
34
20
  end
35
21
 
36
22
  def test_uninstall_all_alerts
37
- should_work(:uninstall_all_alerts, INTEGRATION,
38
- ["#{INTEGRATION}/uninstall-all-alerts", nil],
39
- :post, POST_HEADERS)
40
- should_be_invalid(:uninstall_all_alerts)
41
- assert_raises(ArgumentError) { wf.uninstall_all_alerts }
42
- end
23
+ assert_posts("/api/v2/integration/#{id}/uninstall-all-alerts") do
24
+ wf.uninstall_all_alerts(id)
25
+ end
43
26
 
44
- def test_describe
45
- should_work(:describe, INTEGRATION, INTEGRATION)
46
- should_be_invalid(:describe)
47
- assert_raises(ArgumentError) { wf.describe }
27
+ assert_invalid_id { wf.uninstall_all_alerts(invalid_id) }
28
+ assert_raises(ArgumentError) { wf.uninstall_all_alerts }
48
29
  end
49
30
 
50
31
  def test_status
51
- should_work(:status, INTEGRATION, "#{INTEGRATION}/status")
52
- should_be_invalid(:status)
32
+ assert_gets("/api/v2/integration/#{id}/status") { wf.status(id) }
33
+ assert_invalid_id { wf.status(invalid_id) }
53
34
  assert_raises(ArgumentError) { wf.status }
54
35
  end
55
36
 
56
37
  def test_installed
57
- should_work(:installed, nil, 'installed')
38
+ assert_gets('/api/v2/integration/installed') { wf.installed }
58
39
  end
59
40
 
60
41
  def test_manifests
61
- should_work(:manifests, nil, 'manifests')
42
+ assert_gets('/api/v2/integration/manifests') { wf.manifests }
62
43
  end
63
44
 
64
45
  def test_statuses
65
- should_work(:statuses, nil, 'status')
46
+ assert_gets('/api/v2/integration/status') { wf.statuses }
47
+ end
48
+
49
+ private
50
+
51
+ def api_class
52
+ 'integration'
53
+ end
54
+
55
+ def id
56
+ 'tester'
57
+ end
58
+
59
+ def invalid_id
60
+ 'very bad id'
66
61
  end
67
62
  end
@@ -1,48 +1,33 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require_relative '../spec_helper'
4
-
5
- WINDOW = '1493324005091'.freeze
6
- WINDOW_BODY = {
7
- reason: 'testing SDK',
8
- title: 'test window',
9
- start: Time.now.to_i,
10
- end: Time.now.to_i + 600,
11
- tags: %w[testtag1 testtag2],
12
- hostTags: %w[hosttag1 hosttag2]
13
- }.freeze
4
+ require_relative '../test_mixins/general'
14
5
 
15
6
  # Unit tests for MaintenanceWindow class
16
7
  #
17
8
  class WavefrontMaintenanceWindowTest < WavefrontTestBase
18
- def test_list
19
- should_work(:list, 10, '?offset=10&limit=100')
20
- should_work(:list, [20, 30], '?offset=20&limit=30')
21
- end
9
+ include WavefrontTest::Create
10
+ include WavefrontTest::Delete
11
+ include WavefrontTest::Describe
12
+ include WavefrontTest::List
13
+ include WavefrontTest::Update
22
14
 
23
- def test_describe
24
- should_work(:describe, WINDOW, WINDOW)
25
- should_be_invalid(:describe, 'abcdefg')
26
- assert_raises(ArgumentError) { wf.describe }
27
- end
15
+ private
28
16
 
29
- def test_create
30
- should_work(:create, WINDOW_BODY, '', :post,
31
- JSON_POST_HEADERS, WINDOW_BODY.to_json)
32
- assert_raises(ArgumentError) { wf.create }
33
- assert_raises(ArgumentError) { wf.create('test') }
17
+ def api_class
18
+ 'maintenancewindow'
34
19
  end
35
20
 
36
- def test_delete
37
- should_work(:delete, WINDOW, WINDOW, :delete)
38
- should_be_invalid(:delete, 'abcdefg')
39
- assert_raises(ArgumentError) { wf.delete }
21
+ def id
22
+ '1493324005091'
40
23
  end
41
24
 
42
- def test_update
43
- should_work(:update, [WINDOW, WINDOW_BODY, false], WINDOW, :put,
44
- JSON_POST_HEADERS, WINDOW_BODY.to_json)
45
- should_be_invalid(:update, ['abcde', WINDOW_BODY])
46
- assert_raises(ArgumentError) { wf.update }
25
+ def payload
26
+ { reason: 'testing SDK',
27
+ title: 'test window',
28
+ start: Time.now.to_i,
29
+ end: Time.now.to_i + 600,
30
+ tags: %w[testtag1 testtag2],
31
+ hostTags: %w[hosttag1 hosttag2] }
47
32
  end
48
33
  end
@@ -8,12 +8,27 @@ MESSAGE = 'CLUSTER::IHjNaHM9'.freeze
8
8
  #
9
9
  class WavefrontMessageTest < WavefrontTestBase
10
10
  def test_list
11
- should_work(:list, 10, '?offset=10&limit=100&unreadOnly=true')
12
- should_work(:list, [12, 34, false], '?offset=12&limit=34&unreadOnly=false')
11
+ assert_gets('/api/v2/message?offset=10&limit=100&unreadOnly=true') do
12
+ wf.list(10)
13
+ end
14
+
15
+ assert_gets('/api/v2/message?offset=12&limit=34&unreadOnly=false') do
16
+ wf.list(12, 34, false)
17
+ end
13
18
  end
14
19
 
15
20
  def test_read
16
- should_work(:read, MESSAGE, "#{MESSAGE}/read", :post, POST_HEADERS)
17
- should_be_invalid(:read, 'bad id')
21
+ assert_posts("/api/v2/message/#{id}/read") { wf.read(id) }
22
+ assert_invalid_id { wf.read(invalid_id) }
23
+ end
24
+
25
+ private
26
+
27
+ def id
28
+ 'CLUSTER::IHjNaHM9'
29
+ end
30
+
31
+ def invalid_id
32
+ '__!!__'
18
33
  end
19
34
  end
@@ -5,16 +5,20 @@ require_relative '../spec_helper'
5
5
  # Unit tests for Metric class
6
6
  #
7
7
  class WavefrontMetricTest < WavefrontTestBase
8
- def api_base
9
- 'chart/metric'
10
- end
11
-
12
8
  def test_detail
13
- should_work(:detail, 'metric.1', 'detail?m=metric.1')
14
- should_work(:detail, ['metric.1', %w[host1 host2]],
15
- 'detail?m=metric.1&h=host1&h=host2')
16
- should_work(:detail, ['metric.1', %w[host1 host2], 'abc'],
17
- 'detail?m=metric.1&h=host1&h=host2&c=abc')
9
+ assert_gets('/api/v2/chart/metric/detail?m=test.metric') do
10
+ wf.detail('test.metric')
11
+ end
12
+
13
+ assert_gets('/api/v2/chart/metric/detail?m=path&h=host1&h=host2') do
14
+ wf.detail('path', %w[host1 host2])
15
+ end
16
+
17
+ assert_gets('/api/v2/chart/metric/detail?m=test.metric&' \
18
+ 'h=host1&h=host2&c=abc') do
19
+ wf.detail('test.metric', %w[host1 host2], 'abc')
20
+ end
21
+
18
22
  assert_raises(ArgumentError) { wf.detail }
19
23
  assert_raises(ArgumentError) { wf.detail('m1', 'm2') }
20
24
  end
@@ -1,30 +1,31 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require_relative '../spec_helper'
4
-
5
- NOTIFICANT = '8Bl5l7wxtdGindxk'.freeze
4
+ require_relative '../test_mixins/general'
6
5
 
7
6
  # Unit tests for notificant class
8
7
  #
9
8
  class WavefrontNotificantTest < WavefrontTestBase
10
- def test_list
11
- should_work(:list, 10, '?offset=10&limit=100')
9
+ include WavefrontTest::List
10
+ include WavefrontTest::Delete
11
+ include WavefrontTest::Describe
12
+
13
+ def test_test
14
+ assert_posts("/api/v2/notificant/test/#{id}") { wf.test(id) }
15
+ assert_invalid_id { wf.test(invalid_id) }
12
16
  end
13
17
 
14
- def test_describe
15
- should_work(:describe, NOTIFICANT, NOTIFICANT)
16
- should_be_invalid(:describe)
17
- assert_raises(ArgumentError) { wf.describe }
18
+ private
19
+
20
+ def api_class
21
+ 'notificant'
18
22
  end
19
23
 
20
- def test_delete
21
- should_work(:delete, NOTIFICANT, NOTIFICANT, :delete)
22
- should_be_invalid('delete')
24
+ def id
25
+ '8Bl5l7wxtdGindxk'
23
26
  end
24
27
 
25
- def test_test
26
- should_work(:test, NOTIFICANT, ["test/#{NOTIFICANT}", nil],
27
- :post, POST_HEADERS)
28
- should_be_invalid('test')
28
+ def invalid_id
29
+ '---rubbish---'
29
30
  end
30
31
  end