flapjack 0.7.35 → 0.8.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.
Files changed (114) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +1 -1
  3. data/Gemfile +3 -4
  4. data/Guardfile +1 -1
  5. data/README.md +38 -19
  6. data/Rakefile +1 -3
  7. data/etc/flapjack_config.yaml.example +11 -1
  8. data/features/steps/cli_steps.rb +3 -3
  9. data/features/steps/events_steps.rb +7 -6
  10. data/features/steps/flapjack-netsaint-parser_steps.rb +8 -8
  11. data/features/steps/notifications_steps.rb +10 -10
  12. data/features/steps/packaging-lintian_steps.rb +5 -9
  13. data/features/steps/time_travel_steps.rb +1 -1
  14. data/flapjack.gemspec +4 -3
  15. data/lib/flapjack/data/contact.rb +78 -6
  16. data/lib/flapjack/data/entity.rb +11 -2
  17. data/lib/flapjack/data/notification_rule.rb +67 -59
  18. data/lib/flapjack/data/semaphore.rb +44 -0
  19. data/lib/flapjack/gateways/api.rb +24 -28
  20. data/lib/flapjack/gateways/api/contact_methods.rb +1 -2
  21. data/lib/flapjack/gateways/api/entity_methods.rb +3 -3
  22. data/lib/flapjack/gateways/jsonapi.rb +249 -0
  23. data/lib/flapjack/gateways/jsonapi/contact_methods.rb +544 -0
  24. data/lib/flapjack/gateways/jsonapi/entity_check_presenter.rb +217 -0
  25. data/lib/flapjack/gateways/jsonapi/entity_methods.rb +350 -0
  26. data/lib/flapjack/gateways/jsonapi/entity_presenter.rb +75 -0
  27. data/lib/flapjack/gateways/jsonapi/rack/json_params_parser.rb +32 -0
  28. data/lib/flapjack/gateways/web.rb +78 -12
  29. data/lib/flapjack/gateways/web/public/css/bootstrap-theme.css +397 -0
  30. data/lib/flapjack/gateways/web/public/css/bootstrap-theme.min.css +7 -0
  31. data/lib/flapjack/gateways/web/public/css/bootstrap.css +7118 -0
  32. data/lib/flapjack/gateways/web/public/css/bootstrap.min.css +6 -8
  33. data/lib/flapjack/gateways/web/public/css/font-awesome.css +1338 -0
  34. data/lib/flapjack/gateways/web/public/css/font-awesome.min.css +4 -0
  35. data/lib/flapjack/gateways/web/public/css/screen.css +80 -0
  36. data/lib/flapjack/gateways/web/public/css/select2-bootstrap.css +87 -0
  37. data/lib/flapjack/gateways/web/public/css/select2.css +615 -0
  38. data/lib/flapjack/gateways/web/public/fonts/FontAwesome.otf +0 -0
  39. data/lib/flapjack/gateways/web/public/fonts/fontawesome-webfont.eot +0 -0
  40. data/lib/flapjack/gateways/web/public/fonts/fontawesome-webfont.svg +414 -0
  41. data/lib/flapjack/gateways/web/public/fonts/fontawesome-webfont.ttf +0 -0
  42. data/lib/flapjack/gateways/web/public/fonts/fontawesome-webfont.woff +0 -0
  43. data/lib/flapjack/gateways/web/public/fonts/glyphicons-halflings-regular.eot +0 -0
  44. data/lib/flapjack/gateways/web/public/fonts/glyphicons-halflings-regular.svg +229 -0
  45. data/lib/flapjack/gateways/web/public/fonts/glyphicons-halflings-regular.ttf +0 -0
  46. data/lib/flapjack/gateways/web/public/fonts/glyphicons-halflings-regular.woff +0 -0
  47. data/lib/flapjack/gateways/web/public/img/flapjack-2013-notext-transparent-300-300.png +0 -0
  48. data/lib/flapjack/gateways/web/public/img/select2.png +0 -0
  49. data/lib/flapjack/gateways/web/public/img/select2x2.png +0 -0
  50. data/lib/flapjack/gateways/web/public/js/backbone-min.js +2 -0
  51. data/lib/flapjack/gateways/web/public/js/backbone.js +1581 -0
  52. data/lib/flapjack/gateways/web/public/js/backbone.jsonapi.js +75 -0
  53. data/lib/flapjack/gateways/web/public/js/bootstrap.js +2276 -0
  54. data/lib/flapjack/gateways/web/public/js/contacts.js +225 -0
  55. data/lib/flapjack/gateways/web/public/js/jquery-1.10.2.js +9789 -0
  56. data/lib/flapjack/gateways/web/public/js/jquery-1.10.2.min.js +6 -0
  57. data/lib/flapjack/gateways/web/public/js/select2.js +3255 -0
  58. data/lib/flapjack/gateways/web/public/js/select2.min.js +22 -0
  59. data/lib/flapjack/gateways/web/public/js/underscore-min.js +6 -0
  60. data/lib/flapjack/gateways/web/public/js/underscore.js +1276 -0
  61. data/lib/flapjack/gateways/web/views/check.html.erb +423 -193
  62. data/lib/flapjack/gateways/web/views/checks.html.erb +51 -71
  63. data/lib/flapjack/gateways/web/views/contact.html.erb +142 -164
  64. data/lib/flapjack/gateways/web/views/contacts.html.erb +20 -40
  65. data/lib/flapjack/gateways/web/views/edit_contacts.html.erb +83 -0
  66. data/lib/flapjack/gateways/web/views/entities.html.erb +18 -37
  67. data/lib/flapjack/gateways/web/views/entity.html.erb +46 -65
  68. data/lib/flapjack/gateways/web/views/index.html.erb +6 -27
  69. data/lib/flapjack/gateways/web/views/layout.erb +95 -0
  70. data/lib/flapjack/gateways/web/views/self_stats.html.erb +100 -114
  71. data/lib/flapjack/pikelet.rb +4 -2
  72. data/lib/flapjack/version.rb +1 -1
  73. data/spec/lib/flapjack/coordinator_spec.rb +120 -120
  74. data/spec/lib/flapjack/data/contact_spec.rb +66 -58
  75. data/spec/lib/flapjack/data/entity_check_spec.rb +179 -179
  76. data/spec/lib/flapjack/data/entity_spec.rb +71 -71
  77. data/spec/lib/flapjack/data/event_spec.rb +34 -30
  78. data/spec/lib/flapjack/data/message_spec.rb +6 -6
  79. data/spec/lib/flapjack/data/notification_rule_spec.rb +24 -24
  80. data/spec/lib/flapjack/data/notification_spec.rb +19 -19
  81. data/spec/lib/flapjack/data/semaphore_spec.rb +24 -0
  82. data/spec/lib/flapjack/data/tag_spec.rb +11 -10
  83. data/spec/lib/flapjack/gateways/api/contact_methods_spec.rb +201 -201
  84. data/spec/lib/flapjack/gateways/api/entity_check_presenter_spec.rb +55 -55
  85. data/spec/lib/flapjack/gateways/api/entity_methods_spec.rb +257 -257
  86. data/spec/lib/flapjack/gateways/api/entity_presenter_spec.rb +26 -26
  87. data/spec/lib/flapjack/gateways/api_spec.rb +1 -1
  88. data/spec/lib/flapjack/gateways/email_spec.rb +4 -4
  89. data/spec/lib/flapjack/gateways/jabber_spec.rb +77 -77
  90. data/spec/lib/flapjack/gateways/jsonapi/contact_methods_spec.rb +830 -0
  91. data/spec/lib/flapjack/gateways/jsonapi/entity_check_presenter_spec.rb +211 -0
  92. data/spec/lib/flapjack/gateways/jsonapi/entity_methods_spec.rb +863 -0
  93. data/spec/lib/flapjack/gateways/jsonapi/entity_presenter_spec.rb +108 -0
  94. data/spec/lib/flapjack/gateways/jsonapi_spec.rb +8 -0
  95. data/spec/lib/flapjack/gateways/oobetet_spec.rb +35 -35
  96. data/spec/lib/flapjack/gateways/pagerduty_spec.rb +40 -40
  97. data/spec/lib/flapjack/gateways/sms_messagenet_spec.rb +3 -3
  98. data/spec/lib/flapjack/gateways/web/views/check.html.erb_spec.rb +1 -1
  99. data/spec/lib/flapjack/gateways/web/views/contact.html.erb_spec.rb +5 -5
  100. data/spec/lib/flapjack/gateways/web/views/index.html.erb_spec.rb +1 -1
  101. data/spec/lib/flapjack/gateways/web_spec.rb +73 -74
  102. data/spec/lib/flapjack/logger_spec.rb +13 -13
  103. data/spec/lib/flapjack/pikelet_spec.rb +33 -33
  104. data/spec/lib/flapjack/processor_spec.rb +22 -22
  105. data/spec/lib/flapjack/redis_pool_spec.rb +1 -1
  106. data/spec/lib/flapjack/utility_spec.rb +12 -12
  107. data/spec/spec_helper.rb +9 -9
  108. data/spec/support/erb_view_helper.rb +4 -0
  109. metadata +107 -96
  110. data/lib/flapjack/gateways/web/public/css/flapjack.css +0 -49
  111. data/lib/flapjack/gateways/web/views/_css.html.erb +0 -42
  112. data/lib/flapjack/gateways/web/views/_foot.html.erb +0 -3
  113. data/lib/flapjack/gateways/web/views/_head.html.erb +0 -5
  114. data/lib/flapjack/gateways/web/views/_nav.html.erb +0 -10
@@ -23,31 +23,31 @@ describe Flapjack::Data::Notification, :redis => true, :logger => true do
23
23
  # in message.notification_contents
24
24
  notification = Flapjack::Data::Notification.new
25
25
 
26
- contact.should_receive(:id).and_return('23')
27
- contact.should_receive(:notification_rules).and_return([])
28
- contact.should_receive(:media).and_return('email' => 'example@example.com',
26
+ expect(contact).to receive(:id).and_return('23')
27
+ expect(contact).to receive(:notification_rules).and_return([])
28
+ expect(contact).to receive(:media).and_return('email' => 'example@example.com',
29
29
  'sms' => '0123456789')
30
- contact.should_receive(:add_alerting_check_for_media).with("email", nil)
31
- contact.should_receive(:add_alerting_check_for_media).with("sms", nil)
32
- contact.should_receive(:clean_alerting_checks_for_media).with("email").and_return(0)
33
- contact.should_receive(:clean_alerting_checks_for_media).with("sms").and_return(0)
34
- contact.should_receive(:count_alerting_checks_for_media).with("email").and_return(0)
35
- contact.should_receive(:count_alerting_checks_for_media).with("sms").and_return(0)
36
- contact.should_receive(:rollup_threshold_for_media).with("email").and_return(nil)
37
- contact.should_receive(:rollup_threshold_for_media).with("sms").and_return(nil)
30
+ expect(contact).to receive(:add_alerting_check_for_media).with("email", nil)
31
+ expect(contact).to receive(:add_alerting_check_for_media).with("sms", nil)
32
+ expect(contact).to receive(:clean_alerting_checks_for_media).with("email").and_return(0)
33
+ expect(contact).to receive(:clean_alerting_checks_for_media).with("sms").and_return(0)
34
+ expect(contact).to receive(:count_alerting_checks_for_media).with("email").and_return(0)
35
+ expect(contact).to receive(:count_alerting_checks_for_media).with("sms").and_return(0)
36
+ expect(contact).to receive(:rollup_threshold_for_media).with("email").and_return(nil)
37
+ expect(contact).to receive(:rollup_threshold_for_media).with("sms").and_return(nil)
38
38
 
39
39
  messages = notification.messages([contact], :default_timezone => timezone,
40
40
  :logger => @logger)
41
- messages.should_not be_nil
42
- messages.should have(2).items
41
+ expect(messages).not_to be_nil
42
+ expect(messages.size).to eq(2)
43
43
 
44
- messages.first.contact.should == contact
45
- messages.first.medium.should == 'email'
46
- messages.first.address.should == 'example@example.com'
44
+ expect(messages.first.contact).to eq(contact)
45
+ expect(messages.first.medium).to eq('email')
46
+ expect(messages.first.address).to eq('example@example.com')
47
47
 
48
- messages.last.contact.should == contact
49
- messages.last.medium.should == 'sms'
50
- messages.last.address.should == '0123456789'
48
+ expect(messages.last.contact).to eq(contact)
49
+ expect(messages.last.medium).to eq('sms')
50
+ expect(messages.last.address).to eq('0123456789')
51
51
  end
52
52
 
53
53
  end
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+ require 'flapjack/data/semaphore'
3
+
4
+ describe 'Flapjack::Data::Semaphore', :redis => true do
5
+
6
+ it "obtains a lock that locks" do
7
+ options = {:redis => @redis, :expiry => 60}
8
+ lock_1 = Flapjack::Data::Semaphore.new('fooey', options)
9
+ expect(lock_1.class).to eq(Flapjack::Data::Semaphore)
10
+ expect{Flapjack::Data::Semaphore.new('fooey', options)}.to raise_error(Flapjack::Data::Semaphore::ResourceLocked)
11
+ end
12
+
13
+ it "releases a lock" do
14
+ options = {:redis => @redis, :expiry => 60}
15
+ lock_1 = Flapjack::Data::Semaphore.new('fooey', options)
16
+ expect(lock_1.class).to eq(Flapjack::Data::Semaphore)
17
+ lock_1.release
18
+
19
+ lock_2 = Flapjack::Data::Semaphore.new('fooey', options)
20
+ expect(lock_2.class).to eq(Flapjack::Data::Semaphore)
21
+ end
22
+
23
+ end
24
+
@@ -1,35 +1,36 @@
1
1
  require 'spec_helper'
2
+ require 'flapjack/data/tag'
2
3
 
3
4
  describe Flapjack::Data::Tag, :redis => true do
4
5
 
5
6
  it "adds references to tags" do
6
7
  tags = Flapjack::Data::Tag.create('special', ['apple', 'button', 'carbon'], :redis => @redis)
7
8
 
8
- tags.should include('carbon')
9
- tags.should_not include('chocolate')
9
+ expect(tags).to include('carbon')
10
+ expect(tags).not_to include('chocolate')
10
11
 
11
12
  tags.add('chocolate')
12
- tags.should include('chocolate')
13
+ expect(tags).to include('chocolate')
13
14
  end
14
15
 
15
16
  it "deletes references from tags" do
16
17
  tags = Flapjack::Data::Tag.create('special', ['apple', 'button', 'carbon'], :redis => @redis)
17
18
 
18
- tags.should include('apple')
19
- tags.should include('button')
19
+ expect(tags).to include('apple')
20
+ expect(tags).to include('button')
20
21
 
21
22
  tags.delete('button')
22
- tags.should include('apple')
23
- tags.should_not include('button')
23
+ expect(tags).to include('apple')
24
+ expect(tags).not_to include('button')
24
25
  end
25
26
 
26
27
  it "lists references contained in a tag" do
27
28
  t1 = Flapjack::Data::Tag.create('special', ['apple', 'button', 'carbon'], :redis => @redis)
28
29
 
29
30
  t2 = Flapjack::Data::Tag.find('special', :redis => @redis)
30
- t2.should include('apple')
31
- t2.should include('carbon')
32
- t2.should_not include('chocolate')
31
+ expect(t2).to include('apple')
32
+ expect(t2).to include('carbon')
33
+ expect(t2).not_to include('chocolate')
33
34
  end
34
35
 
35
36
  end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
  require 'flapjack/gateways/api'
3
3
 
4
- describe 'Flapjack::Gateways::API::ContactMethods', :sinatra => true, :logger => true, :json => true do
4
+ describe 'Flapjack::Gateways::API::ContactMethods', :sinatra => true, :logger => true do
5
5
 
6
6
  def app
7
7
  Flapjack::Gateways::API
@@ -60,7 +60,7 @@ describe 'Flapjack::Gateways::API::ContactMethods', :sinatra => true, :logger =>
60
60
  end
61
61
 
62
62
  before(:each) do
63
- Flapjack::RedisPool.should_receive(:new).and_return(redis)
63
+ expect(Flapjack::RedisPool).to receive(:new).and_return(redis)
64
64
  Flapjack::Gateways::API.instance_variable_set('@config', {})
65
65
  Flapjack::Gateways::API.instance_variable_set('@logger', @logger)
66
66
  Flapjack::Gateways::API.start
@@ -82,19 +82,19 @@ describe 'Flapjack::Gateways::API::ContactMethods', :sinatra => true, :logger =>
82
82
  ]
83
83
  }
84
84
 
85
- Flapjack::Data::Contact.should_receive(:all).with(:redis => redis).and_return([])
86
- Flapjack::Data::Contact.should_receive(:add).twice
85
+ expect(Flapjack::Data::Contact).to receive(:all).with(:redis => redis).and_return([])
86
+ expect(Flapjack::Data::Contact).to receive(:add).twice
87
87
 
88
88
  apost "/contacts", contacts.to_json, {'CONTENT_TYPE' => 'application/json'}
89
- last_response.status.should == 204
89
+ expect(last_response.status).to eq(204)
90
90
  end
91
91
 
92
92
  it "does not create contacts if the data is improperly formatted" do
93
- Flapjack::Data::Contact.should_not_receive(:add)
93
+ expect(Flapjack::Data::Contact).not_to receive(:add)
94
94
 
95
95
  apost "/contacts", {'contacts' => ["Hello", "again"]}.to_json,
96
96
  {'CONTENT_TYPE' => 'application/json'}
97
- last_response.status.should == 403
97
+ expect(last_response.status).to eq(403)
98
98
  end
99
99
 
100
100
  it "does not create contacts if they don't contain an id" do
@@ -112,11 +112,11 @@ describe 'Flapjack::Gateways::API::ContactMethods', :sinatra => true, :logger =>
112
112
  ]
113
113
  }
114
114
 
115
- Flapjack::Data::Contact.should_receive(:all).with(:redis => redis).and_return([])
116
- Flapjack::Data::Contact.should_receive(:add)
115
+ expect(Flapjack::Data::Contact).to receive(:all).with(:redis => redis).and_return([])
116
+ expect(Flapjack::Data::Contact).to receive(:add)
117
117
 
118
118
  apost "/contacts", contacts.to_json, {'CONTENT_TYPE' => 'application/json'}
119
- last_response.status.should == 204
119
+ expect(last_response.status).to eq(204)
120
120
  end
121
121
 
122
122
  it "updates a contact if it is already present" do
@@ -136,14 +136,14 @@ describe 'Flapjack::Gateways::API::ContactMethods', :sinatra => true, :logger =>
136
136
  }
137
137
 
138
138
  existing = double(Flapjack::Data::Contact)
139
- existing.should_receive(:id).and_return("0363")
140
- existing.should_receive(:update).with(contacts['contacts'][1])
139
+ expect(existing).to receive(:id).and_return("0363")
140
+ expect(existing).to receive(:update).with(contacts['contacts'][1])
141
141
 
142
- Flapjack::Data::Contact.should_receive(:all).with(:redis => redis).and_return([existing])
143
- Flapjack::Data::Contact.should_receive(:add).with(contacts['contacts'][0], :redis => redis)
142
+ expect(Flapjack::Data::Contact).to receive(:all).with(:redis => redis).and_return([existing])
143
+ expect(Flapjack::Data::Contact).to receive(:add).with(contacts['contacts'][0], :redis => redis)
144
144
 
145
145
  apost "/contacts", contacts.to_json, {'CONTENT_TYPE' => 'application/json'}
146
- last_response.status.should == 204
146
+ expect(last_response.status).to eq(204)
147
147
  end
148
148
 
149
149
  it "deletes a contact not found in a bulk update list" do
@@ -157,91 +157,91 @@ describe 'Flapjack::Gateways::API::ContactMethods', :sinatra => true, :logger =>
157
157
  }
158
158
 
159
159
  existing = double(Flapjack::Data::Contact)
160
- existing.should_receive(:id).twice.and_return("0362")
161
- existing.should_receive(:delete!)
160
+ expect(existing).to receive(:id).twice.and_return("0362")
161
+ expect(existing).to receive(:delete!)
162
162
 
163
- Flapjack::Data::Contact.should_receive(:all).with(:redis => redis).and_return([existing])
164
- Flapjack::Data::Contact.should_receive(:add).with(contacts['contacts'][0], :redis => redis)
163
+ expect(Flapjack::Data::Contact).to receive(:all).with(:redis => redis).and_return([existing])
164
+ expect(Flapjack::Data::Contact).to receive(:add).with(contacts['contacts'][0], :redis => redis)
165
165
 
166
166
  apost "/contacts", contacts.to_json, {'CONTENT_TYPE' => 'application/json'}
167
- last_response.status.should == 204
167
+ expect(last_response.status).to eq(204)
168
168
  end
169
169
 
170
170
  it "returns all the contacts" do
171
- contact.should_receive(:to_json).and_return(contact_core.to_json)
172
- Flapjack::Data::Contact.should_receive(:all).with(:redis => redis).
171
+ expect(contact).to receive(:to_json).and_return(contact_core.to_json)
172
+ expect(Flapjack::Data::Contact).to receive(:all).with(:redis => redis).
173
173
  and_return([contact])
174
174
 
175
175
  aget '/contacts'
176
- last_response.should be_ok
177
- last_response.body.should be_json_eql([contact_core].to_json)
176
+ expect(last_response).to be_ok
177
+ expect(last_response.body).to eq([contact_core].to_json)
178
178
  end
179
179
 
180
180
  it "returns the core information of a specified contact" do
181
- contact.should_receive(:to_json).and_return(contact_core.to_json)
182
- Flapjack::Data::Contact.should_receive(:find_by_id).
181
+ expect(contact).to receive(:to_json).and_return(contact_core.to_json)
182
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
183
183
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(contact)
184
184
 
185
185
  aget "/contacts/#{contact.id}"
186
- last_response.should be_ok
187
- last_response.body.should be_json_eql(contact_core.to_json)
186
+ expect(last_response).to be_ok
187
+ expect(last_response.body).to eq(contact_core.to_json)
188
188
  end
189
189
 
190
190
  it "does not return information for a contact that does not exist" do
191
- Flapjack::Data::Contact.should_receive(:find_by_id).
191
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
192
192
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(nil)
193
193
 
194
194
  aget "/contacts/#{contact.id}"
195
- last_response.should be_forbidden
195
+ expect(last_response).to be_forbidden
196
196
  end
197
197
 
198
198
  it "lists a contact's notification rules" do
199
199
  notification_rule_2 = double(Flapjack::Data::NotificationRule, :id => '2', :contact_id => '21')
200
- notification_rule.should_receive(:to_json).and_return('"rule_1"')
201
- notification_rule_2.should_receive(:to_json).and_return('"rule_2"')
200
+ expect(notification_rule).to receive(:to_json).and_return('"rule_1"')
201
+ expect(notification_rule_2).to receive(:to_json).and_return('"rule_2"')
202
202
  notification_rules = [ notification_rule, notification_rule_2 ]
203
203
 
204
- contact.should_receive(:notification_rules).and_return(notification_rules)
205
- Flapjack::Data::Contact.should_receive(:find_by_id).
204
+ expect(contact).to receive(:notification_rules).and_return(notification_rules)
205
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
206
206
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(contact)
207
207
 
208
208
  aget "/contacts/#{contact.id}/notification_rules"
209
- last_response.should be_ok
210
- last_response.body.should be_json_eql( '["rule_1", "rule_2"]' )
209
+ expect(last_response).to be_ok
210
+ expect(last_response.body).to eq('["rule_1","rule_2"]')
211
211
  end
212
212
 
213
213
  it "does not list notification rules for a contact that does not exist" do
214
- Flapjack::Data::Contact.should_receive(:find_by_id).
214
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
215
215
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(nil)
216
216
 
217
217
  aget "/contacts/#{contact.id}/notification_rules"
218
- last_response.should be_forbidden
218
+ expect(last_response).to be_forbidden
219
219
  end
220
220
 
221
221
  it "returns a specified notification rule" do
222
- notification_rule.should_receive(:to_json).and_return('"rule_1"')
223
- Flapjack::Data::NotificationRule.should_receive(:find_by_id).
222
+ expect(notification_rule).to receive(:to_json).and_return('"rule_1"')
223
+ expect(Flapjack::Data::NotificationRule).to receive(:find_by_id).
224
224
  with(notification_rule.id, {:redis => redis, :logger => @logger}).and_return(notification_rule)
225
225
 
226
226
  aget "/notification_rules/#{notification_rule.id}"
227
- last_response.should be_ok
228
- last_response.body.should be_json_eql('"rule_1"')
227
+ expect(last_response).to be_ok
228
+ expect(last_response.body).to eq('"rule_1"')
229
229
  end
230
230
 
231
231
  it "does not return a notification rule that does not exist" do
232
- Flapjack::Data::NotificationRule.should_receive(:find_by_id).
232
+ expect(Flapjack::Data::NotificationRule).to receive(:find_by_id).
233
233
  with(notification_rule.id, {:redis => redis, :logger => @logger}).and_return(nil)
234
234
 
235
235
  aget "/notification_rules/#{notification_rule.id}"
236
- last_response.should be_forbidden
236
+ expect(last_response).to be_forbidden
237
237
  end
238
238
 
239
239
  # POST /notification_rules
240
240
  it "creates a new notification rule" do
241
- Flapjack::Data::Contact.should_receive(:find_by_id).
241
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
242
242
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(contact)
243
- notification_rule.should_receive(:respond_to?).with(:critical_media).and_return(true)
244
- notification_rule.should_receive(:to_json).and_return('"rule_1"')
243
+ expect(notification_rule).to receive(:respond_to?).with(:critical_media).and_return(true)
244
+ expect(notification_rule).to receive(:to_json).and_return('"rule_1"')
245
245
 
246
246
  # symbolize the keys
247
247
  notification_rule_data_sym = notification_rule_data.inject({}){|memo,(k,v)|
@@ -249,38 +249,38 @@ describe 'Flapjack::Gateways::API::ContactMethods', :sinatra => true, :logger =>
249
249
  }
250
250
  notification_rule_data_sym.delete(:contact_id)
251
251
 
252
- contact.should_receive(:add_notification_rule).
252
+ expect(contact).to receive(:add_notification_rule).
253
253
  with(notification_rule_data_sym, :logger => @logger).and_return(notification_rule)
254
254
 
255
255
  apost "/notification_rules", notification_rule_data.to_json,
256
256
  {'CONTENT_TYPE' => 'application/json'}
257
- last_response.should be_ok
258
- last_response.body.should be_json_eql('"rule_1"')
257
+ expect(last_response).to be_ok
258
+ expect(last_response.body).to eq('"rule_1"')
259
259
  end
260
260
 
261
261
  it "does not create a notification_rule for a contact that's not present" do
262
- Flapjack::Data::Contact.should_receive(:find_by_id).
262
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
263
263
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(nil)
264
264
 
265
265
  apost "/notification_rules", notification_rule_data.to_json,
266
266
  {'CONTENT_TYPE' => 'application/json'}
267
- last_response.should be_forbidden
267
+ expect(last_response).to be_forbidden
268
268
  end
269
269
 
270
270
  it "does not create a notification_rule if a rule id is provided" do
271
- contact.should_not_receive(:add_notification_rule)
271
+ expect(contact).not_to receive(:add_notification_rule)
272
272
 
273
273
  apost "/notification_rules", notification_rule_data.merge(:id => 1).to_json,
274
274
  {'CONTENT_TYPE' => 'application/json'}
275
- last_response.status.should == 403
275
+ expect(last_response.status).to eq(403)
276
276
  end
277
277
 
278
278
  # PUT /notification_rules/RULE_ID
279
279
  it "updates a notification rule" do
280
- Flapjack::Data::Contact.should_receive(:find_by_id).
280
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
281
281
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(contact)
282
- notification_rule.should_receive(:to_json).and_return('"rule_1"')
283
- Flapjack::Data::NotificationRule.should_receive(:find_by_id).
282
+ expect(notification_rule).to receive(:to_json).and_return('"rule_1"')
283
+ expect(Flapjack::Data::NotificationRule).to receive(:find_by_id).
284
284
  with(notification_rule.id, {:redis => redis, :logger => @logger}).and_return(notification_rule)
285
285
 
286
286
  # symbolize the keys
@@ -289,71 +289,71 @@ describe 'Flapjack::Gateways::API::ContactMethods', :sinatra => true, :logger =>
289
289
  }
290
290
  notification_rule_data_sym.delete(:contact_id)
291
291
 
292
- notification_rule.should_receive(:update).with(notification_rule_data_sym, :logger => @logger).and_return(nil)
292
+ expect(notification_rule).to receive(:update).with(notification_rule_data_sym, :logger => @logger).and_return(nil)
293
293
 
294
294
  aput "/notification_rules/#{notification_rule.id}", notification_rule_data.to_json,
295
295
  {'CONTENT_TYPE' => 'application/json'}
296
- last_response.should be_ok
297
- last_response.body.should be_json_eql('"rule_1"')
296
+ expect(last_response).to be_ok
297
+ expect(last_response.body).to eq('"rule_1"')
298
298
  end
299
299
 
300
300
  it "does not update a notification rule that's not present" do
301
- Flapjack::Data::NotificationRule.should_receive(:find_by_id).
301
+ expect(Flapjack::Data::NotificationRule).to receive(:find_by_id).
302
302
  with(notification_rule.id, {:redis => redis, :logger => @logger}).and_return(nil)
303
303
 
304
304
  aput "/notification_rules/#{notification_rule.id}", notification_rule_data
305
- last_response.should be_forbidden
305
+ expect(last_response).to be_forbidden
306
306
  end
307
307
 
308
308
  it "does not update a notification_rule for a contact that's not present" do
309
- Flapjack::Data::NotificationRule.should_receive(:find_by_id).
309
+ expect(Flapjack::Data::NotificationRule).to receive(:find_by_id).
310
310
  with(notification_rule.id, {:redis => redis, :logger => @logger}).and_return(notification_rule)
311
- Flapjack::Data::Contact.should_receive(:find_by_id).
311
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
312
312
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(nil)
313
313
 
314
314
  aput "/notification_rules/#{notification_rule.id}", notification_rule_data.to_json,
315
315
  {'CONTENT_TYPE' => 'application/json'}
316
- last_response.should be_forbidden
316
+ expect(last_response).to be_forbidden
317
317
  end
318
318
 
319
319
  # DELETE /notification_rules/RULE_ID
320
320
  it "deletes a notification rule" do
321
- notification_rule.should_receive(:contact_id).and_return(contact.id)
322
- Flapjack::Data::NotificationRule.should_receive(:find_by_id).
321
+ expect(notification_rule).to receive(:contact_id).and_return(contact.id)
322
+ expect(Flapjack::Data::NotificationRule).to receive(:find_by_id).
323
323
  with(notification_rule.id, {:redis => redis, :logger => @logger}).and_return(notification_rule)
324
- contact.should_receive(:delete_notification_rule).with(notification_rule)
325
- Flapjack::Data::Contact.should_receive(:find_by_id).
324
+ expect(contact).to receive(:delete_notification_rule).with(notification_rule)
325
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
326
326
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(contact)
327
327
 
328
328
  adelete "/notification_rules/#{notification_rule.id}"
329
- last_response.status.should == 204
329
+ expect(last_response.status).to eq(204)
330
330
  end
331
331
 
332
332
  it "does not delete a notification rule that's not present" do
333
- Flapjack::Data::NotificationRule.should_receive(:find_by_id).
333
+ expect(Flapjack::Data::NotificationRule).to receive(:find_by_id).
334
334
  with(notification_rule.id, {:redis => redis, :logger => @logger}).and_return(nil)
335
335
 
336
336
  adelete "/notification_rules/#{notification_rule.id}"
337
- last_response.should be_forbidden
337
+ expect(last_response).to be_forbidden
338
338
  end
339
339
 
340
340
  it "does not delete a notification rule if the contact is not present" do
341
- notification_rule.should_receive(:contact_id).and_return(contact.id)
342
- Flapjack::Data::NotificationRule.should_receive(:find_by_id).
341
+ expect(notification_rule).to receive(:contact_id).and_return(contact.id)
342
+ expect(Flapjack::Data::NotificationRule).to receive(:find_by_id).
343
343
  with(notification_rule.id, {:redis => redis, :logger => @logger}).and_return(notification_rule)
344
- Flapjack::Data::Contact.should_receive(:find_by_id).
344
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
345
345
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(nil)
346
346
 
347
347
  adelete "/notification_rules/#{notification_rule.id}"
348
- last_response.should be_forbidden
348
+ expect(last_response).to be_forbidden
349
349
  end
350
350
 
351
351
  # GET /contacts/CONTACT_ID/media
352
352
  it "returns the media of a contact" do
353
- contact.should_receive(:media).and_return(media)
354
- contact.should_receive(:media_intervals).and_return(media_intervals)
355
- contact.should_receive(:media_rollup_thresholds).and_return(media_rollup_thresholds)
356
- Flapjack::Data::Contact.should_receive(:find_by_id).
353
+ expect(contact).to receive(:media).and_return(media)
354
+ expect(contact).to receive(:media_intervals).and_return(media_intervals)
355
+ expect(contact).to receive(:media_rollup_thresholds).and_return(media_rollup_thresholds)
356
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
357
357
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(contact)
358
358
  result = Hash[ *(media.keys.collect {|m|
359
359
  [m, {'address' => media[m],
@@ -362,24 +362,24 @@ describe 'Flapjack::Gateways::API::ContactMethods', :sinatra => true, :logger =>
362
362
  }).flatten(1)].to_json
363
363
 
364
364
  aget "/contacts/#{contact.id}/media"
365
- last_response.should be_ok
366
- last_response.body.should be_json_eql(result)
365
+ expect(last_response).to be_ok
366
+ expect(last_response.body).to eq(result)
367
367
  end
368
368
 
369
369
  it "does not return the media of a contact if the contact is not present" do
370
- Flapjack::Data::Contact.should_receive(:find_by_id).
370
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
371
371
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(nil)
372
372
 
373
373
  aget "/contacts/#{contact.id}/media"
374
- last_response.should be_forbidden
374
+ expect(last_response).to be_forbidden
375
375
  end
376
376
 
377
377
  # GET /contacts/CONTACT_ID/media/MEDIA
378
378
  it "returns the specified media of a contact" do
379
- contact.should_receive(:media).and_return(media)
380
- contact.should_receive(:media_intervals).and_return(media_intervals)
381
- contact.should_receive(:media_rollup_thresholds).and_return(media_rollup_thresholds)
382
- Flapjack::Data::Contact.should_receive(:find_by_id).
379
+ expect(contact).to receive(:media).and_return(media)
380
+ expect(contact).to receive(:media_intervals).and_return(media_intervals)
381
+ expect(contact).to receive(:media_rollup_thresholds).and_return(media_rollup_thresholds)
382
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
383
383
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(contact)
384
384
 
385
385
  result = {
@@ -389,25 +389,25 @@ describe 'Flapjack::Gateways::API::ContactMethods', :sinatra => true, :logger =>
389
389
  }
390
390
 
391
391
  aget "/contacts/#{contact.id}/media/sms"
392
- last_response.should be_ok
393
- last_response.body.should be_json_eql(result.to_json)
392
+ expect(last_response).to be_ok
393
+ expect(last_response.body).to eq(result.to_json)
394
394
  end
395
395
 
396
396
  it "does not return the media of a contact if the contact is not present" do
397
- Flapjack::Data::Contact.should_receive(:find_by_id).
397
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
398
398
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(nil)
399
399
 
400
400
  aget "/contacts/#{contact.id}/media/sms"
401
- last_response.should be_forbidden
401
+ expect(last_response).to be_forbidden
402
402
  end
403
403
 
404
404
  it "does not return the media of a contact if the media is not present" do
405
- contact.should_receive(:media).and_return(media)
406
- Flapjack::Data::Contact.should_receive(:find_by_id).
405
+ expect(contact).to receive(:media).and_return(media)
406
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
407
407
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(contact)
408
408
 
409
409
  aget "/contacts/#{contact.id}/media/telepathy"
410
- last_response.should be_forbidden
410
+ expect(last_response).to be_forbidden
411
411
  end
412
412
 
413
413
  # PUT, DELETE /contacts/CONTACT_ID/media/MEDIA
@@ -418,13 +418,13 @@ describe 'Flapjack::Gateways::API::ContactMethods', :sinatra => true, :logger =>
418
418
  alt_media_intervals = media_intervals.merge('sms' => '200')
419
419
  alt_media_rollup_thresholds = media_rollup_thresholds.merge('sms' => '5')
420
420
 
421
- contact.should_receive(:set_address_for_media).with('sms', '04987654321')
422
- contact.should_receive(:set_interval_for_media).with('sms', '200')
423
- contact.should_receive(:set_rollup_threshold_for_media).with('sms', '5')
424
- contact.should_receive(:media).and_return(alt_media)
425
- contact.should_receive(:media_intervals).and_return(alt_media_intervals)
426
- contact.should_receive(:media_rollup_thresholds).and_return(alt_media_rollup_thresholds)
427
- Flapjack::Data::Contact.should_receive(:find_by_id).
421
+ expect(contact).to receive(:set_address_for_media).with('sms', '04987654321')
422
+ expect(contact).to receive(:set_interval_for_media).with('sms', '200')
423
+ expect(contact).to receive(:set_rollup_threshold_for_media).with('sms', '5')
424
+ expect(contact).to receive(:media).and_return(alt_media)
425
+ expect(contact).to receive(:media_intervals).and_return(alt_media_intervals)
426
+ expect(contact).to receive(:media_rollup_thresholds).and_return(alt_media_rollup_thresholds)
427
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
428
428
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(contact)
429
429
 
430
430
  result = {'address' => alt_media['sms'],
@@ -433,8 +433,8 @@ describe 'Flapjack::Gateways::API::ContactMethods', :sinatra => true, :logger =>
433
433
 
434
434
  aput "/contacts/#{contact.id}/media/sms", :address => '04987654321',
435
435
  :interval => '200', :rollup_threshold => '5'
436
- last_response.should be_ok
437
- last_response.body.should be_json_eql(result.to_json)
436
+ expect(last_response).to be_ok
437
+ expect(last_response.body).to eq(result.to_json)
438
438
  end
439
439
 
440
440
  it "updates a contact's pagerduty media credentials" do
@@ -443,33 +443,33 @@ describe 'Flapjack::Gateways::API::ContactMethods', :sinatra => true, :logger =>
443
443
  'username' => "sausage@example.com",
444
444
  'password' => "sausage"}
445
445
 
446
- contact.should_receive(:set_pagerduty_credentials).with(result)
447
- contact.should_receive(:pagerduty_credentials).and_return(result)
448
- Flapjack::Data::Contact.should_receive(:find_by_id).
446
+ expect(contact).to receive(:set_pagerduty_credentials).with(result)
447
+ expect(contact).to receive(:pagerduty_credentials).and_return(result)
448
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
449
449
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(contact)
450
450
 
451
451
  aput "/contacts/#{contact.id}/media/pagerduty", :service_key => result['service_key'],
452
452
  :subdomain => result['subdomain'], :username => result['username'],
453
453
  :password => result['password']
454
454
 
455
- last_response.should be_ok
456
- last_response.body.should be_json_eql(result.to_json)
455
+ expect(last_response).to be_ok
456
+ expect(last_response.body).to eq(result.to_json)
457
457
  end
458
458
 
459
459
  it "does not create a media of a contact that's not present" do
460
- Flapjack::Data::Contact.should_receive(:find_by_id).
460
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
461
461
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(nil)
462
462
 
463
463
  aput "/contacts/#{contact.id}/media/sms", :address => '04987654321', :interval => '200'
464
- last_response.should be_forbidden
464
+ expect(last_response).to be_forbidden
465
465
  end
466
466
 
467
467
  it "does not create a media of a contact if no address is provided" do
468
- Flapjack::Data::Contact.should_receive(:find_by_id).
468
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
469
469
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(contact)
470
470
 
471
471
  aput "/contacts/#{contact.id}/media/sms", :interval => '200'
472
- last_response.should be_forbidden
472
+ expect(last_response).to be_forbidden
473
473
  end
474
474
 
475
475
  it "creates a media of a contact even if no interval is provided" do
@@ -477,270 +477,270 @@ describe 'Flapjack::Gateways::API::ContactMethods', :sinatra => true, :logger =>
477
477
  alt_media_intervals = media_intervals.merge('sms' => nil)
478
478
  alt_media_rollup_thresholds = media_rollup_thresholds.merge('sms' => nil)
479
479
 
480
- contact.should_receive(:set_address_for_media).with('sms', '04987654321')
481
- contact.should_receive(:set_interval_for_media).with('sms', nil)
482
- contact.should_receive(:set_rollup_threshold_for_media).with("sms", nil)
483
- contact.should_receive(:media).and_return(alt_media)
484
- contact.should_receive(:media_intervals).and_return(alt_media_intervals)
485
- contact.should_receive(:media_rollup_thresholds).and_return(alt_media_rollup_thresholds)
486
- Flapjack::Data::Contact.should_receive(:find_by_id).
480
+ expect(contact).to receive(:set_address_for_media).with('sms', '04987654321')
481
+ expect(contact).to receive(:set_interval_for_media).with('sms', nil)
482
+ expect(contact).to receive(:set_rollup_threshold_for_media).with("sms", nil)
483
+ expect(contact).to receive(:media).and_return(alt_media)
484
+ expect(contact).to receive(:media_intervals).and_return(alt_media_intervals)
485
+ expect(contact).to receive(:media_rollup_thresholds).and_return(alt_media_rollup_thresholds)
486
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
487
487
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(contact)
488
488
 
489
489
  aput "/contacts/#{contact.id}/media/sms", :address => '04987654321'
490
- last_response.should be_ok
490
+ expect(last_response).to be_ok
491
491
  end
492
492
 
493
493
  it "deletes a media of a contact" do
494
- contact.should_receive(:remove_media).with('sms')
495
- Flapjack::Data::Contact.should_receive(:find_by_id).
494
+ expect(contact).to receive(:remove_media).with('sms')
495
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
496
496
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(contact)
497
497
 
498
498
  adelete "/contacts/#{contact.id}/media/sms"
499
- last_response.status.should == 204
499
+ expect(last_response.status).to eq(204)
500
500
  end
501
501
 
502
502
  it "does not delete a media of a contact that's not present" do
503
- Flapjack::Data::Contact.should_receive(:find_by_id).
503
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
504
504
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(nil)
505
505
 
506
506
  adelete "/contacts/#{contact.id}/media/sms"
507
- last_response.should be_forbidden
507
+ expect(last_response).to be_forbidden
508
508
  end
509
509
 
510
510
  # GET /contacts/CONTACT_ID/timezone
511
511
  it "returns the timezone of a contact" do
512
- contact.should_receive(:timezone).and_return(::ActiveSupport::TimeZone.new('Australia/Sydney'))
513
- Flapjack::Data::Contact.should_receive(:find_by_id).
512
+ expect(contact).to receive(:timezone).and_return(::ActiveSupport::TimeZone.new('Australia/Sydney'))
513
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
514
514
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(contact)
515
515
 
516
516
  aget "/contacts/#{contact.id}/timezone"
517
- last_response.should be_ok
518
- last_response.body.should be_json_eql('"Australia/Sydney"')
517
+ expect(last_response).to be_ok
518
+ expect(last_response.body).to eq('"Australia/Sydney"')
519
519
  end
520
520
 
521
521
  it "doesn't get the timezone of a contact that doesn't exist" do
522
- Flapjack::Data::Contact.should_receive(:find_by_id).
522
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
523
523
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(nil)
524
524
 
525
525
  aget "/contacts/#{contact.id}/timezone"
526
- last_response.should be_forbidden
526
+ expect(last_response).to be_forbidden
527
527
  end
528
528
 
529
529
  # PUT /contacts/CONTACT_ID/timezone
530
530
  it "sets the timezone of a contact" do
531
- contact.should_receive(:timezone=).with('Australia/Perth')
532
- contact.should_receive(:timezone).and_return(ActiveSupport::TimeZone.new('Australia/Perth'))
533
- Flapjack::Data::Contact.should_receive(:find_by_id).
531
+ expect(contact).to receive(:timezone=).with('Australia/Perth')
532
+ expect(contact).to receive(:timezone).and_return(ActiveSupport::TimeZone.new('Australia/Perth'))
533
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
534
534
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(contact)
535
535
 
536
536
  aput "/contacts/#{contact.id}/timezone", {:timezone => 'Australia/Perth'}
537
- last_response.should be_ok
537
+ expect(last_response).to be_ok
538
538
  end
539
539
 
540
540
  it "doesn't set the timezone of a contact who can't be found" do
541
- Flapjack::Data::Contact.should_receive(:find_by_id).
541
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
542
542
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(nil)
543
543
 
544
544
  aput "/contacts/#{contact.id}/timezone", {:timezone => 'Australia/Perth'}
545
- last_response.should be_forbidden
545
+ expect(last_response).to be_forbidden
546
546
  end
547
547
 
548
548
  # DELETE /contacts/CONTACT_ID/timezone
549
549
  it "deletes the timezone of a contact" do
550
- contact.should_receive(:timezone=).with(nil)
551
- Flapjack::Data::Contact.should_receive(:find_by_id).
550
+ expect(contact).to receive(:timezone=).with(nil)
551
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
552
552
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(contact)
553
553
 
554
554
  adelete "/contacts/#{contact.id}/timezone"
555
- last_response.status.should == 204
555
+ expect(last_response.status).to eq(204)
556
556
  end
557
557
 
558
558
  it "does not delete the timezone of a contact that's not present" do
559
- Flapjack::Data::Contact.should_receive(:find_by_id).
559
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
560
560
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(nil)
561
561
 
562
562
  adelete "/contacts/#{contact.id}/timezone"
563
- last_response.should be_forbidden
563
+ expect(last_response).to be_forbidden
564
564
  end
565
565
 
566
566
  it "sets a single tag on a contact and returns current tags" do
567
- contact.should_receive(:add_tags).with('web')
568
- contact.should_receive(:tags).and_return(['web'])
569
- Flapjack::Data::Contact.should_receive(:find_by_id).
567
+ expect(contact).to receive(:add_tags).with('web')
568
+ expect(contact).to receive(:tags).and_return(['web'])
569
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
570
570
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(contact)
571
571
 
572
572
  apost "contacts/#{contact.id}/tags", :tag => 'web'
573
- last_response.should be_ok
574
- last_response.body.should be_json_eql( ['web'].to_json )
573
+ expect(last_response).to be_ok
574
+ expect(last_response.body).to eq(['web'].to_json)
575
575
  end
576
576
 
577
577
  it "does not set a single tag on a contact that's not found" do
578
- Flapjack::Data::Contact.should_receive(:find_by_id).
578
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
579
579
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(nil)
580
580
 
581
581
  apost "contacts/#{contact.id}/tags", :tag => 'web'
582
- last_response.should be_forbidden
582
+ expect(last_response).to be_forbidden
583
583
  end
584
584
 
585
585
  it "sets multiple tags on a contact and returns current tags" do
586
- contact.should_receive(:add_tags).with('web', 'app')
587
- contact.should_receive(:tags).and_return(['web', 'app'])
588
- Flapjack::Data::Contact.should_receive(:find_by_id).
586
+ expect(contact).to receive(:add_tags).with('web', 'app')
587
+ expect(contact).to receive(:tags).and_return(['web', 'app'])
588
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
589
589
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(contact)
590
590
 
591
591
  apost "contacts/#{contact.id}/tags", :tag => ['web', 'app']
592
- last_response.should be_ok
593
- last_response.body.should be_json_eql( ['web', 'app'].to_json )
592
+ expect(last_response).to be_ok
593
+ expect(last_response.body).to eq(['web', 'app'].to_json)
594
594
  end
595
595
 
596
596
  it "does not set multiple tags on a contact that's not found" do
597
- Flapjack::Data::Contact.should_receive(:find_by_id).
597
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
598
598
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(nil)
599
599
 
600
600
  apost "contacts/#{contact.id}/tags", :tag => ['web', 'app']
601
- last_response.should be_forbidden
601
+ expect(last_response).to be_forbidden
602
602
  end
603
603
 
604
604
  it "removes a single tag from a contact" do
605
- contact.should_receive(:delete_tags).with('web')
606
- Flapjack::Data::Contact.should_receive(:find_by_id).
605
+ expect(contact).to receive(:delete_tags).with('web')
606
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
607
607
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(contact)
608
608
 
609
609
  adelete "contacts/#{contact.id}/tags", :tag => 'web'
610
- last_response.status.should == 204
610
+ expect(last_response.status).to eq(204)
611
611
  end
612
612
 
613
613
  it "does not remove a single tag from a contact that's not found" do
614
- Flapjack::Data::Contact.should_receive(:find_by_id).
614
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
615
615
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(nil)
616
616
 
617
617
  adelete "contacts/#{contact.id}/tags", :tag => 'web'
618
- last_response.should be_forbidden
618
+ expect(last_response).to be_forbidden
619
619
  end
620
620
 
621
621
  it "removes multiple tags from a contact" do
622
- contact.should_receive(:delete_tags).with('web', 'app')
623
- Flapjack::Data::Contact.should_receive(:find_by_id).
622
+ expect(contact).to receive(:delete_tags).with('web', 'app')
623
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
624
624
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(contact)
625
625
 
626
626
  adelete "contacts/#{contact.id}/tags", :tag => ['web', 'app']
627
- last_response.status.should == 204
627
+ expect(last_response.status).to eq(204)
628
628
  end
629
629
 
630
630
  it "does not remove multiple tags from a contact that's not found" do
631
- Flapjack::Data::Contact.should_receive(:find_by_id).
631
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
632
632
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(nil)
633
633
 
634
634
  adelete "contacts/#{contact.id}/tags", :tag => ['web', 'app']
635
- last_response.should be_forbidden
635
+ expect(last_response).to be_forbidden
636
636
  end
637
637
 
638
638
  it "gets all tags on a contact" do
639
- contact.should_receive(:tags).and_return(['web', 'app'])
640
- Flapjack::Data::Contact.should_receive(:find_by_id).
639
+ expect(contact).to receive(:tags).and_return(['web', 'app'])
640
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
641
641
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(contact)
642
642
 
643
643
  aget "contacts/#{contact.id}/tags"
644
- last_response.should be_ok
645
- last_response.body.should be_json_eql( ['web', 'app'].to_json )
644
+ expect(last_response).to be_ok
645
+ expect(last_response.body).to eq(['web', 'app'].to_json)
646
646
  end
647
647
 
648
648
  it "does not get all tags on a contact that's not found" do
649
- Flapjack::Data::Contact.should_receive(:find_by_id).
649
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
650
650
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(nil)
651
651
 
652
652
  aget "contacts/#{contact.id}/tags"
653
- last_response.should be_forbidden
653
+ expect(last_response).to be_forbidden
654
654
  end
655
655
 
656
656
  it "gets all entity tags for a contact" do
657
657
  entity_1 = double(Flapjack::Data::Entity)
658
- entity_1.should_receive(:name).and_return('entity_1')
658
+ expect(entity_1).to receive(:name).and_return('entity_1')
659
659
  entity_2 = double(Flapjack::Data::Entity)
660
- entity_2.should_receive(:name).and_return('entity_2')
660
+ expect(entity_2).to receive(:name).and_return('entity_2')
661
661
  tag_data = [{:entity => entity_1, :tags => ['web']},
662
662
  {:entity => entity_2, :tags => ['app']}]
663
- contact.should_receive(:entities).with(:tags => true).
663
+ expect(contact).to receive(:entities).with(:tags => true).
664
664
  and_return(tag_data)
665
665
 
666
- Flapjack::Data::Contact.should_receive(:find_by_id).
666
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
667
667
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(contact)
668
668
 
669
669
  aget "contacts/#{contact.id}/entity_tags"
670
- last_response.should be_ok
670
+ expect(last_response).to be_ok
671
671
  tag_response = {'entity_1' => ['web'],
672
672
  'entity_2' => ['app']}
673
- last_response.body.should be_json_eql( tag_response.to_json )
673
+ expect(last_response.body).to eq(tag_response.to_json)
674
674
  end
675
675
 
676
676
  it "does not get all entity tags for a contact that's not found" do
677
- Flapjack::Data::Contact.should_receive(:find_by_id).
677
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
678
678
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(nil)
679
679
 
680
680
  aget "contacts/#{contact.id}/entity_tags"
681
- last_response.should be_forbidden
681
+ expect(last_response).to be_forbidden
682
682
  end
683
683
 
684
684
  it "adds tags to multiple entities for a contact" do
685
685
  entity_1 = double(Flapjack::Data::Entity)
686
- entity_1.should_receive(:name).twice.and_return('entity_1')
687
- entity_1.should_receive(:add_tags).with('web')
686
+ expect(entity_1).to receive(:name).twice.and_return('entity_1')
687
+ expect(entity_1).to receive(:add_tags).with('web')
688
688
  entity_2 = double(Flapjack::Data::Entity)
689
- entity_2.should_receive(:name).twice.and_return('entity_2')
690
- entity_2.should_receive(:add_tags).with('app')
689
+ expect(entity_2).to receive(:name).twice.and_return('entity_2')
690
+ expect(entity_2).to receive(:add_tags).with('app')
691
691
 
692
692
  entities = [{:entity => entity_1}, {:entity => entity_2}]
693
- contact.should_receive(:entities).and_return(entities)
693
+ expect(contact).to receive(:entities).and_return(entities)
694
694
  tag_data = [{:entity => entity_1, :tags => ['web']},
695
695
  {:entity => entity_2, :tags => ['app']}]
696
- contact.should_receive(:entities).with(:tags => true).and_return(tag_data)
696
+ expect(contact).to receive(:entities).with(:tags => true).and_return(tag_data)
697
697
 
698
- Flapjack::Data::Contact.should_receive(:find_by_id).
698
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
699
699
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(contact)
700
700
 
701
701
  apost "contacts/#{contact.id}/entity_tags",
702
702
  :entity => {'entity_1' => ['web'], 'entity_2' => ['app']}
703
- last_response.should be_ok
703
+ expect(last_response).to be_ok
704
704
  tag_response = {'entity_1' => ['web'],
705
705
  'entity_2' => ['app']}
706
- last_response.body.should be_json_eql( tag_response.to_json )
706
+ expect(last_response.body).to eq(tag_response.to_json)
707
707
  end
708
708
 
709
709
  it "does not add tags to multiple entities for a contact that's not found" do
710
- Flapjack::Data::Contact.should_receive(:find_by_id).
710
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
711
711
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(nil)
712
712
 
713
713
  apost "contacts/#{contact.id}/entity_tags",
714
714
  :entity => {'entity_1' => ['web'], 'entity_2' => ['app']}
715
- last_response.should be_forbidden
715
+ expect(last_response).to be_forbidden
716
716
  end
717
717
 
718
718
  it "deletes tags from multiple entities for a contact" do
719
719
  entity_1 = double(Flapjack::Data::Entity)
720
- entity_1.should_receive(:name).and_return('entity_1')
721
- entity_1.should_receive(:delete_tags).with('web')
720
+ expect(entity_1).to receive(:name).and_return('entity_1')
721
+ expect(entity_1).to receive(:delete_tags).with('web')
722
722
  entity_2 = double(Flapjack::Data::Entity)
723
- entity_2.should_receive(:name).and_return('entity_2')
724
- entity_2.should_receive(:delete_tags).with('app')
723
+ expect(entity_2).to receive(:name).and_return('entity_2')
724
+ expect(entity_2).to receive(:delete_tags).with('app')
725
725
 
726
726
  entities = [{:entity => entity_1}, {:entity => entity_2}]
727
- contact.should_receive(:entities).and_return(entities)
727
+ expect(contact).to receive(:entities).and_return(entities)
728
728
 
729
- Flapjack::Data::Contact.should_receive(:find_by_id).
729
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
730
730
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(contact)
731
731
 
732
732
  adelete "contacts/#{contact.id}/entity_tags",
733
733
  :entity => {'entity_1' => ['web'], 'entity_2' => ['app']}
734
- last_response.status.should == 204
734
+ expect(last_response.status).to eq(204)
735
735
  end
736
736
 
737
737
  it "does not delete tags from multiple entities for a contact that's not found" do
738
- Flapjack::Data::Contact.should_receive(:find_by_id).
738
+ expect(Flapjack::Data::Contact).to receive(:find_by_id).
739
739
  with(contact.id, {:redis => redis, :logger => @logger}).and_return(nil)
740
740
 
741
741
  adelete "contacts/#{contact.id}/entity_tags",
742
742
  :entity => {'entity_1' => ['web'], 'entity_2' => ['app']}
743
- last_response.should be_forbidden
743
+ expect(last_response).to be_forbidden
744
744
  end
745
745
 
746
746