flapjack-diner 1.4.0 → 2.0.0.a4

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 (51) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rspec +1 -1
  4. data/README.md +620 -413
  5. data/flapjack-diner.gemspec +1 -1
  6. data/lib/flapjack-diner/argument_validator.rb +77 -7
  7. data/lib/flapjack-diner/configuration.rb +409 -0
  8. data/lib/flapjack-diner/index_range.rb +42 -0
  9. data/lib/flapjack-diner/log_formatter.rb +22 -0
  10. data/lib/flapjack-diner/query.rb +114 -0
  11. data/lib/flapjack-diner/relationships.rb +180 -0
  12. data/lib/flapjack-diner/request.rb +280 -0
  13. data/lib/flapjack-diner/resources.rb +64 -0
  14. data/lib/flapjack-diner/response.rb +91 -0
  15. data/lib/flapjack-diner/tools.rb +47 -251
  16. data/lib/flapjack-diner/utility.rb +16 -0
  17. data/lib/flapjack-diner/version.rb +1 -1
  18. data/lib/flapjack-diner.rb +54 -20
  19. data/spec/argument_validator_spec.rb +87 -28
  20. data/spec/flapjack-diner_spec.rb +42 -64
  21. data/spec/relationships_spec.rb +211 -0
  22. data/spec/resources/checks_spec.rb +219 -79
  23. data/spec/resources/contacts_spec.rb +179 -151
  24. data/spec/resources/events_spec.rb +208 -0
  25. data/spec/resources/maintenance_periods_spec.rb +177 -565
  26. data/spec/resources/media_spec.rb +157 -171
  27. data/spec/resources/metrics_spec.rb +45 -0
  28. data/spec/resources/rules_spec.rb +278 -0
  29. data/spec/resources/states_spec.rb +93 -0
  30. data/spec/resources/statistics_spec.rb +53 -0
  31. data/spec/resources/tags_spec.rb +243 -0
  32. data/spec/spec_helper.rb +16 -0
  33. data/spec/support/fixture_data.rb +541 -0
  34. metadata +33 -31
  35. data/.rubocop.yml +0 -21
  36. data/.rubocop_todo.yml +0 -135
  37. data/lib/flapjack-diner/resources/checks.rb +0 -64
  38. data/lib/flapjack-diner/resources/contacts.rb +0 -70
  39. data/lib/flapjack-diner/resources/entities.rb +0 -68
  40. data/lib/flapjack-diner/resources/maintenance_periods.rb +0 -82
  41. data/lib/flapjack-diner/resources/media.rb +0 -61
  42. data/lib/flapjack-diner/resources/notification_rules.rb +0 -66
  43. data/lib/flapjack-diner/resources/notifications.rb +0 -28
  44. data/lib/flapjack-diner/resources/pagerduty_credentials.rb +0 -59
  45. data/lib/flapjack-diner/resources/reports.rb +0 -33
  46. data/spec/pacts/flapjack-diner-flapjack.json +0 -4515
  47. data/spec/resources/entities_spec.rb +0 -181
  48. data/spec/resources/notification_rules_spec.rb +0 -341
  49. data/spec/resources/notifications_spec.rb +0 -208
  50. data/spec/resources/pagerduty_credentials_spec.rb +0 -237
  51. data/spec/resources/reports_spec.rb +0 -255
@@ -1,255 +0,0 @@
1
- require 'spec_helper'
2
- require 'flapjack-diner'
3
-
4
- describe Flapjack::Diner::Resources::Reports, :pact => true do
5
-
6
- before(:each) do
7
- Flapjack::Diner.base_uri('localhost:19081')
8
- Flapjack::Diner.logger = nil
9
- end
10
-
11
- let(:linked_check) { {
12
- :entity => ['1234'],
13
- :check => ['www.example.com:SSH']
14
- } }
15
-
16
- let(:linked_check_2) { {
17
- :entity => ['5678'],
18
- :check => ['www2.example.com:PING']
19
- } }
20
-
21
- def report_data(report_type, links = {})
22
- case report_type
23
- when 'status'
24
- {} # generic matcher for hash including anything
25
- when 'downtime'
26
- {} # generic matcher for hash including anything
27
- else
28
- {"#{report_type}s".to_sym => [], :links => links}
29
- end
30
- end
31
-
32
- context 'read' do
33
-
34
- ['status', 'scheduled_maintenance', 'unscheduled_maintenance', 'downtime', 'outage'].each do |report_type|
35
-
36
- it "submits a GET request for a #{report_type} report on all entities" do
37
- data = [report_data(report_type, linked_check)]
38
-
39
- flapjack.given("a check 'www.example.com:SSH' exists").
40
- upon_receiving("a GET request for a #{report_type} report on all entities").
41
- with(:method => :get, :path => "/#{report_type}_report/entities").
42
- will_respond_with(
43
- :status => 200,
44
- :headers => {'Content-Type' => 'application/vnd.api+json; charset=utf-8'},
45
- :body => {"#{report_type}_reports".to_sym => data} )
46
-
47
- result = Flapjack::Diner.send("#{report_type}_report_entities".to_sym)
48
- expect(result).to eq(data)
49
- end
50
-
51
- it "submits a GET request for a #{report_type} report on one entity" do
52
- data = [report_data(report_type, linked_check)]
53
-
54
- flapjack.given("a check 'www.example.com:SSH' exists").
55
- upon_receiving("a GET request for a #{report_type} report on one entity").
56
- with(:method => :get, :path => "/#{report_type}_report/entities/1234").
57
- will_respond_with(
58
- :status => 200,
59
- :headers => {'Content-Type' => 'application/vnd.api+json; charset=utf-8'},
60
- :body => {"#{report_type}_reports".to_sym => data} )
61
-
62
- result = Flapjack::Diner.send("#{report_type}_report_entities".to_sym, '1234')
63
- expect(result).to eq(data)
64
- end
65
-
66
- it "submits a GET request for a #{report_type} report on several entities" do
67
- data = [report_data(report_type, linked_check),
68
- report_data(report_type, linked_check_2)]
69
-
70
- flapjack.given("checks 'www.example.com:SSH' and 'www2.example.com:PING' exist").
71
- upon_receiving("a GET request for a #{report_type} report on two entities").
72
- with(:method => :get, :path => "/#{report_type}_report/entities/1234,5678").
73
- will_respond_with(
74
- :status => 200,
75
- :headers => {'Content-Type' => 'application/vnd.api+json; charset=utf-8'},
76
- :body => {"#{report_type}_reports".to_sym => data} )
77
-
78
- result = Flapjack::Diner.send("#{report_type}_report_entities".to_sym, '1234', '5678')
79
- expect(result).to eq(data)
80
- end
81
-
82
- it "submits a GET request for a #{report_type} report on all checks" do
83
- data = [report_data(report_type, linked_check)]
84
-
85
- flapjack.given("a check 'www.example.com:SSH' exists").
86
- upon_receiving("a GET request for a #{report_type} report on all checks").
87
- with(:method => :get,
88
- :path => "/#{report_type}_report/checks").
89
- will_respond_with(
90
- :status => 200,
91
- :headers => {'Content-Type' => 'application/vnd.api+json; charset=utf-8'},
92
- :body => {"#{report_type}_reports".to_sym => data} )
93
-
94
- result = Flapjack::Diner.send("#{report_type}_report_checks".to_sym)
95
- expect(result).to eq(data)
96
- end
97
-
98
- it "submits a GET request for a #{report_type} report on one check" do
99
- data = [report_data(report_type, linked_check)]
100
-
101
- flapjack.given("a check 'www.example.com:SSH' exists").
102
- upon_receiving("a GET request for a #{report_type} report on a single check").
103
- with(:method => :get,
104
- :path => "/#{report_type}_report/checks/www.example.com:SSH").
105
- will_respond_with(
106
- :status => 200,
107
- :headers => {'Content-Type' => 'application/vnd.api+json; charset=utf-8'},
108
- :body => {"#{report_type}_reports".to_sym => data} )
109
-
110
- result = Flapjack::Diner.send("#{report_type}_report_checks".to_sym, 'www.example.com:SSH')
111
- expect(result).to eq(data)
112
- end
113
-
114
- it "submits a GET request for a #{report_type} report on several checks" do
115
- data = [report_data(report_type, linked_check),
116
- report_data(report_type, linked_check_2)]
117
-
118
- flapjack.given("checks 'www.example.com:SSH' and 'www2.example.com:PING' exist").
119
- upon_receiving("a GET request for a #{report_type} report on two checks").
120
- with(:method => :get,
121
- :path => "/#{report_type}_report/checks/www.example.com:SSH,www2.example.com:PING").
122
- will_respond_with(
123
- :status => 200,
124
- :headers => {'Content-Type' => 'application/vnd.api+json; charset=utf-8'},
125
- :body => {"#{report_type}_reports".to_sym => data} )
126
-
127
- result = Flapjack::Diner.send("#{report_type}_report_checks".to_sym, 'www.example.com:SSH', 'www2.example.com:PING')
128
- expect(result).to eq(data)
129
- end
130
-
131
- end
132
-
133
- ['scheduled_maintenance', 'unscheduled_maintenance', 'downtime', 'outage'].each do |report_type|
134
-
135
- let(:start_time) { Time.now }
136
- let(:end_time) { start_time + (60 * 60 * 12) }
137
-
138
- let(:esc_st) { URI.encode_www_form_component(start_time.iso8601) }
139
- let(:esc_et) { URI.encode_www_form_component(end_time.iso8601) }
140
-
141
- it "submits a time-limited GET request for a #{report_type} report on all entities" do
142
- data = [report_data(report_type, linked_check)]
143
-
144
- flapjack.given("a check 'www.example.com:SSH' exists").
145
- upon_receiving("a time limited GET request for a #{report_type} report on all entities").
146
- with(:method => :get,
147
- :path => "/#{report_type}_report/entities",
148
- :query => "start_time=#{esc_st}&end_time=#{esc_et}").
149
- will_respond_with(
150
- :status => 200,
151
- :headers => {'Content-Type' => 'application/vnd.api+json; charset=utf-8'},
152
- :body => {"#{report_type}_reports".to_sym => data} )
153
-
154
- result = Flapjack::Diner.send("#{report_type}_report_entities".to_sym,
155
- :start_time => start_time, :end_time => end_time)
156
- expect(result).to eq(data)
157
- end
158
-
159
- it "submits a time-limited GET request for a #{report_type} report on one entity" do
160
- data = [report_data(report_type, linked_check)]
161
-
162
- flapjack.given("a check 'www.example.com:SSH' exists").
163
- upon_receiving("a time limited GET request for a #{report_type} report on one entity").
164
- with(:method => :get,
165
- :path => "/#{report_type}_report/entities/1234",
166
- :query => "start_time=#{esc_st}&end_time=#{esc_et}").
167
- will_respond_with(
168
- :status => 200,
169
- :headers => {'Content-Type' => 'application/vnd.api+json; charset=utf-8'},
170
- :body => {"#{report_type}_reports".to_sym => data} )
171
-
172
- result = Flapjack::Diner.send("#{report_type}_report_entities".to_sym, '1234',
173
- :start_time => start_time, :end_time => end_time)
174
- expect(result).to eq(data)
175
- end
176
-
177
- it "submits a time-limited GET request for a #{report_type} report on several entities" do
178
- data = [report_data(report_type, linked_check),
179
- report_data(report_type, linked_check_2)]
180
-
181
- flapjack.given("checks 'www.example.com:SSH' and 'www2.example.com:PING' exist").
182
- upon_receiving("a time limited GET request for a #{report_type} report on two entities").
183
- with(:method => :get,
184
- :path => "/#{report_type}_report/entities/1234,5678",
185
- :query => "start_time=#{esc_st}&end_time=#{esc_et}").
186
- will_respond_with(
187
- :status => 200,
188
- :headers => {'Content-Type' => 'application/vnd.api+json; charset=utf-8'},
189
- :body => {"#{report_type}_reports".to_sym => data} )
190
-
191
- result = Flapjack::Diner.send("#{report_type}_report_entities".to_sym, '1234', '5678',
192
- :start_time => start_time, :end_time => end_time)
193
- expect(result).to eq(data)
194
- end
195
-
196
- it "submits a time-limited GET request for a #{report_type} report on all checks" do
197
- data = [report_data(report_type, linked_check)]
198
-
199
- flapjack.given("a check 'www.example.com:SSH' exists").
200
- upon_receiving("a time limited GET request for a #{report_type} report on all checks").
201
- with(:method => :get,
202
- :path => "/#{report_type}_report/checks",
203
- :query => "start_time=#{esc_st}&end_time=#{esc_et}").
204
- will_respond_with(
205
- :status => 200,
206
- :headers => {'Content-Type' => 'application/vnd.api+json; charset=utf-8'},
207
- :body => {"#{report_type}_reports".to_sym => data} )
208
-
209
- result = Flapjack::Diner.send("#{report_type}_report_checks".to_sym,
210
- :start_time => start_time, :end_time => end_time)
211
- expect(result).to eq(data)
212
- end
213
-
214
- it "submits a time-limited GET request for a #{report_type} report on one check" do
215
- data = [report_data(report_type, linked_check)]
216
-
217
- flapjack.given("a check 'www.example.com:SSH' exists").
218
- upon_receiving("a time limited GET request for a #{report_type} report on a single check").
219
- with(:method => :get,
220
- :path => "/#{report_type}_report/checks/www.example.com:SSH",
221
- :query => "start_time=#{esc_st}&end_time=#{esc_et}").
222
- will_respond_with(
223
- :status => 200,
224
- :headers => {'Content-Type' => 'application/vnd.api+json; charset=utf-8'},
225
- :body => {"#{report_type}_reports".to_sym => data} )
226
-
227
- result = Flapjack::Diner.send("#{report_type}_report_checks".to_sym, 'www.example.com:SSH',
228
- :start_time => start_time, :end_time => end_time)
229
- expect(result).to eq(data)
230
- end
231
-
232
- it "submits a time-limited GET request for a #{report_type} report on several checks" do
233
- data = [report_data(report_type, linked_check),
234
- report_data(report_type, linked_check_2)]
235
-
236
- flapjack.given("checks 'www.example.com:SSH' and 'www2.example.com:PING' exist").
237
- upon_receiving("a time-limited GET request for a #{report_type} report on two checks").
238
- with(:method => :get,
239
- :path => "/#{report_type}_report/checks/www.example.com:SSH,www2.example.com:PING",
240
- :query => "start_time=#{esc_st}&end_time=#{esc_et}").
241
- will_respond_with(
242
- :status => 200,
243
- :headers => {'Content-Type' => 'application/vnd.api+json; charset=utf-8'},
244
- :body => {"#{report_type}_reports".to_sym => data} )
245
-
246
- result = Flapjack::Diner.send("#{report_type}_report_checks".to_sym, 'www.example.com:SSH', 'www2.example.com:PING',
247
- :start_time => start_time, :end_time => end_time)
248
- expect(result).to eq(data)
249
- end
250
-
251
- end
252
-
253
- end
254
-
255
- end