wavefront-sdk 3.0.2 → 3.2.0
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.
- checksums.yaml +4 -4
- data/HISTORY.md +12 -1
- data/README.md +4 -0
- data/Rakefile +1 -0
- data/lib/wavefront-sdk/alert.rb +36 -49
- data/lib/wavefront-sdk/api_mixins/acl.rb +76 -0
- data/lib/wavefront-sdk/api_mixins/tag.rb +62 -0
- data/lib/wavefront-sdk/api_mixins/user.rb +26 -0
- data/lib/wavefront-sdk/apitoken.rb +49 -0
- data/lib/wavefront-sdk/core/exception.rb +1 -0
- data/lib/wavefront-sdk/dashboard.rb +6 -106
- data/lib/wavefront-sdk/defs/version.rb +1 -1
- data/lib/wavefront-sdk/derivedmetric.rb +6 -56
- data/lib/wavefront-sdk/event.rb +4 -50
- data/lib/wavefront-sdk/paginator/base.rb +8 -7
- data/lib/wavefront-sdk/paginator/post.rb +7 -5
- data/lib/wavefront-sdk/source.rb +4 -48
- data/lib/wavefront-sdk/user.rb +2 -2
- data/lib/wavefront-sdk/usergroup.rb +2 -2
- data/lib/wavefront-sdk/validators.rb +10 -0
- data/lib/wavefront-sdk/write.rb +43 -12
- data/lib/wavefront-sdk/writers/socket.rb +2 -2
- data/spec/.rubocop.yml +1 -1
- data/spec/spec_helper.rb +66 -0
- data/spec/wavefront-sdk/alert_spec.rb +14 -0
- data/spec/wavefront-sdk/{support → api_mixins}/user_mixins_spec.rb +2 -2
- data/spec/wavefront-sdk/apitoken_spec.rb +31 -0
- data/spec/wavefront-sdk/core/api_spec.rb +3 -5
- data/spec/wavefront-sdk/credentials_spec.rb +41 -37
- data/spec/wavefront-sdk/dashboard_spec.rb +4 -52
- data/spec/wavefront-sdk/distribution_spec.rb +1 -3
- data/spec/wavefront-sdk/metric_helper_spec.rb +6 -8
- data/spec/wavefront-sdk/report_spec.rb +2 -2
- data/spec/wavefront-sdk/stdlib/array_spec.rb +6 -6
- data/spec/wavefront-sdk/stdlib/hash_spec.rb +5 -5
- data/spec/wavefront-sdk/support/mixins_spec.rb +34 -36
- data/spec/wavefront-sdk/support/parse_time_spec.rb +25 -29
- data/spec/wavefront-sdk/usergroup_spec.rb +34 -34
- data/spec/wavefront-sdk/validators_spec.rb +10 -1
- data/spec/wavefront-sdk/write_spec.rb +71 -4
- data/spec/wavefront-sdk/writers/core_spec.rb +10 -10
- data/spec/wavefront-sdk/writers/socket_spec.rb +13 -1
- metadata +10 -5
- data/lib/wavefront-sdk/support/user_mixins.rb +0 -24
data/spec/spec_helper.rb
CHANGED
@@ -7,6 +7,7 @@ SimpleCov.start do
|
|
7
7
|
add_filter '/spec/'
|
8
8
|
end
|
9
9
|
require 'minitest/autorun'
|
10
|
+
require 'spy/integration'
|
10
11
|
require 'webmock/minitest'
|
11
12
|
|
12
13
|
# rubocop:disable Style/MutableConstant
|
@@ -14,6 +15,8 @@ CREDS = { endpoint: 'test.example.com',
|
|
14
15
|
token: '0123456789-ABCDEF' }
|
15
16
|
# rubocop:enable Style/MutableConstant
|
16
17
|
|
18
|
+
W_CREDS = { proxy: 'wavefront', port: 2878 }.freeze
|
19
|
+
|
17
20
|
POST_HEADERS = {
|
18
21
|
'Content-Type': 'text/plain', Accept: 'application/json'
|
19
22
|
}.freeze
|
@@ -29,6 +32,11 @@ DUMMY_RESPONSE = '{"status":{"result":"OK","message":"","code":200},' \
|
|
29
32
|
RESOURCE_DIR = (Pathname.new(__FILE__).dirname +
|
30
33
|
'wavefront-sdk' + 'resources').freeze
|
31
34
|
|
35
|
+
U_ACL_1 = { name: 'someone@example.com', id: 'someone@example.com' }.freeze
|
36
|
+
U_ACL_2 = { name: 'other@elsewhere.com', id: 'other@elsewhere.com' }.freeze
|
37
|
+
GRP_ACL = { name: 'example group',
|
38
|
+
id: 'f8dc0c14-91a0-4ca9-8a2a-7d47f4db4672' }.freeze
|
39
|
+
|
32
40
|
# Common testing code
|
33
41
|
class WavefrontTestBase < MiniTest::Test
|
34
42
|
attr_reader :wf, :wf_noop, :headers
|
@@ -160,6 +168,48 @@ class WavefrontTestBase < MiniTest::Test
|
|
160
168
|
wf.send(method, id, '<!!!>')
|
161
169
|
end
|
162
170
|
end
|
171
|
+
|
172
|
+
def acl_tester(id)
|
173
|
+
id2 = id.reverse
|
174
|
+
should_work(:acls, [[id, id2]], "acl?id=#{id}&id=#{id2}")
|
175
|
+
|
176
|
+
should_work(:acl_add, [id, [U_ACL_1, U_ACL_2], [GRP_ACL]],
|
177
|
+
'acl/add', :post, {}, acl_body(id,
|
178
|
+
[U_ACL_1, U_ACL_2],
|
179
|
+
[GRP_ACL]))
|
180
|
+
|
181
|
+
should_work(:acl_add, [id, [U_ACL_1, U_ACL_2]],
|
182
|
+
'acl/add', :post, {}, acl_body(id,
|
183
|
+
[U_ACL_1, U_ACL_2]))
|
184
|
+
assert_raises(ArgumentError) { wf.acl_add(id, U_ACL_1) }
|
185
|
+
assert_raises(ArgumentError) { wf.acl_add(id, [U_ACL_1], GRP_ACL) }
|
186
|
+
|
187
|
+
should_work(:acl_delete, [id, [U_ACL_1, U_ACL_2], [GRP_ACL]],
|
188
|
+
'acl/remove', :post, {}, acl_body(id,
|
189
|
+
[U_ACL_1, U_ACL_2],
|
190
|
+
[GRP_ACL]))
|
191
|
+
|
192
|
+
should_work(:acl_delete, [id, [U_ACL_1, U_ACL_2]],
|
193
|
+
'acl/remove', :post, {}, acl_body(id,
|
194
|
+
[U_ACL_1, U_ACL_2]))
|
195
|
+
assert_raises(ArgumentError) { wf.acl_delete(id, U_ACL_1) }
|
196
|
+
|
197
|
+
should_work(:acl_set, [id, [U_ACL_1, U_ACL_2], [GRP_ACL]],
|
198
|
+
'acl/set', :put, {}, acl_body(id,
|
199
|
+
[U_ACL_1, U_ACL_2],
|
200
|
+
[GRP_ACL]))
|
201
|
+
|
202
|
+
should_work(:acl_set, [id, [U_ACL_1, U_ACL_2]],
|
203
|
+
'acl/set', :put, {}, acl_body(id,
|
204
|
+
[U_ACL_1, U_ACL_2]))
|
205
|
+
assert_raises(ArgumentError) { wf.acl_set(id, U_ACL_1) }
|
206
|
+
end
|
207
|
+
|
208
|
+
# used by acl_tester
|
209
|
+
#
|
210
|
+
def acl_body(id, view = [], modify = [])
|
211
|
+
[{ entityId: id, viewAcl: view, modifyAcl: modify }].to_json
|
212
|
+
end
|
163
213
|
end
|
164
214
|
|
165
215
|
# Extensions to stdlib
|
@@ -182,6 +232,14 @@ class Mocket
|
|
182
232
|
def ok?
|
183
233
|
true
|
184
234
|
end
|
235
|
+
|
236
|
+
def response
|
237
|
+
{ sent: 1, rejected: 0, unsent: 0 }
|
238
|
+
end
|
239
|
+
|
240
|
+
def status
|
241
|
+
{ result: 'OK', message: nil, code: nil }
|
242
|
+
end
|
185
243
|
end
|
186
244
|
|
187
245
|
# A mock socket which says things went wrong.
|
@@ -190,4 +248,12 @@ class BadMocket < Mocket
|
|
190
248
|
def ok?
|
191
249
|
false
|
192
250
|
end
|
251
|
+
|
252
|
+
def status
|
253
|
+
{ result: 'ERROR', message: nil, code: nil }
|
254
|
+
end
|
255
|
+
|
256
|
+
def response
|
257
|
+
{ sent: 0, rejected: 1, unsent: 0 }
|
258
|
+
end
|
193
259
|
end
|
@@ -55,6 +55,16 @@ class WavefrontAlertTest < WavefrontTestBase
|
|
55
55
|
assert_raises(ArgumentError) { wf.create('test') }
|
56
56
|
end
|
57
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
|
+
|
58
68
|
def test_describe_v
|
59
69
|
should_work(:describe, [ALERT, 4], "#{ALERT}/history/4")
|
60
70
|
end
|
@@ -92,6 +102,10 @@ class WavefrontAlertTest < WavefrontTestBase
|
|
92
102
|
tag_tester(ALERT)
|
93
103
|
end
|
94
104
|
|
105
|
+
def test_acls
|
106
|
+
acl_tester(ALERT)
|
107
|
+
end
|
108
|
+
|
95
109
|
def test_undelete
|
96
110
|
should_work(:undelete, ALERT, ["#{ALERT}/undelete", nil], :post,
|
97
111
|
POST_HEADERS)
|
@@ -1,14 +1,14 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
require_relative '../../spec_helper'
|
4
|
-
require_relative '../../../lib/wavefront-sdk/
|
4
|
+
require_relative '../../../lib/wavefront-sdk/api_mixins/user'
|
5
5
|
require_relative '../../../lib/wavefront-sdk/validators'
|
6
6
|
require_relative '../../../lib/wavefront-sdk/core/exception'
|
7
7
|
|
8
8
|
# Test user mixins
|
9
9
|
#
|
10
10
|
class WavefrontUserMixinsTest < MiniTest::Test
|
11
|
-
include Wavefront::
|
11
|
+
include Wavefront::Mixin::User
|
12
12
|
include Wavefront::Validators
|
13
13
|
|
14
14
|
def test_validate_user_list
|
@@ -0,0 +1,31 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require_relative '../spec_helper'
|
4
|
+
|
5
|
+
API_TOKEN_ID = '17db4cc1-65f6-40a8-a1fa-6fcae460c4bd'.freeze
|
6
|
+
|
7
|
+
# Unit tests for API token class
|
8
|
+
#
|
9
|
+
class WavefrontApiTokenTest < WavefrontTestBase
|
10
|
+
def test_list
|
11
|
+
should_work(:list, [], '')
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_create
|
15
|
+
should_work(:create, [], '', :post, JSON_POST_HEADERS, nil)
|
16
|
+
assert_raises(ArgumentError) { wf.create('test') }
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_delete
|
20
|
+
should_work(:delete, API_TOKEN_ID, API_TOKEN_ID, :delete)
|
21
|
+
should_be_invalid(:delete)
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_rename
|
25
|
+
should_work(:rename, [API_TOKEN_ID, 'token name'],
|
26
|
+
API_TOKEN_ID, :put, JSON_POST_HEADERS,
|
27
|
+
{ tokenID: API_TOKEN_ID, tokenName: 'token name' }.to_json)
|
28
|
+
should_be_invalid(:rename, ['!invalid token!', 'token name'])
|
29
|
+
assert_raises(ArgumentError) { wf.rename }
|
30
|
+
end
|
31
|
+
end
|
@@ -3,7 +3,6 @@
|
|
3
3
|
require_relative '../../spec_helper'
|
4
4
|
require_relative '../../../lib/wavefront-sdk/core/api'
|
5
5
|
|
6
|
-
#
|
7
6
|
# Test SDK core API class
|
8
7
|
#
|
9
8
|
class WavefrontCoreApiTest < MiniTest::Test
|
@@ -15,8 +14,8 @@ class WavefrontCoreApiTest < MiniTest::Test
|
|
15
14
|
|
16
15
|
def test_time_to_ms
|
17
16
|
now_ms = Time.now.to_i * 1000
|
18
|
-
assert_equal wf.time_to_ms(now_ms)
|
19
|
-
assert_equal wf.time_to_ms(1_469_711_187)
|
17
|
+
assert_equal(now_ms, wf.time_to_ms(now_ms))
|
18
|
+
assert_equal(1_469_711_187_000, wf.time_to_ms(1_469_711_187))
|
20
19
|
refute wf.time_to_ms([])
|
21
20
|
refute wf.time_to_ms('1469711187')
|
22
21
|
end
|
@@ -25,7 +24,6 @@ class WavefrontCoreApiTest < MiniTest::Test
|
|
25
24
|
wf.instance_variable_set('@update_keys', %i[k1 k2])
|
26
25
|
body = { k1: 'ov1', k2: 'ov2', k3: 'ov3' }
|
27
26
|
upd = { k2: 'nv1' }
|
28
|
-
|
29
|
-
assert_equal(wf.hash_for_update(body, upd), k1: 'ov1', k2: 'nv1')
|
27
|
+
assert_equal({ k1: 'ov1', k2: 'nv1' }, wf.hash_for_update(body, upd))
|
30
28
|
end
|
31
29
|
end
|
@@ -4,8 +4,6 @@ require 'pathname'
|
|
4
4
|
require_relative '../spec_helper'
|
5
5
|
require_relative '../../lib/wavefront-sdk/credentials'
|
6
6
|
|
7
|
-
p RESOURCE_DIR
|
8
|
-
|
9
7
|
CONF1 = RESOURCE_DIR + 'test.conf'
|
10
8
|
CONF2 = RESOURCE_DIR + 'test2.conf'
|
11
9
|
|
@@ -22,9 +20,9 @@ class WavefrontCredentialsTest < MiniTest::Test
|
|
22
20
|
assert_instance_of(Map, c.config)
|
23
21
|
assert_instance_of(Map, c.all)
|
24
22
|
|
25
|
-
assert_equal(
|
26
|
-
assert_equal(
|
27
|
-
assert_equal(c.creds[:endpoint]
|
23
|
+
assert_equal(%w[token endpoint], c.creds.keys)
|
24
|
+
assert_equal('12345678-abcd-1234-abcd-123456789012', c.creds[:token])
|
25
|
+
assert_equal('default.wavefront.com', c.creds[:endpoint])
|
28
26
|
end
|
29
27
|
|
30
28
|
def test_initialize_env_token
|
@@ -37,9 +35,9 @@ class WavefrontCredentialsTest < MiniTest::Test
|
|
37
35
|
assert_instance_of(Map, c.config)
|
38
36
|
assert_instance_of(Map, c.all)
|
39
37
|
|
40
|
-
assert_equal(
|
41
|
-
assert_equal(c.creds[:token]
|
42
|
-
assert_equal(c.creds[:endpoint]
|
38
|
+
assert_equal(%w[token endpoint], c.creds.keys)
|
39
|
+
assert_equal('abcdefgh', c.creds[:token])
|
40
|
+
assert_equal('default.wavefront.com', c.creds[:endpoint])
|
43
41
|
end
|
44
42
|
|
45
43
|
def test_initialize_env_endpoint
|
@@ -52,9 +50,9 @@ class WavefrontCredentialsTest < MiniTest::Test
|
|
52
50
|
assert_instance_of(Map, c.config)
|
53
51
|
assert_instance_of(Map, c.all)
|
54
52
|
|
55
|
-
assert_equal(
|
56
|
-
assert_equal(
|
57
|
-
assert_equal(c.creds[:endpoint]
|
53
|
+
assert_equal(%w[token endpoint], c.creds.keys)
|
54
|
+
assert_equal('12345678-abcd-1234-abcd-123456789012', c.creds[:token])
|
55
|
+
assert_equal('endpoint.wavefront.com', c.creds[:endpoint])
|
58
56
|
end
|
59
57
|
end
|
60
58
|
|
@@ -83,22 +81,26 @@ class GibletsTest < MiniTest::Test
|
|
83
81
|
end
|
84
82
|
|
85
83
|
def test_env_override_noenvs
|
86
|
-
assert_equal(wf.env_override(raw)
|
84
|
+
assert_equal(raw, wf.env_override(raw))
|
87
85
|
end
|
88
86
|
|
89
87
|
def test_env_override_env_endpoint
|
90
88
|
ENV['WAVEFRONT_ENDPOINT'] = 'env_ep'
|
91
89
|
|
92
|
-
assert_equal(
|
93
|
-
|
90
|
+
assert_equal(
|
91
|
+
{ endpoint: 'env_ep', token: 'raw_tok', proxy: 'raw_proxy' },
|
92
|
+
wf.env_override(raw)
|
93
|
+
)
|
94
94
|
end
|
95
95
|
|
96
96
|
def test_env_override_env_endpoint_and_token
|
97
97
|
ENV['WAVEFRONT_ENDPOINT'] = 'env_ep'
|
98
98
|
ENV['WAVEFRONT_TOKEN'] = 'env_tok'
|
99
99
|
|
100
|
-
assert_equal(
|
101
|
-
|
100
|
+
assert_equal(
|
101
|
+
{ endpoint: 'env_ep', token: 'env_tok', proxy: 'raw_proxy' },
|
102
|
+
wf.env_override(raw)
|
103
|
+
)
|
102
104
|
end
|
103
105
|
|
104
106
|
def test_env_override_env_proxy
|
@@ -106,8 +108,10 @@ class GibletsTest < MiniTest::Test
|
|
106
108
|
x = wf.env_override(raw)
|
107
109
|
|
108
110
|
assert_instance_of(Hash, x)
|
109
|
-
assert_equal(
|
110
|
-
|
111
|
+
assert_equal(
|
112
|
+
{ endpoint: 'raw_ep', token: 'raw_tok', proxy: 'env_proxy' },
|
113
|
+
x
|
114
|
+
)
|
111
115
|
end
|
112
116
|
|
113
117
|
def test_populate
|
@@ -117,23 +121,23 @@ class GibletsTest < MiniTest::Test
|
|
117
121
|
proxy = wf.instance_variable_get('@proxy')
|
118
122
|
|
119
123
|
assert_instance_of(Map, config)
|
120
|
-
assert_equal(config.proxy
|
121
|
-
assert_equal(config.endpoint
|
124
|
+
assert_equal('raw_proxy', config.proxy)
|
125
|
+
assert_equal('raw_ep', config.endpoint)
|
122
126
|
|
123
127
|
assert_instance_of(Map, creds)
|
124
|
-
assert_equal(creds.endpoint
|
125
|
-
assert_equal(creds.token
|
128
|
+
assert_equal('raw_ep', creds.endpoint)
|
129
|
+
assert_equal('raw_tok', creds.token)
|
126
130
|
refute creds[:proxy]
|
127
131
|
|
128
132
|
assert_instance_of(Map, proxy)
|
129
|
-
assert_equal(config.proxy
|
133
|
+
assert_equal('raw_proxy', config.proxy)
|
130
134
|
refute proxy[:endpoint]
|
131
135
|
end
|
132
136
|
|
133
137
|
def test_cred_files_no_opts
|
134
138
|
x = wf.cred_files
|
135
139
|
assert_instance_of(Array, x)
|
136
|
-
assert_equal(x.length
|
140
|
+
assert_equal(3, x.length)
|
137
141
|
x.each { |p| assert_instance_of(Pathname, p) }
|
138
142
|
assert_includes(x, Pathname.new('/etc/wavefront/credentials'))
|
139
143
|
assert_includes(x, Pathname.new(ENV['HOME']) + '.wavefront')
|
@@ -143,22 +147,22 @@ class GibletsTest < MiniTest::Test
|
|
143
147
|
def test_cred_files_opts
|
144
148
|
x = wf.cred_files(file: '/test/file')
|
145
149
|
assert_instance_of(Array, x)
|
146
|
-
assert_equal(x.length
|
147
|
-
assert_equal(
|
150
|
+
assert_equal(1, x.length)
|
151
|
+
assert_equal(Array(Pathname.new('/test/file')), x)
|
148
152
|
end
|
149
153
|
|
150
154
|
def test_load_from_file
|
151
|
-
assert_equal(
|
155
|
+
assert_equal({},
|
156
|
+
wf.load_from_file(
|
152
157
|
[Pathname.new('/no/file/1'), Pathname.new('/no/file/2')]
|
153
|
-
|
158
|
+
))
|
154
159
|
|
155
|
-
assert_equal(wf.load_from_file([CONF1], 'noprofile')
|
156
|
-
file: CONF1)
|
160
|
+
assert_equal({ file: CONF1 }, wf.load_from_file([CONF1], 'noprofile'))
|
157
161
|
|
158
162
|
x = wf.load_from_file([CONF2, CONF1], 'default')
|
159
163
|
assert_instance_of(Hash, x)
|
160
|
-
assert_equal(x.keys.size
|
161
|
-
assert_equal(x[:proxy]
|
164
|
+
assert_equal(5, x.keys.size)
|
165
|
+
assert_equal('wavefront.localnet', x[:proxy])
|
162
166
|
|
163
167
|
%i[token endpoint proxy sourceformat file].each do |k|
|
164
168
|
assert_includes(x.keys, k)
|
@@ -167,15 +171,15 @@ class GibletsTest < MiniTest::Test
|
|
167
171
|
y = wf.load_from_file([CONF2, CONF1], 'other')
|
168
172
|
assert_instance_of(Hash, y)
|
169
173
|
%i[token endpoint proxy file].each { |k| assert_includes(y.keys, k) }
|
170
|
-
assert_equal(y.keys.size
|
171
|
-
assert_equal(y[:proxy]
|
174
|
+
assert_equal(4, y.keys.size)
|
175
|
+
assert_equal('otherwf.localnet', y[:proxy])
|
172
176
|
|
173
177
|
z = wf.load_from_file([CONF1, CONF2], 'default')
|
174
178
|
assert_instance_of(Hash, z)
|
175
179
|
%i[token endpoint proxy file].each { |k| assert_includes(z.keys, k) }
|
176
|
-
assert_equal(z.keys.size
|
177
|
-
assert_equal(z[:proxy]
|
178
|
-
assert_equal(
|
180
|
+
assert_equal(4, z.keys.size)
|
181
|
+
assert_equal('wavefront.lab', z[:proxy])
|
182
|
+
assert_equal('somewhere.wavefront.com', z[:endpoint])
|
179
183
|
end
|
180
184
|
|
181
185
|
def test_load_profile
|
@@ -22,11 +22,6 @@ DASHBOARD_BODY = {
|
|
22
22
|
]
|
23
23
|
}.freeze
|
24
24
|
|
25
|
-
U_ACL_1 = { name: 'someone@example.com', id: 'someone@example.com' }.freeze
|
26
|
-
U_ACL_2 = { name: 'other@elsewhere.com', id: 'other@elsewhere.com' }.freeze
|
27
|
-
GRP_ACL = { name: 'example group',
|
28
|
-
id: 'f8dc0c14-91a0-4ca9-8a2a-7d47f4db4672' }.freeze
|
29
|
-
|
30
25
|
# Unit tests for dashboard class
|
31
26
|
#
|
32
27
|
class WavefrontDashboardTest < WavefrontTestBase
|
@@ -80,6 +75,10 @@ class WavefrontDashboardTest < WavefrontTestBase
|
|
80
75
|
tag_tester(DASHBOARD)
|
81
76
|
end
|
82
77
|
|
78
|
+
def test_acls
|
79
|
+
acl_tester(DASHBOARD)
|
80
|
+
end
|
81
|
+
|
83
82
|
def test_undelete
|
84
83
|
should_work(:undelete, DASHBOARD, ["#{DASHBOARD}/undelete",
|
85
84
|
nil], :post, POST_HEADERS)
|
@@ -93,51 +92,4 @@ class WavefrontDashboardTest < WavefrontTestBase
|
|
93
92
|
nil], :post, POST_HEADERS)
|
94
93
|
should_be_invalid(:unfavorite)
|
95
94
|
end
|
96
|
-
|
97
|
-
def test_acls
|
98
|
-
should_work(:acls, [%w[dash1 dash2]], 'acl?id=dash1&id=dash2')
|
99
|
-
end
|
100
|
-
|
101
|
-
def test_acl_add
|
102
|
-
should_work(:acl_add, [DASHBOARD, [U_ACL_1, U_ACL_2], [GRP_ACL]],
|
103
|
-
'acl/add', :post, {}, acl_body(DASHBOARD,
|
104
|
-
[U_ACL_1, U_ACL_2],
|
105
|
-
[GRP_ACL]))
|
106
|
-
|
107
|
-
should_work(:acl_add, [DASHBOARD, [U_ACL_1, U_ACL_2]],
|
108
|
-
'acl/add', :post, {}, acl_body(DASHBOARD,
|
109
|
-
[U_ACL_1, U_ACL_2]))
|
110
|
-
assert_raises(ArgumentError) { wf.acl_add(DASHBOARD, U_ACL_1) }
|
111
|
-
assert_raises(ArgumentError) do
|
112
|
-
wf.acl_add(DASHBOARD, [U_ACL_1], GRP_ACL)
|
113
|
-
end
|
114
|
-
end
|
115
|
-
|
116
|
-
def test_acl_remove
|
117
|
-
should_work(:acl_delete, [DASHBOARD, [U_ACL_1, U_ACL_2], [GRP_ACL]],
|
118
|
-
'acl/remove', :post, {}, acl_body(DASHBOARD,
|
119
|
-
[U_ACL_1, U_ACL_2],
|
120
|
-
[GRP_ACL]))
|
121
|
-
|
122
|
-
should_work(:acl_delete, [DASHBOARD, [U_ACL_1, U_ACL_2]],
|
123
|
-
'acl/remove', :post, {}, acl_body(DASHBOARD,
|
124
|
-
[U_ACL_1, U_ACL_2]))
|
125
|
-
assert_raises(ArgumentError) { wf.acl_delete(DASHBOARD, U_ACL_1) }
|
126
|
-
end
|
127
|
-
|
128
|
-
def test_acl_set
|
129
|
-
should_work(:acl_set, [DASHBOARD, [U_ACL_1, U_ACL_2], [GRP_ACL]],
|
130
|
-
'acl/set', :put, {}, acl_body(DASHBOARD,
|
131
|
-
[U_ACL_1, U_ACL_2],
|
132
|
-
[GRP_ACL]))
|
133
|
-
|
134
|
-
should_work(:acl_set, [DASHBOARD, [U_ACL_1, U_ACL_2]],
|
135
|
-
'acl/set', :put, {}, acl_body(DASHBOARD,
|
136
|
-
[U_ACL_1, U_ACL_2]))
|
137
|
-
assert_raises(ArgumentError) { wf.acl_set(DASHBOARD, U_ACL_1) }
|
138
|
-
end
|
139
|
-
|
140
|
-
def acl_body(id, view = [], modify = [])
|
141
|
-
[{ entityId: id, viewAcl: view, modifyAcl: modify }].to_json
|
142
|
-
end
|
143
95
|
end
|