smoke_detector 1.0.0 → 1.1.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/README.md +16 -5
- data/lib/smoke_detector/providers/provider.rb +5 -0
- data/lib/smoke_detector/providers/rollbar.rb +25 -16
- data/lib/smoke_detector/version.rb +1 -1
- data/spec/dummy/log/test.log +14938 -2201
- data/spec/models/providers/rollbar_spec.rb +35 -1
- data/spec/requests/middleware/javascript_monitors_spec.rb +47 -10
- metadata +25 -11
@@ -1,7 +1,8 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe SmokeDetector::Providers::Rollbar do
|
4
|
-
let(:provider) { SmokeDetector::Providers::Rollbar.new('api_key',
|
4
|
+
let(:provider) { SmokeDetector::Providers::Rollbar.new('api_key', client_settings, settings) }
|
5
|
+
let(:client_settings) { nil }
|
5
6
|
let(:settings) { {} }
|
6
7
|
let(:err) { StandardError.new('error') }
|
7
8
|
let(:data) { {custom: :data} }
|
@@ -91,4 +92,37 @@ describe SmokeDetector::Providers::Rollbar do
|
|
91
92
|
end
|
92
93
|
end
|
93
94
|
end
|
95
|
+
|
96
|
+
describe "#client_settings" do
|
97
|
+
let(:settings) { { environment: ::Rails.env } }
|
98
|
+
let(:client_api_key) { "client_api_key" }
|
99
|
+
let(:hostWhiteList) { %w(google.com yahoo.com aol.com) }
|
100
|
+
let(:ignoredMessages) { ["Hey, ignore this", "Ignore this too"] }
|
101
|
+
let(:personData) { { email: "yo@gabbagabba.limosine" } }
|
102
|
+
|
103
|
+
let(:client_settings) do
|
104
|
+
{
|
105
|
+
api_key: client_api_key,
|
106
|
+
hostWhiteList: hostWhiteList,
|
107
|
+
ignoredMessages: ignoredMessages,
|
108
|
+
payload: {
|
109
|
+
person: personData
|
110
|
+
}
|
111
|
+
}
|
112
|
+
end
|
113
|
+
|
114
|
+
subject { provider.client_settings }
|
115
|
+
|
116
|
+
it "merges default settings" do
|
117
|
+
expect(subject).to include(:payload)
|
118
|
+
expect(subject[:payload]).to include(:environment)
|
119
|
+
expect(subject[:payload][:environment]).to eq(::Rails.env)
|
120
|
+
end
|
121
|
+
|
122
|
+
it "includes configured client settings" do
|
123
|
+
expect(subject[:api_key]).to eq(client_api_key)
|
124
|
+
expect(subject[:hostWhiteList]).to eq(hostWhiteList)
|
125
|
+
expect(subject[:payload][:person]).to eq(personData)
|
126
|
+
end
|
127
|
+
end
|
94
128
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'nokogiri'
|
3
|
+
require 'jshintrb'
|
3
4
|
|
4
5
|
describe SmokeDetector::JavaScriptMonitors do
|
5
6
|
|
@@ -13,15 +14,33 @@ describe SmokeDetector::JavaScriptMonitors do
|
|
13
14
|
end
|
14
15
|
end
|
15
16
|
|
17
|
+
shared_examples "a page with a valid rollbar json config" do
|
18
|
+
it "has no errors" do
|
19
|
+
get '/widgets'
|
20
|
+
content = Nokogiri::HTML(response.body).css('head script:contains("_rollbarConfig")').children.first.to_s
|
21
|
+
errors = Jshintrb.lint(content)
|
22
|
+
expect(errors).to be_empty
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
16
26
|
context 'with a Rollbar client API key configured' do
|
17
27
|
before do
|
18
|
-
SmokeDetector.register_provider(:rollbar, 'key', {api_key: 'client_key' })
|
28
|
+
SmokeDetector.register_provider(:rollbar, 'key', { api_key: 'client_key' })
|
19
29
|
end
|
20
30
|
|
21
31
|
it 'injects the Rollbar JS snippet into the <head>' do
|
22
32
|
get '/widgets'
|
23
33
|
expect(Nokogiri::HTML(response.body).css('head script:contains("_rollbarConfig")')).to_not be_empty
|
24
34
|
end
|
35
|
+
|
36
|
+
it "translates api_key to accessToken" do
|
37
|
+
get '/widgets'
|
38
|
+
rollbar_snippet = Nokogiri::HTML(response.body).css('head script:contains("_rollbarConfig")').children.first
|
39
|
+
position = /"accessToken":"client_key"/
|
40
|
+
expect(position).to_not be_nil
|
41
|
+
end
|
42
|
+
|
43
|
+
it_behaves_like "a page with a valid rollbar json config"
|
25
44
|
end
|
26
45
|
|
27
46
|
context 'without a Rollbar client API key configured' do
|
@@ -33,31 +52,42 @@ describe SmokeDetector::JavaScriptMonitors do
|
|
33
52
|
get '/widgets'
|
34
53
|
expect(Nokogiri::HTML(response.body).css('head script:contains("_rollbarConfig")')).to be_empty
|
35
54
|
end
|
55
|
+
|
56
|
+
it_behaves_like "a page with a valid rollbar json config"
|
36
57
|
end
|
37
58
|
|
38
59
|
context 'hostWhitelist' do
|
60
|
+
let(:client_settings) { { api_key: 'client_key', hostWhiteList: host_whitelist } }
|
61
|
+
|
39
62
|
before do
|
40
|
-
SmokeDetector.register_provider(:rollbar, 'key',
|
63
|
+
SmokeDetector.register_provider(:rollbar, 'key', client_settings)
|
41
64
|
end
|
42
65
|
|
43
66
|
shared_examples "a properly set hostWhiteList" do
|
44
67
|
it 'injects the Rollbar JS snippet into the <head>' do
|
45
68
|
get '/widgets'
|
46
|
-
rollbar_snippet = Nokogiri::HTML(response.body).css('head script:contains("_rollbarConfig")').children.first
|
69
|
+
rollbar_snippet = Nokogiri::HTML(response.body).css('head script:contains("_rollbarConfig")').children.first.to_s
|
47
70
|
expect(rollbar_snippet).to_not be_nil
|
48
71
|
end
|
49
72
|
|
50
73
|
it 'sets hostWhitelist' do
|
51
74
|
get '/widgets'
|
52
|
-
script_content = Nokogiri::HTML(response.body).css('head script:contains("_rollbarConfig")').children.first
|
53
|
-
position =
|
75
|
+
script_content = Nokogiri::HTML(response.body).css('head script:contains("_rollbarConfig")').children.first.to_s
|
76
|
+
position = /\"hostWhiteList\":#{Regexp.escape(host_whitelist.to_json)}/i =~ script_content
|
54
77
|
expect(position).to_not be_nil
|
55
78
|
end
|
79
|
+
|
80
|
+
it_behaves_like "a page with a valid rollbar json config"
|
56
81
|
end
|
57
82
|
|
58
83
|
context 'with hostWhitelist Rollbar client setting configured' do
|
59
|
-
let(:host_whitelist) { [
|
84
|
+
let(:host_whitelist) { ["example.com", "facebook.com"] }
|
60
85
|
it_behaves_like "a properly set hostWhiteList"
|
86
|
+
|
87
|
+
context 'with snake-case setting' do
|
88
|
+
let(:client_settings) { { api_key: 'client_key', host_whitelist: host_whitelist } }
|
89
|
+
it_behaves_like "a properly set hostWhiteList"
|
90
|
+
end
|
61
91
|
end
|
62
92
|
|
63
93
|
context 'with hostWhitelist Rollbar client setting unset' do
|
@@ -68,21 +98,28 @@ describe SmokeDetector::JavaScriptMonitors do
|
|
68
98
|
|
69
99
|
context 'ignoredMessages' do
|
70
100
|
before do
|
71
|
-
SmokeDetector.register_provider(:rollbar, 'key', {api_key: 'client_key',
|
101
|
+
SmokeDetector.register_provider(:rollbar, 'key', {api_key: 'client_key', ignoredMessages: ignored_messages})
|
72
102
|
end
|
73
103
|
|
74
104
|
shared_examples "a properly set ignoredMessages" do
|
75
105
|
it 'injects the Rollbar JS snippet into the <head> with ignoredMessages set' do
|
76
106
|
get '/widgets'
|
77
|
-
script_content = Nokogiri::HTML(response.body).css('head script:contains("_rollbarConfig")').children.first
|
78
|
-
position =
|
107
|
+
script_content = Nokogiri::HTML(response.body).css('head script:contains("_rollbarConfig")').children.first.to_s
|
108
|
+
position = /\"ignoredMessages\":#{Regexp.escape(ignored_messages.to_json)}/i =~ script_content
|
79
109
|
expect(position).to_not be_nil
|
80
110
|
end
|
111
|
+
|
112
|
+
it_behaves_like "a page with a valid rollbar json config"
|
81
113
|
end
|
82
114
|
|
83
115
|
context "with ignoredMessages Rollbar client setting configured" do
|
84
|
-
let(:ignored_messages) { [
|
116
|
+
let(:ignored_messages) { ["Error: Llamas are actually pretty cool.", "Exception: The jerkstore called, and they ran out of you."] }
|
85
117
|
it_behaves_like "a properly set ignoredMessages"
|
118
|
+
|
119
|
+
context 'with snake-case setting' do
|
120
|
+
let(:client_settings) { { api_key: 'client_key', ignored_messages: ignored_messages } }
|
121
|
+
it_behaves_like "a properly set ignoredMessages"
|
122
|
+
end
|
86
123
|
end
|
87
124
|
|
88
125
|
context 'with ignoredMessages Rollbar client setting unset' do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: smoke_detector
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Friedrich
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-10-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 1.0.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: jshintrb
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: nokogiri
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -172,20 +186,22 @@ executables: []
|
|
172
186
|
extensions: []
|
173
187
|
extra_rdoc_files: []
|
174
188
|
files:
|
189
|
+
- MIT-LICENSE
|
190
|
+
- README.md
|
191
|
+
- Rakefile
|
192
|
+
- lib/smoke_detector.rb
|
175
193
|
- lib/smoke_detector/controller_methods.rb
|
176
194
|
- lib/smoke_detector/engine.rb
|
177
195
|
- lib/smoke_detector/exceptions.rb
|
178
196
|
- lib/smoke_detector/middleware/javascript_monitors.rb
|
197
|
+
- lib/smoke_detector/providers.rb
|
179
198
|
- lib/smoke_detector/providers/airbrake.rb
|
180
199
|
- lib/smoke_detector/providers/provider.rb
|
181
200
|
- lib/smoke_detector/providers/rollbar.rb
|
182
|
-
- lib/smoke_detector/providers.rb
|
183
201
|
- lib/smoke_detector/version.rb
|
184
|
-
- lib/smoke_detector.rb
|
185
202
|
- lib/tasks/smoke_detector_tasks.rake
|
186
|
-
-
|
187
|
-
- Rakefile
|
188
|
-
- README.md
|
203
|
+
- spec/dummy/README.rdoc
|
204
|
+
- spec/dummy/Rakefile
|
189
205
|
- spec/dummy/app/assets/javascripts/application.js
|
190
206
|
- spec/dummy/app/assets/stylesheets/application.css
|
191
207
|
- spec/dummy/app/controllers/application_controller.rb
|
@@ -194,6 +210,7 @@ files:
|
|
194
210
|
- spec/dummy/app/models/widget.rb
|
195
211
|
- spec/dummy/app/views/layouts/application.html.erb
|
196
212
|
- spec/dummy/app/views/widgets/index.html.erb
|
213
|
+
- spec/dummy/config.ru
|
197
214
|
- spec/dummy/config/application.rb
|
198
215
|
- spec/dummy/config/boot.rb
|
199
216
|
- spec/dummy/config/database.yml
|
@@ -210,7 +227,6 @@ files:
|
|
210
227
|
- spec/dummy/config/initializers/wrap_parameters.rb
|
211
228
|
- spec/dummy/config/locales/en.yml
|
212
229
|
- spec/dummy/config/routes.rb
|
213
|
-
- spec/dummy/config.ru
|
214
230
|
- spec/dummy/db/schema.rb
|
215
231
|
- spec/dummy/db/test.sqlite3
|
216
232
|
- spec/dummy/log/test.log
|
@@ -218,8 +234,6 @@ files:
|
|
218
234
|
- spec/dummy/public/422.html
|
219
235
|
- spec/dummy/public/500.html
|
220
236
|
- spec/dummy/public/favicon.ico
|
221
|
-
- spec/dummy/Rakefile
|
222
|
-
- spec/dummy/README.rdoc
|
223
237
|
- spec/dummy/script/rails
|
224
238
|
- spec/models/providers/airbrake_spec.rb
|
225
239
|
- spec/models/providers/provider_spec.rb
|
@@ -252,7 +266,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
252
266
|
version: '0'
|
253
267
|
requirements: []
|
254
268
|
rubyforge_project:
|
255
|
-
rubygems_version: 2.
|
269
|
+
rubygems_version: 2.4.1
|
256
270
|
signing_key:
|
257
271
|
specification_version: 4
|
258
272
|
summary: Errors Alerts
|