flapjack-diner 1.0.0 → 1.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/.gitignore +1 -1
- data/.rubocop.yml +21 -0
- data/.rubocop_todo.yml +135 -0
- data/Gemfile +7 -0
- data/README.md +86 -20
- data/flapjack-diner.gemspec +11 -15
- data/lib/flapjack-diner.rb +23 -548
- data/lib/flapjack-diner/argument_validator.rb +31 -22
- data/lib/flapjack-diner/resources/checks.rb +58 -0
- data/lib/flapjack-diner/resources/contacts.rb +70 -0
- data/lib/flapjack-diner/resources/entities.rb +68 -0
- data/lib/flapjack-diner/resources/maintenance_periods.rb +82 -0
- data/lib/flapjack-diner/resources/media.rb +61 -0
- data/lib/flapjack-diner/resources/notification_rules.rb +66 -0
- data/lib/flapjack-diner/resources/notifications.rb +27 -0
- data/lib/flapjack-diner/resources/pagerduty_credentials.rb +60 -0
- data/lib/flapjack-diner/resources/reports.rb +33 -0
- data/lib/flapjack-diner/tools.rb +277 -0
- data/lib/flapjack-diner/version.rb +1 -1
- data/spec/argument_validator_spec.rb +15 -15
- data/spec/flapjack-diner_spec.rb +58 -1275
- data/spec/pacts/flapjack-diner-flapjack.json +4522 -0
- data/spec/resources/checks_spec.rb +171 -0
- data/spec/resources/contacts_spec.rb +297 -0
- data/spec/resources/entities_spec.rb +181 -0
- data/spec/resources/maintenance_periods_spec.rb +603 -0
- data/spec/resources/media_spec.rb +277 -0
- data/spec/resources/notification_rules_spec.rb +341 -0
- data/spec/resources/notifications_spec.rb +210 -0
- data/spec/resources/pagerduty_credentials_spec.rb +243 -0
- data/spec/resources/reports_spec.rb +255 -0
- data/spec/spec_helper.rb +14 -2
- metadata +35 -72
@@ -12,21 +12,21 @@ describe Flapjack::ArgumentValidator do
|
|
12
12
|
subject { Flapjack::ArgumentValidator.new(query) }
|
13
13
|
|
14
14
|
it 'does not raise an exception when query entity is valid' do
|
15
|
-
|
15
|
+
expect { subject.validate(:query => :entity, :as => :required) }.not_to raise_exception
|
16
16
|
end
|
17
17
|
|
18
18
|
it 'raises ArgumentError when query entity is invalid' do
|
19
19
|
query[:entity] = nil
|
20
|
-
|
20
|
+
expect { subject.validate(:query => :entity, :as => :required) }.to raise_exception
|
21
21
|
end
|
22
22
|
|
23
23
|
it 'handles arrays as query values valid' do
|
24
|
-
|
24
|
+
expect { subject.validate(:query => [:entity, :check], :as => :required) }.not_to raise_exception
|
25
25
|
end
|
26
26
|
|
27
27
|
it 'handles arrays as query values invalid' do
|
28
28
|
query[:check] = nil
|
29
|
-
|
29
|
+
expect { subject.validate(:query => [:entity, :check], :as => :required) }.to raise_exception
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
@@ -39,37 +39,37 @@ describe Flapjack::ArgumentValidator do
|
|
39
39
|
subject { Flapjack::ArgumentValidator.new(query) }
|
40
40
|
|
41
41
|
it 'does not raise an exception when query start_time is valid' do
|
42
|
-
|
42
|
+
expect { subject.validate(:query => :start_time, :as => :time) }.not_to raise_exception
|
43
43
|
end
|
44
44
|
|
45
45
|
it 'raises an exception when query start_time is invalid' do
|
46
46
|
query[:start_time] = 1234
|
47
|
-
|
47
|
+
expect { subject.validate(:query => :start_time, :as => :time) }.to raise_exception
|
48
48
|
end
|
49
49
|
|
50
50
|
it 'handles arrays as query values valid' do
|
51
51
|
query[:end_time] = Time.now
|
52
|
-
|
52
|
+
expect { subject.validate(:query => [:start_time, :end_time], :as => :time) }.not_to raise_exception
|
53
53
|
end
|
54
54
|
|
55
55
|
it 'handles arrays as query values invalid' do
|
56
56
|
query[:end_time] = 3904
|
57
|
-
|
57
|
+
expect { subject.validate(:query => [:start_time, :end_time], :as => :time) }.to raise_exception
|
58
58
|
end
|
59
59
|
|
60
60
|
it 'handles dates as query values' do
|
61
61
|
query[:end_time] = Date.today
|
62
|
-
|
62
|
+
expect { subject.validate(:query => :end_time, :as => :time) }.not_to raise_exception
|
63
63
|
end
|
64
64
|
|
65
65
|
it 'handles ISO 8601 strings as query values' do
|
66
66
|
query[:end_time] = Time.now.iso8601
|
67
|
-
|
67
|
+
expect { subject.validate(:query => :end_time, :as => :time) }.not_to raise_exception
|
68
68
|
end
|
69
69
|
|
70
70
|
it 'raises an exception when invalid time strings are provided' do
|
71
71
|
query[:end_time] = '2011-08-01T00:00'
|
72
|
-
|
72
|
+
expect { subject.validate(:query => :end_time, :as => :time) }.to raise_exception
|
73
73
|
end
|
74
74
|
end
|
75
75
|
|
@@ -82,12 +82,12 @@ describe Flapjack::ArgumentValidator do
|
|
82
82
|
subject { Flapjack::ArgumentValidator.new(query) }
|
83
83
|
|
84
84
|
it 'does not raise an exception when query duration is valid' do
|
85
|
-
|
85
|
+
expect { subject.validate(:query => :duration, :as => :integer) }.not_to raise_exception
|
86
86
|
end
|
87
87
|
|
88
88
|
it 'raises an exception when query duration is invalid' do
|
89
89
|
query[:duration] = '23'
|
90
|
-
|
90
|
+
expect { subject.validate(:query => :duration, :as => :integer) }.to raise_exception
|
91
91
|
end
|
92
92
|
end
|
93
93
|
|
@@ -100,12 +100,12 @@ describe Flapjack::ArgumentValidator do
|
|
100
100
|
subject { Flapjack::ArgumentValidator.new(query) }
|
101
101
|
|
102
102
|
it 'does not raise an exception when query start_time is valid' do
|
103
|
-
|
103
|
+
expect { subject.validate(:query => :start_time, :as => [:time, :required]) }.not_to raise_exception
|
104
104
|
end
|
105
105
|
|
106
106
|
it 'raises an exception when query start_time is invalid' do
|
107
107
|
query[:start_time] = nil
|
108
|
-
|
108
|
+
expect { subject.validate(:query => :start_time, :as => [:time, :required]) }.to raise_exception
|
109
109
|
end
|
110
110
|
end
|
111
111
|
end
|
data/spec/flapjack-diner_spec.rb
CHANGED
@@ -14,1275 +14,58 @@ describe Flapjack::Diner do
|
|
14
14
|
before(:each) do
|
15
15
|
Flapjack::Diner.base_uri(server)
|
16
16
|
Flapjack::Diner.logger = nil
|
17
|
-
Flapjack::Diner.return_keys_as_strings = true
|
18
17
|
end
|
19
18
|
|
20
19
|
after(:each) do
|
21
20
|
WebMock.reset!
|
22
21
|
end
|
23
22
|
|
24
|
-
context '
|
25
|
-
context 'create' do
|
23
|
+
context 'argument parsing' do
|
26
24
|
|
27
|
-
it "submits a POST request for a contact" do
|
28
|
-
data = [{:first_name => 'Jim',
|
29
|
-
:last_name => 'Smith',
|
30
|
-
:email => 'jims@example.com',
|
31
|
-
:timezone => 'UTC',
|
32
|
-
:tags => ['admin', 'night_shift']}]
|
33
|
-
|
34
|
-
req = stub_request(:post, "http://#{server}/contacts").
|
35
|
-
with(:body => {:contacts => data}.to_json,
|
36
|
-
:headers => {'Content-Type'=>'application/vnd.api+json'}).
|
37
|
-
to_return(:status => 201, :body => response_with_data('contacts', data))
|
38
|
-
|
39
|
-
result = Flapjack::Diner.create_contacts(data)
|
40
|
-
req.should have_been_requested
|
41
|
-
result.should_not be_nil
|
42
|
-
result.should be_true
|
43
|
-
end
|
44
|
-
|
45
|
-
it "submits a POST request for several contacts" do
|
46
|
-
data = [{:first_name => 'Jim',
|
47
|
-
:last_name => 'Smith',
|
48
|
-
:email => 'jims@example.com',
|
49
|
-
:timezone => 'UTC',
|
50
|
-
:tags => ['admin', 'night_shift']},
|
51
|
-
{:first_name => 'Joan',
|
52
|
-
:last_name => 'Smith',
|
53
|
-
:email => 'joans@example.com'}]
|
54
|
-
|
55
|
-
req = stub_request(:post, "http://#{server}/contacts").
|
56
|
-
with(:body => {:contacts => data}.to_json,
|
57
|
-
:headers => {'Content-Type'=>'application/vnd.api+json'}).
|
58
|
-
to_return(:status => 201, :body => response_with_data('contacts', data))
|
59
|
-
|
60
|
-
result = Flapjack::Diner.create_contacts(data)
|
61
|
-
req.should have_been_requested
|
62
|
-
result.should_not be_nil
|
63
|
-
result.should be_true
|
64
|
-
end
|
65
|
-
|
66
|
-
end
|
67
|
-
|
68
|
-
context 'read' do
|
69
|
-
it "submits a GET request for all contacts" do
|
70
|
-
data = [{:id => "21"}]
|
71
|
-
|
72
|
-
req = stub_request(:get, "http://#{server}/contacts").to_return(
|
73
|
-
:status => 200, :body => response_with_data('contacts', data))
|
74
|
-
|
75
|
-
result = Flapjack::Diner.contacts
|
76
|
-
req.should have_been_requested
|
77
|
-
result.should_not be_nil
|
78
|
-
result.should be_an_instance_of(Array)
|
79
|
-
result.length.should be(1)
|
80
|
-
result[0].should be_an_instance_of(Hash)
|
81
|
-
result[0].should have_key('id')
|
82
|
-
end
|
83
|
-
|
84
|
-
it "can return keys as symbols" do
|
85
|
-
Flapjack::Diner.return_keys_as_strings = false
|
86
|
-
data = [{
|
87
|
-
:id => "21",
|
88
|
-
:first_name => "Ada",
|
89
|
-
:last_name => "Lovelace",
|
90
|
-
:email => "ada@example.com",
|
91
|
-
:timezone => "Europe/London",
|
92
|
-
:tags => [ "legend", "first computer programmer" ],
|
93
|
-
:links => {
|
94
|
-
:entities => ["7", "12", "83"],
|
95
|
-
:media => ["21_email", "21_sms"],
|
96
|
-
:notification_rules => ["30fd36ae-3922-4957-ae3e-c8f6dd27e543"]
|
97
|
-
}
|
98
|
-
}]
|
99
|
-
|
100
|
-
req = stub_request(:get, "http://#{server}/contacts").to_return(
|
101
|
-
:status => 200, :body => response_with_data('contacts', data))
|
102
|
-
|
103
|
-
result = Flapjack::Diner.contacts
|
104
|
-
req.should have_been_requested
|
105
|
-
result.should_not be_nil
|
106
|
-
result.should be_an_instance_of(Array)
|
107
|
-
result.length.should be(1)
|
108
|
-
result[0].should be_an_instance_of(Hash)
|
109
|
-
result[0].should have_key(:id)
|
110
|
-
result[0].should have_key(:links)
|
111
|
-
result[0][:links].should have_key(:entities)
|
112
|
-
end
|
113
|
-
|
114
|
-
it "submits a GET request for one contact" do
|
115
|
-
req = stub_request(:get, "http://#{server}/contacts/72").to_return(
|
116
|
-
:body => response_with_data('contacts'))
|
117
|
-
|
118
|
-
result = Flapjack::Diner.contacts('72')
|
119
|
-
req.should have_been_requested
|
120
|
-
result.should_not be_nil
|
121
|
-
end
|
122
|
-
|
123
|
-
it "submits a GET request for several contacts" do
|
124
|
-
req = stub_request(:get, "http://#{server}/contacts/72,150").to_return(
|
125
|
-
:body => response_with_data('contacts'))
|
126
|
-
|
127
|
-
result = Flapjack::Diner.contacts('72', '150')
|
128
|
-
req.should have_been_requested
|
129
|
-
result.should_not be_nil
|
130
|
-
end
|
131
|
-
end
|
132
|
-
|
133
|
-
context 'update' do
|
134
|
-
|
135
|
-
it "submits a PATCH request for one contact" do
|
136
|
-
req = stub_request(:patch, "http://#{server}/contacts/23").
|
137
|
-
with(:body => [{:op => 'replace', :path => '/contacts/0/timezone', :value => 'UTC'}].to_json,
|
138
|
-
:headers => {'Content-Type'=>'application/json-patch+json'}).
|
139
|
-
to_return(:status => 204)
|
140
|
-
|
141
|
-
result = Flapjack::Diner.update_contacts(23, :timezone => 'UTC')
|
142
|
-
req.should have_been_requested
|
143
|
-
result.should_not be_nil
|
144
|
-
result.should be_true
|
145
|
-
end
|
146
|
-
|
147
|
-
it "submits a PATCH request for several contacts" do
|
148
|
-
req = stub_request(:patch, "http://#{server}/contacts/23,87").
|
149
|
-
with(:body => [{:op => 'replace', :path => '/contacts/0/timezone', :value => 'UTC'}].to_json,
|
150
|
-
:headers => {'Content-Type'=>'application/json-patch+json'}).
|
151
|
-
to_return(:status => 204)
|
152
|
-
|
153
|
-
result = Flapjack::Diner.update_contacts(23, 87, :timezone => 'UTC')
|
154
|
-
req.should have_been_requested
|
155
|
-
result.should_not be_nil
|
156
|
-
result.should be_true
|
157
|
-
end
|
158
|
-
|
159
|
-
it "submits a PATCH request to change a link for one contact" do
|
160
|
-
req = stub_request(:patch, "http://#{server}/contacts/23").
|
161
|
-
with(:body => [{:op => 'add', :path => '/contacts/0/links/entities/-', :value => '57'}].to_json,
|
162
|
-
:headers => {'Content-Type'=>'application/json-patch+json'}).
|
163
|
-
to_return(:status => 204)
|
164
|
-
|
165
|
-
result = Flapjack::Diner.update_contacts(23, :add_entity => '57')
|
166
|
-
req.should have_been_requested
|
167
|
-
result.should_not be_nil
|
168
|
-
result.should be_true
|
169
|
-
end
|
170
|
-
|
171
|
-
it "submits a PATCH request to change links for several contacts" do
|
172
|
-
req = stub_request(:patch, "http://#{server}/contacts/23,87").
|
173
|
-
with(:body => [{:op => 'add', :path => '/contacts/0/links/entities/-', :value => '57'}].to_json,
|
174
|
-
:headers => {'Content-Type'=>'application/json-patch+json'}).
|
175
|
-
to_return(:status => 204)
|
176
|
-
|
177
|
-
result = Flapjack::Diner.update_contacts(23, 87, :add_entity => '57')
|
178
|
-
req.should have_been_requested
|
179
|
-
result.should_not be_nil
|
180
|
-
result.should be_true
|
181
|
-
end
|
182
|
-
|
183
|
-
end
|
184
|
-
|
185
|
-
context 'delete' do
|
186
|
-
it "submits a DELETE request for one contact" do
|
187
|
-
req = stub_request(:delete, "http://#{server}/contacts/72").
|
188
|
-
to_return(:status => 204)
|
189
|
-
|
190
|
-
result = Flapjack::Diner.delete_contacts('72')
|
191
|
-
req.should have_been_requested
|
192
|
-
result.should_not be_nil
|
193
|
-
result.should be_true
|
194
|
-
end
|
195
|
-
|
196
|
-
it "submits a DELETE request for several contacts" do
|
197
|
-
req = stub_request(:delete, "http://#{server}/contacts/72,150").
|
198
|
-
to_return(:status => 204)
|
199
|
-
|
200
|
-
result = Flapjack::Diner.delete_contacts('72', '150')
|
201
|
-
req.should have_been_requested
|
202
|
-
result.should_not be_nil
|
203
|
-
result.should be_true
|
204
|
-
end
|
205
|
-
end
|
206
25
|
end
|
207
26
|
|
208
|
-
context '
|
209
|
-
context 'create' do
|
210
|
-
|
211
|
-
it "submits a POST request for a medium" do
|
212
|
-
data = [{
|
213
|
-
:type => 'sms',
|
214
|
-
:address => '0123456789',
|
215
|
-
:interval => 300,
|
216
|
-
:rollup_threshold => 5
|
217
|
-
}]
|
218
|
-
|
219
|
-
req = stub_request(:post, "http://#{server}/contacts/1/media").
|
220
|
-
with(:body => {:media => data}.to_json,
|
221
|
-
:headers => {'Content-Type'=>'application/vnd.api+json'}).
|
222
|
-
to_return(:status => 201, :body => response_with_data('media', data))
|
223
|
-
|
224
|
-
result = Flapjack::Diner.create_contact_media(1, data)
|
225
|
-
req.should have_been_requested
|
226
|
-
result.should_not be_nil
|
227
|
-
result.should be_true
|
228
|
-
end
|
229
|
-
|
230
|
-
it "submits a POST request for several media" do
|
231
|
-
data = [{
|
232
|
-
:type => 'sms',
|
233
|
-
:address => '0123456789',
|
234
|
-
:interval => 300,
|
235
|
-
:rollup_threshold => 5
|
236
|
-
}, {
|
237
|
-
:type => 'email',
|
238
|
-
:address => 'ablated@example.org',
|
239
|
-
:interval => 180,
|
240
|
-
:rollup_threshold => 3
|
241
|
-
}]
|
242
|
-
|
243
|
-
req = stub_request(:post, "http://#{server}/contacts/1/media").
|
244
|
-
with(:body => {:media => data}.to_json,
|
245
|
-
:headers => {'Content-Type'=>'application/vnd.api+json'}).
|
246
|
-
to_return(:status => 201, :body => response_with_data('media', data))
|
247
|
-
|
248
|
-
result = Flapjack::Diner.create_contact_media(1, data)
|
249
|
-
req.should have_been_requested
|
250
|
-
result.should_not be_nil
|
251
|
-
result.should be_true
|
252
|
-
end
|
253
|
-
|
254
|
-
end
|
255
|
-
|
256
|
-
context 'read' do
|
257
|
-
it "submits a GET request for all media" do
|
258
|
-
req = stub_request(:get, "http://#{server}/media").
|
259
|
-
to_return(:body => response_with_data('media'))
|
260
|
-
|
261
|
-
result = Flapjack::Diner.media
|
262
|
-
req.should have_been_requested
|
263
|
-
result.should_not be_nil
|
264
|
-
end
|
265
|
-
|
266
|
-
it "submits a GET request for one medium" do
|
267
|
-
req = stub_request(:get, "http://#{server}/media/72_sms").
|
268
|
-
to_return(:body => response_with_data('media'))
|
269
|
-
|
270
|
-
result = Flapjack::Diner.media('72_sms')
|
271
|
-
req.should have_been_requested
|
272
|
-
result.should_not be_nil
|
273
|
-
end
|
274
|
-
|
275
|
-
it "submits a GET request for several media" do
|
276
|
-
req = stub_request(:get, "http://#{server}/media/72_sms,150_email").
|
277
|
-
to_return(:body => response_with_data('media'))
|
278
|
-
|
279
|
-
result = Flapjack::Diner.media('72_sms', '150_email')
|
280
|
-
req.should have_been_requested
|
281
|
-
result.should_not be_nil
|
282
|
-
end
|
283
|
-
end
|
284
|
-
|
285
|
-
context 'update' do
|
286
|
-
|
287
|
-
it "submits a PATCH request for one medium" do
|
288
|
-
req = stub_request(:patch, "http://#{server}/media/23_email").
|
289
|
-
with(:body => [{:op => 'replace', :path => '/media/0/interval', :value => 50},
|
290
|
-
{:op => 'replace', :path => '/media/0/rollup_threshold', :value => 3}].to_json,
|
291
|
-
:headers => {'Content-Type'=>'application/json-patch+json'}).
|
292
|
-
to_return(:status => 204)
|
293
|
-
|
294
|
-
result = Flapjack::Diner.update_media('23_email', :interval => 50, :rollup_threshold => 3)
|
295
|
-
req.should have_been_requested
|
296
|
-
result.should_not be_nil
|
297
|
-
result.should be_true
|
298
|
-
end
|
299
|
-
|
300
|
-
it "submits a PATCH request for several media" do
|
301
|
-
req = stub_request(:patch, "http://#{server}/media/23_email,87_sms").
|
302
|
-
with(:body => [{:op => 'replace', :path => '/media/0/interval', :value => 50},
|
303
|
-
{:op => 'replace', :path => '/media/0/rollup_threshold', :value => 3}].to_json,
|
304
|
-
:headers => {'Content-Type'=>'application/json-patch+json'}).
|
305
|
-
to_return(:status => 204)
|
306
|
-
|
307
|
-
result = Flapjack::Diner.update_media('23_email', '87_sms', :interval => 50, :rollup_threshold => 3)
|
308
|
-
req.should have_been_requested
|
309
|
-
result.should_not be_nil
|
310
|
-
result.should be_true
|
311
|
-
end
|
312
|
-
|
313
|
-
end
|
314
|
-
|
315
|
-
context 'delete' do
|
316
|
-
it "submits a DELETE request for one medium" do
|
317
|
-
req = stub_request(:delete, "http://#{server}/media/72_sms").
|
318
|
-
to_return(:status => 204)
|
319
|
-
|
320
|
-
result = Flapjack::Diner.delete_media('72_sms')
|
321
|
-
req.should have_been_requested
|
322
|
-
result.should_not be_nil
|
323
|
-
result.should be_true
|
324
|
-
end
|
325
|
-
|
326
|
-
it "submits a DELETE request for several media" do
|
327
|
-
req = stub_request(:delete, "http://#{server}/media/72_sms,150_email").
|
328
|
-
to_return(:status => 204)
|
329
|
-
|
330
|
-
result = Flapjack::Diner.delete_media('72_sms', '150_email')
|
331
|
-
req.should have_been_requested
|
332
|
-
result.should_not be_nil
|
333
|
-
result.should be_true
|
334
|
-
end
|
335
|
-
end
|
336
|
-
end
|
337
|
-
|
338
|
-
context 'pagerduty credentials' do
|
339
|
-
context 'create' do
|
340
|
-
|
341
|
-
it "submits a POST request for pagerduty credentials" do
|
342
|
-
data = [{:service_key => 'abc',
|
343
|
-
:subdomain => 'def',
|
344
|
-
:username => 'ghi',
|
345
|
-
:password => 'jkl',
|
346
|
-
}]
|
347
|
-
|
348
|
-
req = stub_request(:post, "http://#{server}/contacts/1/pagerduty_credentials").
|
349
|
-
with(:body => {:pagerduty_credentials => data}.to_json,
|
350
|
-
:headers => {'Content-Type'=>'application/vnd.api+json'}).
|
351
|
-
to_return(:status => 201, :body => response_with_data('pagerduty_credentials', data))
|
352
|
-
|
353
|
-
result = Flapjack::Diner.create_contact_pagerduty_credentials(1, data)
|
354
|
-
req.should have_been_requested
|
355
|
-
result.should_not be_nil
|
356
|
-
result.should be_true
|
357
|
-
end
|
358
|
-
|
359
|
-
end
|
360
|
-
|
361
|
-
context 'read' do
|
362
|
-
it "submits a GET request for all pagerduty credentials" do
|
363
|
-
req = stub_request(:get, "http://#{server}/pagerduty_credentials").
|
364
|
-
to_return(:body => response_with_data('pagerduty_credentials'))
|
365
|
-
|
366
|
-
result = Flapjack::Diner.pagerduty_credentials
|
367
|
-
req.should have_been_requested
|
368
|
-
result.should_not be_nil
|
369
|
-
end
|
370
|
-
|
371
|
-
it "submits a GET request for one set of pagerduty credentials" do
|
372
|
-
req = stub_request(:get, "http://#{server}/pagerduty_credentials/72").
|
373
|
-
to_return(:body => response_with_data('pagerduty_credentials'))
|
374
|
-
|
375
|
-
result = Flapjack::Diner.pagerduty_credentials('72')
|
376
|
-
req.should have_been_requested
|
377
|
-
result.should_not be_nil
|
378
|
-
end
|
379
|
-
|
380
|
-
it "submits a GET request for several sets of pagerduty credentials" do
|
381
|
-
req = stub_request(:get, "http://#{server}/pagerduty_credentials/72,150").
|
382
|
-
to_return(:body => response_with_data('pagerduty_credentials'))
|
383
|
-
|
384
|
-
result = Flapjack::Diner.pagerduty_credentials('72', '150')
|
385
|
-
req.should have_been_requested
|
386
|
-
result.should_not be_nil
|
387
|
-
end
|
388
|
-
end
|
389
|
-
|
390
|
-
context 'update' do
|
391
|
-
|
392
|
-
it "submits a PATCH request for one set of pagerduty credentials" do
|
393
|
-
req = stub_request(:patch, "http://#{server}/pagerduty_credentials/23").
|
394
|
-
with(:body => [{:op => 'replace', :path => '/pagerduty_credentials/0/password', :value => 'lmno'}].to_json,
|
395
|
-
:headers => {'Content-Type'=>'application/json-patch+json'}).
|
396
|
-
to_return(:status => 204)
|
397
|
-
|
398
|
-
result = Flapjack::Diner.update_pagerduty_credentials('23', :password => 'lmno')
|
399
|
-
req.should have_been_requested
|
400
|
-
result.should_not be_nil
|
401
|
-
result.should be_true
|
402
|
-
end
|
403
|
-
|
404
|
-
it "submits a PATCH request for several sets of pagerduty credentials" do
|
405
|
-
req = stub_request(:patch, "http://#{server}/pagerduty_credentials/23,87").
|
406
|
-
with(:body => [{:op => 'replace', :path => '/pagerduty_credentials/0/username', :value => 'hijk'},
|
407
|
-
{:op => 'replace', :path => '/pagerduty_credentials/0/password', :value => 'lmno'}].to_json,
|
408
|
-
:headers => {'Content-Type'=>'application/json-patch+json'}).
|
409
|
-
to_return(:status => 204)
|
410
|
-
|
411
|
-
result = Flapjack::Diner.update_pagerduty_credentials('23', '87', :username => 'hijk', :password => 'lmno')
|
412
|
-
req.should have_been_requested
|
413
|
-
result.should_not be_nil
|
414
|
-
result.should be_true
|
415
|
-
end
|
416
|
-
|
417
|
-
end
|
418
|
-
|
419
|
-
context 'delete' do
|
420
|
-
it "submits a DELETE request for one set of pagerduty credentials" do
|
421
|
-
req = stub_request(:delete, "http://#{server}/pagerduty_credentials/72").
|
422
|
-
to_return(:status => 204)
|
423
|
-
|
424
|
-
result = Flapjack::Diner.delete_pagerduty_credentials('72')
|
425
|
-
req.should have_been_requested
|
426
|
-
result.should_not be_nil
|
427
|
-
result.should be_true
|
428
|
-
end
|
429
|
-
|
430
|
-
it "submits a DELETE request for several media" do
|
431
|
-
req = stub_request(:delete, "http://#{server}/pagerduty_credentials/72,150").
|
432
|
-
to_return(:status => 204)
|
433
|
-
|
434
|
-
result = Flapjack::Diner.delete_pagerduty_credentials('72', '150')
|
435
|
-
req.should have_been_requested
|
436
|
-
result.should_not be_nil
|
437
|
-
result.should be_true
|
438
|
-
end
|
439
|
-
end
|
440
|
-
end
|
441
|
-
|
442
|
-
context 'notification rules' do
|
443
|
-
|
444
|
-
context 'create' do
|
445
|
-
|
446
|
-
it "submits a POST request for a notification rule" do
|
447
|
-
data = [{
|
448
|
-
"entity_tags" => ["database","physical"],
|
449
|
-
"entities" => ["foo-app-01.example.com"],
|
450
|
-
"time_restrictions" => nil,
|
451
|
-
"warning_media" => ["email"],
|
452
|
-
"critical_media" => ["sms", "email"],
|
453
|
-
"warning_blackhole" => false,
|
454
|
-
"critical_blackhole" => false
|
455
|
-
}]
|
456
|
-
|
457
|
-
req = stub_request(:post, "http://#{server}/contacts/1/notification_rules").
|
458
|
-
with(:body => {:notification_rules => data}.to_json,
|
459
|
-
:headers => {'Content-Type'=>'application/vnd.api+json'}).
|
460
|
-
to_return(:status => 201, :body => response_with_data('notification_rules', data))
|
461
|
-
|
462
|
-
|
463
|
-
result = Flapjack::Diner.create_contact_notification_rules(1, data)
|
464
|
-
req.should have_been_requested
|
465
|
-
result.should_not be_nil
|
466
|
-
result.should be_true
|
467
|
-
end
|
468
|
-
|
469
|
-
it "submits a POST request for several notification rules" do
|
470
|
-
data = [{
|
471
|
-
"entity_tags" => ["database","physical"],
|
472
|
-
"entities" => ["foo-app-01.example.com"],
|
473
|
-
"time_restrictions" => nil,
|
474
|
-
"warning_media" => ["email"],
|
475
|
-
"critical_media" => ["sms", "email"],
|
476
|
-
"warning_blackhole" => false,
|
477
|
-
"critical_blackhole" => false
|
478
|
-
}, {
|
479
|
-
"entity_tags" => nil,
|
480
|
-
"entities" => ["foo-app-02.example.com"],
|
481
|
-
"time_restrictions" => nil,
|
482
|
-
"warning_media" => ["email"],
|
483
|
-
"critical_media" => ["sms", "email"],
|
484
|
-
"warning_blackhole" => true,
|
485
|
-
"critical_blackhole" => false
|
486
|
-
}]
|
487
|
-
|
488
|
-
req = stub_request(:post, "http://#{server}/contacts/1/notification_rules").
|
489
|
-
with(:body => {:notification_rules => data}.to_json,
|
490
|
-
:headers => {'Content-Type'=>'application/vnd.api+json'}).
|
491
|
-
to_return(:status => 201, :body => response_with_data('notification_rules', data))
|
492
|
-
|
493
|
-
result = Flapjack::Diner.create_contact_notification_rules(1, data)
|
494
|
-
req.should have_been_requested
|
495
|
-
result.should_not be_nil
|
496
|
-
result.should be_true
|
497
|
-
end
|
498
|
-
|
499
|
-
end
|
500
|
-
|
501
|
-
context 'read' do
|
502
|
-
it "submits a GET request for all notification rules" do
|
503
|
-
req = stub_request(:get, "http://#{server}/notification_rules").
|
504
|
-
to_return(:body => response_with_data('notification_rules'))
|
505
|
-
|
506
|
-
result = Flapjack::Diner.notification_rules
|
507
|
-
req.should have_been_requested
|
508
|
-
result.should_not be_nil
|
509
|
-
end
|
510
|
-
|
511
|
-
it "submits a GET request for one notification rule" do
|
512
|
-
req = stub_request(:get, "http://#{server}/notification_rules/30fd36ae-3922-4957-ae3e-c8f6dd27e543").
|
513
|
-
to_return(:body => response_with_data('notification_rules'))
|
514
|
-
|
515
|
-
result = Flapjack::Diner.notification_rules('30fd36ae-3922-4957-ae3e-c8f6dd27e543')
|
516
|
-
req.should have_been_requested
|
517
|
-
result.should_not be_nil
|
518
|
-
end
|
519
|
-
|
520
|
-
it "submits a GET request for several media" do
|
521
|
-
req = stub_request(:get, "http://#{server}/notification_rules/30fd36ae-3922-4957-ae3e-c8f6dd27e543,bfd8be61-3d80-4b95-94df-6e77183ce4e3").
|
522
|
-
to_return(:body => response_with_data('notification_rules'))
|
523
|
-
|
524
|
-
result = Flapjack::Diner.notification_rules('30fd36ae-3922-4957-ae3e-c8f6dd27e543', 'bfd8be61-3d80-4b95-94df-6e77183ce4e3')
|
525
|
-
req.should have_been_requested
|
526
|
-
result.should_not be_nil
|
527
|
-
end
|
528
|
-
end
|
529
|
-
|
530
|
-
context 'update' do
|
531
|
-
|
532
|
-
it "submits a PATCH request for one notification rule" do
|
533
|
-
req = stub_request(:patch, "http://#{server}/notification_rules/30fd36ae-3922-4957-ae3e-c8f6dd27e543").
|
534
|
-
with(:body => [{:op => 'replace', :path => '/notification_rules/0/warning_blackhole', :value => false}].to_json,
|
535
|
-
:headers => {'Content-Type'=>'application/json-patch+json'}).
|
536
|
-
to_return(:status => 204)
|
537
|
-
|
538
|
-
result = Flapjack::Diner.update_notification_rules('30fd36ae-3922-4957-ae3e-c8f6dd27e543', :warning_blackhole => false)
|
539
|
-
req.should have_been_requested
|
540
|
-
result.should_not be_nil
|
541
|
-
result.should be_true
|
542
|
-
end
|
543
|
-
|
544
|
-
it "submits a PATCH request for several notification rules" do
|
545
|
-
req = stub_request(:patch, "http://#{server}/notification_rules/30fd36ae-3922-4957-ae3e-c8f6dd27e543,bfd8be61-3d80-4b95-94df-6e77183ce4e3").
|
546
|
-
with(:body => [{:op => 'replace', :path => '/notification_rules/0/warning_blackhole', :value => false}].to_json,
|
547
|
-
:headers => {'Content-Type'=>'application/json-patch+json'}).
|
548
|
-
to_return(:status => 204)
|
549
|
-
|
550
|
-
result = Flapjack::Diner.update_notification_rules('30fd36ae-3922-4957-ae3e-c8f6dd27e543',
|
551
|
-
'bfd8be61-3d80-4b95-94df-6e77183ce4e3', :warning_blackhole => false)
|
552
|
-
req.should have_been_requested
|
553
|
-
result.should_not be_nil
|
554
|
-
result.should be_true
|
555
|
-
end
|
556
|
-
|
557
|
-
end
|
558
|
-
|
559
|
-
context 'delete' do
|
560
|
-
it "submits a DELETE request for a notification rule" do
|
561
|
-
req = stub_request(:delete, "http://#{server}/notification_rules/30fd36ae-3922-4957-ae3e-c8f6dd27e543").
|
562
|
-
to_return(:status => 204)
|
563
|
-
|
564
|
-
result = Flapjack::Diner.delete_notification_rules('30fd36ae-3922-4957-ae3e-c8f6dd27e543')
|
565
|
-
req.should have_been_requested
|
566
|
-
result.should_not be_nil
|
567
|
-
result.should be_true
|
568
|
-
end
|
569
|
-
|
570
|
-
it "submits a DELETE request for several notification rules" do
|
571
|
-
req = stub_request(:delete, "http://#{server}/notification_rules/30fd36ae-3922-4957-ae3e-c8f6dd27e543,bfd8be61-3d80-4b95-94df-6e77183ce4e3").
|
572
|
-
to_return(:status => 204)
|
573
|
-
|
574
|
-
result = Flapjack::Diner.delete_notification_rules('30fd36ae-3922-4957-ae3e-c8f6dd27e543', 'bfd8be61-3d80-4b95-94df-6e77183ce4e3')
|
575
|
-
req.should have_been_requested
|
576
|
-
result.should_not be_nil
|
577
|
-
result.should be_true
|
578
|
-
end
|
579
|
-
end
|
580
|
-
end
|
581
|
-
|
582
|
-
context 'entities' do
|
583
|
-
|
584
|
-
context 'create' do
|
585
|
-
|
586
|
-
it "submits a POST request for an entity" do
|
587
|
-
data = [{
|
588
|
-
:name => 'example.org',
|
589
|
-
:id => '57_example'
|
590
|
-
}]
|
591
|
-
|
592
|
-
req = stub_request(:post, "http://#{server}/entities").
|
593
|
-
with(:body => {:entities => data}.to_json,
|
594
|
-
:headers => {'Content-Type'=>'application/vnd.api+json'}).
|
595
|
-
to_return(:status => 201, :body => response_with_data('entities', data))
|
596
|
-
|
597
|
-
result = Flapjack::Diner.create_entities(data)
|
598
|
-
req.should have_been_requested
|
599
|
-
result.should_not be_nil
|
600
|
-
result.should be_true
|
601
|
-
end
|
602
|
-
|
603
|
-
it "submits a POST request for several entities" do
|
604
|
-
data = [{
|
605
|
-
:name => 'example.org',
|
606
|
-
:id => '57_example'
|
607
|
-
}, {
|
608
|
-
:name => 'example2.org',
|
609
|
-
:id => '58'
|
610
|
-
}]
|
611
|
-
|
612
|
-
req = stub_request(:post, "http://#{server}/entities").
|
613
|
-
with(:body => {:entities => data}.to_json,
|
614
|
-
:headers => {'Content-Type'=>'application/vnd.api+json'}).
|
615
|
-
to_return(:status => 201, :body => response_with_data('entities', data))
|
616
|
-
|
617
|
-
result = Flapjack::Diner.create_entities(data)
|
618
|
-
req.should have_been_requested
|
619
|
-
result.should_not be_nil
|
620
|
-
result.should be_true
|
621
|
-
end
|
622
|
-
|
623
|
-
context 'scheduled maintenance periods' do
|
624
|
-
|
625
|
-
it "submits a POST request on an entity" do
|
626
|
-
data = [{:start_time => time.iso8601, :duration => 3600, :summary => 'working'}]
|
627
|
-
req = stub_request(:post, "http://#{server}/scheduled_maintenances/entities/72").
|
628
|
-
with(:body => {:scheduled_maintenances => data}.to_json,
|
629
|
-
:headers => {'Content-Type'=>'application/vnd.api+json'}).
|
630
|
-
to_return(:status => 204)
|
631
|
-
|
632
|
-
result = Flapjack::Diner.create_scheduled_maintenances_entities(72, data)
|
633
|
-
req.should have_been_requested
|
634
|
-
result.should_not be_nil
|
635
|
-
result.should be_true
|
636
|
-
end
|
637
|
-
|
638
|
-
it "submits a POST request on several entities" do
|
639
|
-
data = [{:start_time => time.iso8601, :duration => 3600, :summary => 'working'}]
|
640
|
-
req = stub_request(:post, "http://#{server}/scheduled_maintenances/entities/72,150").
|
641
|
-
with(:body => {:scheduled_maintenances => data}.to_json,
|
642
|
-
:headers => {'Content-Type'=>'application/vnd.api+json'}).
|
643
|
-
to_return(:status => 204)
|
644
|
-
|
645
|
-
result = Flapjack::Diner.create_scheduled_maintenances_entities(72, 150, data)
|
646
|
-
req.should have_been_requested
|
647
|
-
result.should_not be_nil
|
648
|
-
result.should be_true
|
649
|
-
end
|
650
|
-
|
651
|
-
it "submits a POST request for multiple periods on an entity" do
|
652
|
-
data = [{:start_time => time.iso8601, :duration => 3600, :summary => 'working'},
|
653
|
-
{:start_time => (time + 7200).iso8601, :duration => 3600, :summary => 'more work'}]
|
654
|
-
req = stub_request(:post, "http://#{server}/scheduled_maintenances/entities/72").
|
655
|
-
with(:body => {:scheduled_maintenances => data}.to_json,
|
656
|
-
:headers => {'Content-Type'=>'application/vnd.api+json'}).
|
657
|
-
to_return(:status => 204)
|
658
|
-
|
659
|
-
result = Flapjack::Diner.create_scheduled_maintenances_entities(72, data)
|
660
|
-
req.should have_been_requested
|
661
|
-
result.should_not be_nil
|
662
|
-
result.should be_true
|
663
|
-
end
|
664
|
-
|
665
|
-
it "submits a POST request for multiple periods on several entities" do
|
666
|
-
data = [{:start_time => time.iso8601, :duration => 3600, :summary => 'working'},
|
667
|
-
{:start_time => (time + 7200).iso8601, :duration => 3600, :summary => 'more work'}]
|
668
|
-
req = stub_request(:post, "http://#{server}/scheduled_maintenances/entities/72,150").
|
669
|
-
with(:body => {:scheduled_maintenances => data}.to_json,
|
670
|
-
:headers => {'Content-Type'=>'application/vnd.api+json'}).
|
671
|
-
to_return(:status => 204)
|
672
|
-
|
673
|
-
result = Flapjack::Diner.create_scheduled_maintenances_entities(72, 150, data)
|
674
|
-
req.should have_been_requested
|
675
|
-
result.should_not be_nil
|
676
|
-
result.should be_true
|
677
|
-
end
|
678
|
-
|
679
|
-
end
|
680
|
-
|
681
|
-
context 'unscheduled maintenance periods' do
|
682
|
-
|
683
|
-
it "submits a POST request on an entity" do
|
684
|
-
data = [{:duration => 3600, :summary => 'working'}]
|
685
|
-
req = stub_request(:post, "http://#{server}/unscheduled_maintenances/entities/72").
|
686
|
-
with(:body => {:unscheduled_maintenances => data}.to_json,
|
687
|
-
:headers => {'Content-Type'=>'application/vnd.api+json'}).
|
688
|
-
to_return(:status => 204)
|
689
|
-
|
690
|
-
result = Flapjack::Diner.create_unscheduled_maintenances_entities(72, data)
|
691
|
-
req.should have_been_requested
|
692
|
-
result.should_not be_nil
|
693
|
-
result.should be_true
|
694
|
-
end
|
695
|
-
|
696
|
-
it "submits a POST request on several entities" do
|
697
|
-
data = [{:duration => 3600, :summary => 'working'}]
|
698
|
-
req = stub_request(:post, "http://#{server}/unscheduled_maintenances/entities/72,150").
|
699
|
-
with(:body => {:unscheduled_maintenances => data}.to_json,
|
700
|
-
:headers => {'Content-Type'=>'application/vnd.api+json'}).
|
701
|
-
to_return(:status => 204)
|
702
|
-
|
703
|
-
result = Flapjack::Diner.create_unscheduled_maintenances_entities(72, 150, data)
|
704
|
-
req.should have_been_requested
|
705
|
-
result.should_not be_nil
|
706
|
-
result.should be_true
|
707
|
-
end
|
708
|
-
|
709
|
-
it "submits a POST request for multiple periods on several entities" do
|
710
|
-
data = [{:duration => 3600, :summary => 'working'},
|
711
|
-
{:duration => 3600, :summary => 'more work'}]
|
712
|
-
req = stub_request(:post, "http://#{server}/unscheduled_maintenances/entities/72,150").
|
713
|
-
with(:body => {:unscheduled_maintenances => data}.to_json,
|
714
|
-
:headers => {'Content-Type'=>'application/vnd.api+json'}).
|
715
|
-
to_return(:status => 204)
|
716
|
-
|
717
|
-
result = Flapjack::Diner.create_unscheduled_maintenances_entities(72, 150, data)
|
718
|
-
req.should have_been_requested
|
719
|
-
result.should_not be_nil
|
720
|
-
result.should be_true
|
721
|
-
end
|
722
|
-
|
723
|
-
end
|
724
|
-
|
725
|
-
context 'test notifications' do
|
726
|
-
|
727
|
-
it "submits a POST request for an entity" do
|
728
|
-
req = stub_request(:post, "http://#{server}/test_notifications/entities/72").
|
729
|
-
with(:body => {:test_notifications => [{:summary => 'testing'}]}.to_json,
|
730
|
-
:headers => {'Content-Type'=>'application/vnd.api+json'}).
|
731
|
-
to_return(:status => 204)
|
732
|
-
|
733
|
-
result = Flapjack::Diner.create_test_notifications_entities(72, [:summary => 'testing'])
|
734
|
-
req.should have_been_requested
|
735
|
-
result.should_not be_nil
|
736
|
-
result.should be_true
|
737
|
-
end
|
738
|
-
|
739
|
-
it "submits a POST request for several entities" do
|
740
|
-
req = stub_request(:post, "http://#{server}/test_notifications/entities/72,150").
|
741
|
-
with(:body => {:test_notifications => [{:summary => 'testing'}]}.to_json,
|
742
|
-
:headers => {'Content-Type'=>'application/vnd.api+json'}).
|
743
|
-
to_return(:status => 204)
|
744
|
-
|
745
|
-
result = Flapjack::Diner.create_test_notifications_entities(72, 150, [:summary => 'testing'])
|
746
|
-
req.should have_been_requested
|
747
|
-
result.should_not be_nil
|
748
|
-
result.should be_true
|
749
|
-
end
|
750
|
-
|
751
|
-
it "submits a POST request for multiple notifications on an entity" do
|
752
|
-
data = [{:summary => 'testing'}, {:summary => 'another test'}]
|
753
|
-
req = stub_request(:post, "http://#{server}/test_notifications/entities/72").
|
754
|
-
with(:body => {:test_notifications => data}.to_json,
|
755
|
-
:headers => {'Content-Type'=>'application/vnd.api+json'}).
|
756
|
-
to_return(:status => 204)
|
757
|
-
|
758
|
-
result = Flapjack::Diner.create_test_notifications_entities(72, data)
|
759
|
-
req.should have_been_requested
|
760
|
-
result.should_not be_nil
|
761
|
-
result.should be_true
|
762
|
-
end
|
763
|
-
|
764
|
-
it "submits a POST request for multiple notifications on several entities" do
|
765
|
-
data = [{:summary => 'testing'}, {:summary => 'another test'}]
|
766
|
-
req = stub_request(:post, "http://#{server}/test_notifications/entities/72,150").
|
767
|
-
with(:body => {:test_notifications => data}.to_json,
|
768
|
-
:headers => {'Content-Type'=>'application/vnd.api+json'}).
|
769
|
-
to_return(:status => 204)
|
770
|
-
|
771
|
-
result = Flapjack::Diner.create_test_notifications_entities(72, 150, data)
|
772
|
-
req.should have_been_requested
|
773
|
-
result.should_not be_nil
|
774
|
-
result.should be_true
|
775
|
-
end
|
776
|
-
|
777
|
-
end
|
778
|
-
|
779
|
-
end
|
780
|
-
|
781
|
-
context 'read' do
|
782
|
-
it "submits a GET request for all entities" do
|
783
|
-
req = stub_request(:get, "http://#{server}/entities").
|
784
|
-
to_return(:body => response_with_data('entities'))
|
785
|
-
|
786
|
-
result = Flapjack::Diner.entities
|
787
|
-
req.should have_been_requested
|
788
|
-
result.should_not be_nil
|
789
|
-
end
|
790
|
-
|
791
|
-
it "submits a GET request for one entity" do
|
792
|
-
req = stub_request(:get, "http://#{server}/entities/72").
|
793
|
-
to_return(:body => response_with_data('entities'))
|
794
|
-
|
795
|
-
result = Flapjack::Diner.entities('72')
|
796
|
-
req.should have_been_requested
|
797
|
-
result.should_not be_nil
|
798
|
-
end
|
799
|
-
|
800
|
-
it "submits a GET request for several entities" do
|
801
|
-
req = stub_request(:get, "http://#{server}/entities/72,150").
|
802
|
-
to_return(:body => response_with_data('entities'))
|
803
|
-
|
804
|
-
result = Flapjack::Diner.entities('72', '150')
|
805
|
-
req.should have_been_requested
|
806
|
-
result.should_not be_nil
|
807
|
-
end
|
808
|
-
end
|
809
|
-
|
810
|
-
context 'update' do
|
811
|
-
|
812
|
-
it "submits a PATCH request for an entity" do
|
813
|
-
req = stub_request(:patch, "http://#{server}/entities/57").
|
814
|
-
with(:body => [{:op => 'replace', :path => '/entities/0/name', :value => 'example3.com'}].to_json,
|
815
|
-
:headers => {'Content-Type'=>'application/json-patch+json'}).
|
816
|
-
to_return(:status => 204)
|
817
|
-
|
818
|
-
result = Flapjack::Diner.update_entities('57', :name => 'example3.com')
|
819
|
-
req.should have_been_requested
|
820
|
-
result.should_not be_nil
|
821
|
-
result.should be_true
|
822
|
-
end
|
823
|
-
|
824
|
-
it "submits a PATCH request for unscheduled maintenances on an entity" do
|
825
|
-
req = stub_request(:patch, "http://#{server}/unscheduled_maintenances/entities/72").
|
826
|
-
with(:body => [{:op => 'replace', :path => '/unscheduled_maintenances/0/end_time', :value => time.iso8601}].to_json,
|
827
|
-
:headers => {'Content-Type'=>'application/json-patch+json'}).
|
828
|
-
to_return(:status => 204)
|
829
|
-
|
830
|
-
result = Flapjack::Diner.update_unscheduled_maintenances_entities('72', :end_time => time)
|
831
|
-
req.should have_been_requested
|
832
|
-
result.should_not be_nil
|
833
|
-
result.should be_true
|
834
|
-
end
|
835
|
-
|
836
|
-
it "submits a PATCH request for unscheduled maintenances on several entities" do
|
837
|
-
req = stub_request(:patch, "http://#{server}/unscheduled_maintenances/entities/72,150").
|
838
|
-
with(:body => [{:op => 'replace', :path => '/unscheduled_maintenances/0/end_time', :value => time.iso8601}].to_json,
|
839
|
-
:headers => {'Content-Type'=>'application/json-patch+json'}).
|
840
|
-
to_return(:status => 204)
|
841
|
-
|
842
|
-
result = Flapjack::Diner.update_unscheduled_maintenances_entities('72', '150', :end_time => time)
|
843
|
-
req.should have_been_requested
|
844
|
-
result.should_not be_nil
|
845
|
-
result.should be_true
|
846
|
-
end
|
847
|
-
|
848
|
-
end
|
849
|
-
|
850
|
-
context 'delete' do
|
851
|
-
|
852
|
-
it "submits a DELETE request for scheduled maintenances on an entity" do
|
853
|
-
req = stub_request(:delete, "http://#{server}/scheduled_maintenances/entities/72").
|
854
|
-
with(:query => {:start_time => time.iso8601}).
|
855
|
-
to_return(:status => 204)
|
856
|
-
|
857
|
-
result = Flapjack::Diner.delete_scheduled_maintenances_entities('72', :start_time => time.iso8601)
|
858
|
-
req.should have_been_requested
|
859
|
-
result.should_not be_nil
|
860
|
-
result.should be_true
|
861
|
-
end
|
862
|
-
|
863
|
-
it "submits a DELETE request for scheduled maintenances on several entities" do
|
864
|
-
req = stub_request(:delete, "http://#{server}/scheduled_maintenances/entities/72,150").
|
865
|
-
with(:query => {:start_time => time.iso8601}).
|
866
|
-
to_return(:status => 204)
|
867
|
-
|
868
|
-
result = Flapjack::Diner.delete_scheduled_maintenances_entities('72', '150', :start_time => time.iso8601)
|
869
|
-
req.should have_been_requested
|
870
|
-
result.should_not be_nil
|
871
|
-
result.should be_true
|
872
|
-
end
|
873
|
-
|
874
|
-
end
|
875
|
-
|
876
|
-
end
|
877
|
-
|
878
|
-
context 'checks' do
|
879
|
-
context 'create' do
|
880
|
-
|
881
|
-
context 'scheduled maintenance periods' do
|
882
|
-
|
883
|
-
it "submits a POST request on a check" do
|
884
|
-
data = [{:start_time => time.iso8601, :duration => 3600, :summary => 'working'}]
|
885
|
-
req = stub_request(:post, "http://#{server}/scheduled_maintenances/checks/example.com%3ASSH").
|
886
|
-
with(:body => {:scheduled_maintenances => data}.to_json,
|
887
|
-
:headers => {'Content-Type'=>'application/vnd.api+json'}).
|
888
|
-
to_return(:status => 204)
|
889
|
-
|
890
|
-
result = Flapjack::Diner.create_scheduled_maintenances_checks('example.com:SSH', data)
|
891
|
-
req.should have_been_requested
|
892
|
-
result.should_not be_nil
|
893
|
-
result.should be_true
|
894
|
-
end
|
895
|
-
|
896
|
-
it "submits a POST request on several checks" do
|
897
|
-
data = [{:start_time => time.iso8601, :duration => 3600, :summary => 'working'}]
|
898
|
-
req = stub_request(:post, "http://#{server}/scheduled_maintenances/checks/example.com%3ASSH,example2.com%3APING").
|
899
|
-
with(:body => {:scheduled_maintenances => data}.to_json,
|
900
|
-
:headers => {'Content-Type'=>'application/vnd.api+json'}).
|
901
|
-
to_return(:status => 204)
|
902
|
-
|
903
|
-
result = Flapjack::Diner.create_scheduled_maintenances_checks('example.com:SSH', 'example2.com:PING', data)
|
904
|
-
req.should have_been_requested
|
905
|
-
result.should_not be_nil
|
906
|
-
result.should be_true
|
907
|
-
end
|
908
|
-
|
909
|
-
it "submits a POST request for multiple periods on a check" do
|
910
|
-
data = [{:start_time => time.iso8601, :duration => 3600, :summary => 'working'},
|
911
|
-
{:start_time => (time + 7200).iso8601, :duration => 3600, :summary => 'more work'}]
|
912
|
-
req = stub_request(:post, "http://#{server}/scheduled_maintenances/checks/example.com%3ASSH").
|
913
|
-
with(:body => {:scheduled_maintenances => data}.to_json,
|
914
|
-
:headers => {'Content-Type'=>'application/vnd.api+json'}).
|
915
|
-
to_return(:status => 204)
|
916
|
-
|
917
|
-
result = Flapjack::Diner.create_scheduled_maintenances_checks('example.com:SSH', data)
|
918
|
-
req.should have_been_requested
|
919
|
-
result.should_not be_nil
|
920
|
-
result.should be_true
|
921
|
-
end
|
922
|
-
|
923
|
-
it "submits a POST request for multiple periods on several checks" do
|
924
|
-
data = [{:start_time => time.iso8601, :duration => 3600, :summary => 'working'},
|
925
|
-
{:start_time => (time + 7200).iso8601, :duration => 3600, :summary => 'more work'}]
|
926
|
-
req = stub_request(:post, "http://#{server}/scheduled_maintenances/checks/example.com%3ASSH,example2.com%3APING").
|
927
|
-
with(:body => {:scheduled_maintenances => data}.to_json,
|
928
|
-
:headers => {'Content-Type'=>'application/vnd.api+json'}).
|
929
|
-
to_return(:status => 204)
|
930
|
-
|
931
|
-
result = Flapjack::Diner.create_scheduled_maintenances_checks('example.com:SSH', 'example2.com:PING', data)
|
932
|
-
req.should have_been_requested
|
933
|
-
result.should_not be_nil
|
934
|
-
result.should be_true
|
935
|
-
end
|
936
|
-
|
937
|
-
end
|
938
|
-
|
939
|
-
context 'unscheduled maintenance periods' do
|
940
|
-
|
941
|
-
it "submits a POST request on a check" do
|
942
|
-
data = [{:duration => 3600, :summary => 'working'}]
|
943
|
-
req = stub_request(:post, "http://#{server}/unscheduled_maintenances/checks/example.com%3ASSH").
|
944
|
-
with(:body => {:unscheduled_maintenances => data}.to_json,
|
945
|
-
:headers => {'Content-Type'=>'application/vnd.api+json'}).
|
946
|
-
to_return(:status => 204)
|
947
|
-
|
948
|
-
result = Flapjack::Diner.create_unscheduled_maintenances_checks('example.com:SSH', data)
|
949
|
-
req.should have_been_requested
|
950
|
-
result.should_not be_nil
|
951
|
-
result.should be_true
|
952
|
-
end
|
953
|
-
|
954
|
-
it "submits a POST request on several checks" do
|
955
|
-
data = [{:duration => 3600, :summary => 'working'}]
|
956
|
-
req = stub_request(:post, "http://#{server}/unscheduled_maintenances/checks/example.com%3ASSH,example2.com%3APING").
|
957
|
-
with(:body => {:unscheduled_maintenances => data}.to_json,
|
958
|
-
:headers => {'Content-Type'=>'application/vnd.api+json'}).
|
959
|
-
to_return(:status => 204)
|
960
|
-
|
961
|
-
result = Flapjack::Diner.create_unscheduled_maintenances_checks('example.com:SSH', 'example2.com:PING', data)
|
962
|
-
req.should have_been_requested
|
963
|
-
result.should_not be_nil
|
964
|
-
result.should be_true
|
965
|
-
end
|
966
|
-
|
967
|
-
it "submits a POST request for multiple periods on several checks" do
|
968
|
-
data = [{:duration => 3600, :summary => 'working'},
|
969
|
-
{:duration => 3600, :summary => 'more work'}]
|
970
|
-
req = stub_request(:post, "http://#{server}/unscheduled_maintenances/checks/example.com%3ASSH,example2.com%3APING").
|
971
|
-
with(:body => {:unscheduled_maintenances => data}.to_json,
|
972
|
-
:headers => {'Content-Type'=>'application/vnd.api+json'}).
|
973
|
-
to_return(:status => 204)
|
974
|
-
|
975
|
-
result = Flapjack::Diner.create_unscheduled_maintenances_checks('example.com:SSH', 'example2.com:PING', data)
|
976
|
-
req.should have_been_requested
|
977
|
-
result.should_not be_nil
|
978
|
-
result.should be_true
|
979
|
-
end
|
980
|
-
|
981
|
-
end
|
982
|
-
|
983
|
-
context 'test notifications' do
|
984
|
-
|
985
|
-
it "submits a POST request for a check" do
|
986
|
-
req = stub_request(:post, "http://#{server}/test_notifications/checks/example.com%3ASSH").
|
987
|
-
with(:body => {:test_notifications => [{:summary => 'testing'}]}.to_json,
|
988
|
-
:headers => {'Content-Type'=>'application/vnd.api+json'}).
|
989
|
-
to_return(:status => 204)
|
990
|
-
|
991
|
-
result = Flapjack::Diner.create_test_notifications_checks('example.com:SSH', [{:summary => 'testing'}])
|
992
|
-
req.should have_been_requested
|
993
|
-
result.should_not be_nil
|
994
|
-
result.should be_true
|
995
|
-
end
|
996
|
-
|
997
|
-
it "submits a POST request for several checks" do
|
998
|
-
req = stub_request(:post, "http://#{server}/test_notifications/checks/example.com%3ASSH,example2.com%3APING").
|
999
|
-
with(:test_notifications => [{:summary => 'testing'}]).
|
1000
|
-
to_return(:status => 204)
|
1001
|
-
|
1002
|
-
result = Flapjack::Diner.create_test_notifications_checks('example.com:SSH', 'example2.com:PING', [{:summary => 'testing'}])
|
1003
|
-
req.should have_been_requested
|
1004
|
-
result.should_not be_nil
|
1005
|
-
result.should be_true
|
1006
|
-
end
|
1007
|
-
|
1008
|
-
it "submits a POST request for multiple notifications on a check" do
|
1009
|
-
data = [{:summary => 'testing'}, {:summary => 'more testing'}]
|
1010
|
-
req = stub_request(:post, "http://#{server}/test_notifications/checks/example.com%3ASSH").
|
1011
|
-
with(:body => {:test_notifications => data}.to_json,
|
1012
|
-
:headers => {'Content-Type'=>'application/vnd.api+json'}).
|
1013
|
-
to_return(:status => 204)
|
1014
|
-
|
1015
|
-
result = Flapjack::Diner.create_test_notifications_checks('example.com:SSH', data)
|
1016
|
-
req.should have_been_requested
|
1017
|
-
result.should_not be_nil
|
1018
|
-
result.should be_true
|
1019
|
-
end
|
1020
|
-
|
1021
|
-
it "submits a POST request for multiple notifications on several checks" do
|
1022
|
-
data = [{:summary => 'testing'}, {:summary => 'more testing'}]
|
1023
|
-
req = stub_request(:post, "http://#{server}/test_notifications/checks/example.com%3ASSH,example2.com%3APING").
|
1024
|
-
with(:body => {:test_notifications => data}.to_json,
|
1025
|
-
:headers => {'Content-Type'=>'application/vnd.api+json'}).
|
1026
|
-
to_return(:status => 204)
|
1027
|
-
|
1028
|
-
result = Flapjack::Diner.create_test_notifications_checks('example.com:SSH', 'example2.com:PING', data)
|
1029
|
-
req.should have_been_requested
|
1030
|
-
result.should_not be_nil
|
1031
|
-
result.should be_true
|
1032
|
-
end
|
1033
|
-
|
1034
|
-
end
|
1035
|
-
|
1036
|
-
end
|
1037
|
-
|
1038
|
-
context 'read' do
|
1039
|
-
it "submits a GET request for all checks" do
|
1040
|
-
req = stub_request(:get, "http://#{server}/checks").
|
1041
|
-
to_return(:body => response_with_data('checks'))
|
1042
|
-
|
1043
|
-
result = Flapjack::Diner.checks
|
1044
|
-
req.should have_been_requested
|
1045
|
-
result.should_not be_nil
|
1046
|
-
end
|
1047
|
-
|
1048
|
-
it "submits a GET request for one check" do
|
1049
|
-
req = stub_request(:get, "http://#{server}/checks/example.com%3ASSH").
|
1050
|
-
to_return(:body => response_with_data('checks'))
|
1051
|
-
|
1052
|
-
result = Flapjack::Diner.checks('example.com:SSH')
|
1053
|
-
req.should have_been_requested
|
1054
|
-
result.should_not be_nil
|
1055
|
-
end
|
1056
|
-
|
1057
|
-
it "submits a GET request for several checks" do
|
1058
|
-
req = stub_request(:get, "http://#{server}/checks/example.com%3ASSH,example2.com%3APING").
|
1059
|
-
to_return(:body => response_with_data('checks'))
|
1060
|
-
|
1061
|
-
result = Flapjack::Diner.checks('example.com:SSH', 'example2.com:PING')
|
1062
|
-
req.should have_been_requested
|
1063
|
-
result.should_not be_nil
|
1064
|
-
end
|
1065
|
-
end
|
1066
|
-
|
1067
|
-
context 'update' do
|
1068
|
-
|
1069
|
-
it "submits a PATCH request for a check" do
|
1070
|
-
req = stub_request(:patch, "http://#{server}/checks/www.example.com%3APING").
|
1071
|
-
with(:body => [{:op => 'replace', :path => '/checks/0/enabled', :value => false}].to_json,
|
1072
|
-
:headers => {'Content-Type'=>'application/json-patch+json'}).
|
1073
|
-
to_return(:status => 204)
|
1074
|
-
|
1075
|
-
result = Flapjack::Diner.update_checks('www.example.com:PING', :enabled => false)
|
1076
|
-
req.should have_been_requested
|
1077
|
-
result.should_not be_nil
|
1078
|
-
result.should be_true
|
1079
|
-
end
|
1080
|
-
|
1081
|
-
it "submits a PATCH request for unscheduled maintenances on a check" do
|
1082
|
-
req = stub_request(:patch, "http://#{server}/unscheduled_maintenances/checks/example.com%3ASSH").
|
1083
|
-
with(:body => [{:op => 'replace', :path => '/unscheduled_maintenances/0/end_time', :value => time.iso8601}].to_json,
|
1084
|
-
:headers => {'Content-Type'=>'application/json-patch+json'}).
|
1085
|
-
to_return(:status => 204)
|
1086
|
-
|
1087
|
-
result = Flapjack::Diner.update_unscheduled_maintenances_checks('example.com:SSH', :end_time => time)
|
1088
|
-
req.should have_been_requested
|
1089
|
-
result.should_not be_nil
|
1090
|
-
result.should be_true
|
1091
|
-
end
|
1092
|
-
|
1093
|
-
it "submits a PATCH request for unscheduled maintenances on several checks" do
|
1094
|
-
req = stub_request(:patch, "http://#{server}/unscheduled_maintenances/checks/example.com%3ASSH,example2.com%3APING").
|
1095
|
-
with(:body => [{:op => 'replace', :path => '/unscheduled_maintenances/0/end_time', :value => time.iso8601}].to_json,
|
1096
|
-
:headers => {'Content-Type'=>'application/json-patch+json'}).
|
1097
|
-
to_return(:status => 204)
|
1098
|
-
|
1099
|
-
result = Flapjack::Diner.update_unscheduled_maintenances_checks('example.com:SSH', 'example2.com:PING', :end_time => time)
|
1100
|
-
req.should have_been_requested
|
1101
|
-
result.should_not be_nil
|
1102
|
-
result.should be_true
|
1103
|
-
end
|
1104
|
-
|
1105
|
-
end
|
1106
|
-
|
1107
|
-
context 'delete' do
|
1108
|
-
|
1109
|
-
it "submits a DELETE request for scheduled maintenances on a check" do
|
1110
|
-
req = stub_request(:delete, "http://#{server}/scheduled_maintenances/checks/example.com%3ASSH").
|
1111
|
-
with(:query => {:start_time => time.iso8601}).
|
1112
|
-
to_return(:status => 204)
|
1113
|
-
|
1114
|
-
result = Flapjack::Diner.delete_scheduled_maintenances_checks('example.com:SSH', :start_time => time.iso8601)
|
1115
|
-
req.should have_been_requested
|
1116
|
-
result.should_not be_nil
|
1117
|
-
result.should be_true
|
1118
|
-
end
|
1119
|
-
|
1120
|
-
it "submits a DELETE request for scheduled maintenances on a check with spaces in the name, percent-encoded" do
|
1121
|
-
req = stub_request(:delete, "http://#{server}/scheduled_maintenances/checks/example.com%3ADisk%20C%3A%20Utilisation").
|
1122
|
-
with(:query => {:start_time => time.iso8601}).
|
1123
|
-
to_return(:status => 204)
|
1124
|
-
|
1125
|
-
result = Flapjack::Diner.delete_scheduled_maintenances_checks('example.com:Disk C: Utilisation', :start_time => time.iso8601)
|
1126
|
-
req.should have_been_requested
|
1127
|
-
result.should_not be_nil
|
1128
|
-
result.should be_true
|
1129
|
-
end
|
1130
|
-
|
1131
|
-
it "submits a DELETE request for scheduled maintenances on several checks" do
|
1132
|
-
req = stub_request(:delete, "http://#{server}/scheduled_maintenances/checks/example.com%3ASSH,example2.com%3APING").
|
1133
|
-
with(:query => {:start_time => time.iso8601}).
|
1134
|
-
to_return(:status => 204)
|
1135
|
-
|
1136
|
-
result = Flapjack::Diner.delete_scheduled_maintenances_checks('example.com:SSH', 'example2.com:PING', :start_time => time.iso8601)
|
1137
|
-
req.should have_been_requested
|
1138
|
-
result.should_not be_nil
|
1139
|
-
result.should be_true
|
1140
|
-
end
|
27
|
+
context 'keys as strings' do
|
1141
28
|
|
29
|
+
before do
|
30
|
+
Flapjack::Diner.return_keys_as_strings = true
|
31
|
+
end
|
32
|
+
|
33
|
+
after do
|
34
|
+
Flapjack::Diner.return_keys_as_strings = false
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'can return keys as strings' do
|
38
|
+
data = [{
|
39
|
+
:id => '21',
|
40
|
+
:first_name => 'Ada',
|
41
|
+
:last_name => 'Lovelace',
|
42
|
+
:email => 'ada@example.com',
|
43
|
+
:timezone => 'Europe/London',
|
44
|
+
:tags => [ 'legend', 'first computer programmer' ],
|
45
|
+
:links => {
|
46
|
+
:entities => ['7', '12', '83'],
|
47
|
+
:media => ['21_email', '21_sms'],
|
48
|
+
:notification_rules => ['30fd36ae-3922-4957-ae3e-c8f6dd27e543']
|
49
|
+
}
|
50
|
+
}]
|
51
|
+
|
52
|
+
req = stub_request(:get, "http://#{server}/contacts").to_return(
|
53
|
+
:status => 200, :body => response_with_data('contacts', data))
|
54
|
+
|
55
|
+
result = Flapjack::Diner.contacts
|
56
|
+
expect(req).to have_been_requested
|
57
|
+
expect(result).not_to be_nil
|
58
|
+
expect(result).to be_an_instance_of(Array)
|
59
|
+
expect(result.length).to be(1)
|
60
|
+
expect(result[0]).to be_an_instance_of(Hash)
|
61
|
+
expect(result[0]).to have_key('id')
|
62
|
+
expect(result[0]).to have_key('links')
|
63
|
+
expect(result[0]['links']).to have_key('entities')
|
1142
64
|
end
|
1143
|
-
end
|
1144
|
-
|
1145
|
-
context 'reports' do
|
1146
|
-
context 'read' do
|
1147
|
-
|
1148
|
-
['status', 'scheduled_maintenance', 'unscheduled_maintenance', 'downtime', 'outage'].each do |report_type|
|
1149
|
-
|
1150
|
-
it "submits a GET request for a #{report_type} report on all entities" do
|
1151
|
-
req = stub_request(:get, "http://#{server}/#{report_type}_report/entities").
|
1152
|
-
to_return(:body => response_with_data("#{report_type}_reports"))
|
1153
|
-
|
1154
|
-
result = Flapjack::Diner.send("#{report_type}_report_entities".to_sym)
|
1155
|
-
req.should have_been_requested
|
1156
|
-
result.should_not be_nil
|
1157
|
-
end
|
1158
|
-
|
1159
|
-
it "submits a GET request for a #{report_type} report on one entity" do
|
1160
|
-
req = stub_request(:get, "http://#{server}/#{report_type}_report/entities/72").
|
1161
|
-
to_return(:body => response_with_data("#{report_type}_reports"))
|
1162
|
-
|
1163
|
-
result = Flapjack::Diner.send("#{report_type}_report_entities".to_sym, '72')
|
1164
|
-
req.should have_been_requested
|
1165
|
-
result.should_not be_nil
|
1166
|
-
end
|
1167
|
-
|
1168
|
-
it "submits a GET request for a #{report_type} report on several entities" do
|
1169
|
-
req = stub_request(:get, "http://#{server}/#{report_type}_report/entities/72,150").
|
1170
|
-
to_return(:body => response_with_data("#{report_type}_reports"))
|
1171
|
-
|
1172
|
-
result = Flapjack::Diner.send("#{report_type}_report_entities".to_sym, '72', '150')
|
1173
|
-
req.should have_been_requested
|
1174
|
-
result.should_not be_nil
|
1175
|
-
end
|
1176
|
-
|
1177
|
-
it "submits a GET request for a #{report_type} report on all checks" do
|
1178
|
-
req = stub_request(:get, "http://#{server}/#{report_type}_report/checks").
|
1179
|
-
to_return(:body => response_with_data("#{report_type}_reports"))
|
1180
|
-
|
1181
|
-
result = Flapjack::Diner.send("#{report_type}_report_checks".to_sym)
|
1182
|
-
req.should have_been_requested
|
1183
|
-
result.should_not be_nil
|
1184
|
-
end
|
1185
|
-
|
1186
|
-
it "submits a GET request for a #{report_type} report on one check" do
|
1187
|
-
req = stub_request(:get, "http://#{server}/#{report_type}_report/checks/example.com%3ASSH").
|
1188
|
-
to_return(:body => response_with_data("#{report_type}_reports"))
|
1189
|
-
|
1190
|
-
result = Flapjack::Diner.send("#{report_type}_report_checks".to_sym,
|
1191
|
-
'example.com:SSH')
|
1192
|
-
req.should have_been_requested
|
1193
|
-
result.should_not be_nil
|
1194
|
-
end
|
1195
|
-
|
1196
|
-
it "submits a GET request for a #{report_type} report on several checks" do
|
1197
|
-
req = stub_request(:get, "http://#{server}/#{report_type}_report/checks/example.com%3ASSH,example2.com%3APING").
|
1198
|
-
to_return(:body => response_with_data("#{report_type}_reports"))
|
1199
|
-
|
1200
|
-
result = Flapjack::Diner.send("#{report_type}_report_checks".to_sym,
|
1201
|
-
'example.com:SSH', 'example2.com:PING')
|
1202
|
-
req.should have_been_requested
|
1203
|
-
result.should_not be_nil
|
1204
|
-
end
|
1205
|
-
|
1206
|
-
end
|
1207
65
|
|
1208
|
-
['scheduled_maintenance', 'unscheduled_maintenance', 'downtime', 'outage'].each do |report_type|
|
1209
|
-
|
1210
|
-
let(:start_time) { Time.now }
|
1211
|
-
let(:end_time) { start_time + (60 * 60 * 12) }
|
1212
|
-
|
1213
|
-
it "submits a time-limited GET request for a #{report_type} report on all entities" do
|
1214
|
-
req = stub_request(:get, "http://#{server}/#{report_type}_report/entities").
|
1215
|
-
with(:query => {:start_time => start_time.iso8601, :end_time => end_time.iso8601}).
|
1216
|
-
to_return(:body => response_with_data("#{report_type}_reports"))
|
1217
|
-
|
1218
|
-
result = Flapjack::Diner.send("#{report_type}_report_entities".to_sym,
|
1219
|
-
:start_time => start_time, :end_time => end_time)
|
1220
|
-
req.should have_been_requested
|
1221
|
-
result.should_not be_nil
|
1222
|
-
end
|
1223
|
-
|
1224
|
-
it "submits a time-limited GET request for a #{report_type} report on one entity" do
|
1225
|
-
req = stub_request(:get, "http://#{server}/#{report_type}_report/entities/72").
|
1226
|
-
with(:query => {:start_time => start_time.iso8601, :end_time => end_time.iso8601}).
|
1227
|
-
to_return(:body => response_with_data("#{report_type}_reports"))
|
1228
|
-
|
1229
|
-
result = Flapjack::Diner.send("#{report_type}_report_entities".to_sym,
|
1230
|
-
'72', :start_time => start_time, :end_time => end_time)
|
1231
|
-
req.should have_been_requested
|
1232
|
-
result.should_not be_nil
|
1233
|
-
end
|
1234
|
-
|
1235
|
-
it "submits a time-limited GET request for a #{report_type} report on several entities" do
|
1236
|
-
req = stub_request(:get, "http://#{server}/#{report_type}_report/entities/72,150").
|
1237
|
-
with(:query => {:start_time => start_time.iso8601, :end_time => end_time.iso8601}).
|
1238
|
-
to_return(:body => response_with_data("#{report_type}_reports"))
|
1239
|
-
|
1240
|
-
result = Flapjack::Diner.send("#{report_type}_report_entities".to_sym,
|
1241
|
-
'72', '150', :start_time => start_time, :end_time => end_time)
|
1242
|
-
req.should have_been_requested
|
1243
|
-
result.should_not be_nil
|
1244
|
-
end
|
1245
|
-
|
1246
|
-
it "submits a time-limited GET request for a #{report_type} report on all checks" do
|
1247
|
-
req = stub_request(:get, "http://#{server}/#{report_type}_report/checks").
|
1248
|
-
with(:query => {:start_time => start_time.iso8601, :end_time => end_time.iso8601}).
|
1249
|
-
to_return(:body => response_with_data("#{report_type}_reports"))
|
1250
|
-
|
1251
|
-
result = Flapjack::Diner.send("#{report_type}_report_checks".to_sym,
|
1252
|
-
:start_time => start_time, :end_time => end_time)
|
1253
|
-
req.should have_been_requested
|
1254
|
-
result.should_not be_nil
|
1255
|
-
end
|
1256
|
-
|
1257
|
-
it "submits a time-limited GET request for a #{report_type} report on one check" do
|
1258
|
-
req = stub_request(:get, "http://#{server}/#{report_type}_report/checks/example.com%3ASSH").
|
1259
|
-
with(:query => {:start_time => start_time.iso8601, :end_time => end_time.iso8601}).
|
1260
|
-
to_return(:body => response_with_data("#{report_type}_reports"))
|
1261
|
-
|
1262
|
-
result = Flapjack::Diner.send("#{report_type}_report_checks".to_sym,
|
1263
|
-
'example.com:SSH', :start_time => start_time, :end_time => end_time)
|
1264
|
-
req.should have_been_requested
|
1265
|
-
result.should_not be_nil
|
1266
|
-
end
|
1267
|
-
|
1268
|
-
it "submits a time-limited GET request for a #{report_type} report on several checks" do
|
1269
|
-
req = stub_request(:get, "http://#{server}/#{report_type}_report/checks/example.com%3ASSH,example2.com%3APING").
|
1270
|
-
with(:query => {:start_time => start_time.iso8601, :end_time => end_time.iso8601}).
|
1271
|
-
to_return(:body => response_with_data("#{report_type}_reports"))
|
1272
|
-
|
1273
|
-
result = Flapjack::Diner.send("#{report_type}_report_checks".to_sym,
|
1274
|
-
'example.com:SSH', 'example2.com:PING',
|
1275
|
-
:start_time => start_time, :end_time => end_time)
|
1276
|
-
req.should have_been_requested
|
1277
|
-
result.should_not be_nil
|
1278
|
-
end
|
1279
|
-
|
1280
|
-
end
|
1281
|
-
|
1282
|
-
end
|
1283
66
|
end
|
1284
67
|
|
1285
|
-
context
|
68
|
+
context 'logging' do
|
1286
69
|
|
1287
70
|
let(:logger) { double('logger') }
|
1288
71
|
|
@@ -1290,30 +73,30 @@ describe Flapjack::Diner do
|
|
1290
73
|
Flapjack::Diner.logger = logger
|
1291
74
|
end
|
1292
75
|
|
1293
|
-
it
|
76
|
+
it 'logs a GET request without a path' do
|
1294
77
|
response = response_with_data('entities')
|
1295
78
|
req = stub_request(:get, "http://#{server}/entities").
|
1296
79
|
to_return(:body => response)
|
1297
80
|
|
1298
|
-
logger.
|
1299
|
-
logger.
|
1300
|
-
logger.
|
81
|
+
expect(logger).to receive(:info).with("GET http://#{server}/entities")
|
82
|
+
expect(logger).to receive(:info).with(' Response Code: 200')
|
83
|
+
expect(logger).to receive(:info).with(" Response Body: #{response}")
|
1301
84
|
|
1302
85
|
result = Flapjack::Diner.entities
|
1303
|
-
req.
|
1304
|
-
result.
|
86
|
+
expect(req).to have_been_requested
|
87
|
+
expect(result).not_to be_nil
|
1305
88
|
end
|
1306
89
|
|
1307
90
|
it "logs a POST request" do
|
1308
91
|
req = stub_request(:post, "http://#{server}/test_notifications/entities/27").
|
1309
|
-
to_return(:status =>
|
1310
|
-
logger.
|
1311
|
-
"
|
1312
|
-
logger.
|
92
|
+
to_return(:status => 204)
|
93
|
+
expect(logger).to receive(:info).with("POST http://#{server}/test_notifications/entities/27\n" +
|
94
|
+
" Body: {:test_notifications=>[{:summary=>\"dealing with it\"}]}")
|
95
|
+
expect(logger).to receive(:info).with(' Response Code: 204')
|
1313
96
|
|
1314
97
|
result = Flapjack::Diner.create_test_notifications_entities(27, [{:summary => 'dealing with it'}])
|
1315
|
-
req.
|
1316
|
-
result.
|
98
|
+
expect(req).to have_been_requested
|
99
|
+
expect(result).to be_truthy
|
1317
100
|
end
|
1318
101
|
|
1319
102
|
it "logs a DELETE request" do
|
@@ -1321,12 +104,12 @@ describe Flapjack::Diner do
|
|
1321
104
|
with(:query => {:start_time => time.iso8601}).
|
1322
105
|
to_return(:status => 204)
|
1323
106
|
|
1324
|
-
logger.
|
1325
|
-
logger.
|
107
|
+
expect(logger).to receive(:info).with("DELETE http://#{server}/scheduled_maintenances/checks/example.com:SSH?start_time=#{URI.encode_www_form_component(time.iso8601)}")
|
108
|
+
expect(logger).to receive(:info).with(" Response Code: 204")
|
1326
109
|
|
1327
110
|
result = Flapjack::Diner.delete_scheduled_maintenances_checks('example.com:SSH', :start_time => time)
|
1328
|
-
req.
|
1329
|
-
result.
|
111
|
+
expect(req).to have_been_requested
|
112
|
+
expect(result).to be_truthy
|
1330
113
|
end
|
1331
114
|
|
1332
115
|
end
|
@@ -1339,7 +122,7 @@ describe Flapjack::Diner do
|
|
1339
122
|
expect {
|
1340
123
|
Flapjack::Diner.entities
|
1341
124
|
}.to raise_error
|
1342
|
-
req.
|
125
|
+
expect(req).to have_been_requested
|
1343
126
|
end
|
1344
127
|
|
1345
128
|
it "raises an exception on invalid JSON data" do
|
@@ -1349,7 +132,7 @@ describe Flapjack::Diner do
|
|
1349
132
|
expect {
|
1350
133
|
Flapjack::Diner.entities
|
1351
134
|
}.to raise_error
|
1352
|
-
req.
|
135
|
+
expect(req).to have_been_requested
|
1353
136
|
end
|
1354
137
|
|
1355
138
|
it "raises an exception if a required argument is not provided" do
|
@@ -1358,7 +141,7 @@ describe Flapjack::Diner do
|
|
1358
141
|
expect {
|
1359
142
|
Flapjack::Diner.delete_scheduled_maintenances_checks('example.com:SSH', :start_time => nil)
|
1360
143
|
}.to raise_error
|
1361
|
-
req.
|
144
|
+
expect(req).not_to have_been_requested
|
1362
145
|
end
|
1363
146
|
|
1364
147
|
it "raises an exception if a time argument is provided with the wrong data type" do
|
@@ -1373,7 +156,7 @@ describe Flapjack::Diner do
|
|
1373
156
|
Flapjack::Diner.downtime_report_checks('example.com:SSH',
|
1374
157
|
:start_time => start_time, :end_time => end_time)
|
1375
158
|
}.to raise_error
|
1376
|
-
req.
|
159
|
+
expect(req).not_to have_been_requested
|
1377
160
|
end
|
1378
161
|
|
1379
162
|
end
|