exception_notification-squash_notifier 0.1.1.3 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2b71edc1bca114c09a3f718c18e31b0ad36f2454
4
- data.tar.gz: 2687ab743009ba8a776c7e3f9ab1dc64797e65fd
3
+ metadata.gz: 49df10a4b82e71ad0829544c5adeac202ab40884
4
+ data.tar.gz: 52715ca0a077f47f2c810b690b3a36e1ce778d8a
5
5
  SHA512:
6
- metadata.gz: 21b4fd84ae9c1fc2b5c4d847ace7355863d6d0d827b2c54b93b69ea889da0a50133f6696df1b55946727506abd30a7470f9aad7d35c05dc450d7c08e04db8fd7
7
- data.tar.gz: 64fec832378419250d23b5c99493268f08fcb37c807979b012a69525defbfee94808deab1e740382519e3c2fe3ab5677f30f7bc4e099aeccf5afb37cc9db7ffa
6
+ metadata.gz: f308ec8684dae55a9d353ea1c6229bdc5bce7b5fc0a8ffcf086fe5b73d233e7ede63c9a6f2c3f41ac2780f62fee3ab4be8dc9182bbe0a57bac8a4d6a22e24ef1
7
+ data.tar.gz: d320ce946935fc66341dc8d72514a144b4001cac4b2e26a4ddd2c3798f6d3c7e9b104e366bd56a5872deef7a3ec9dce1da7e70f5d83cf6b4827ee87242007b02
@@ -3,7 +3,7 @@ require "exception_notifier/squash_notifier/version"
3
3
  require "active_support/core_ext/module/attribute_accessors"
4
4
  require "exception_notifier"
5
5
 
6
- require "exception_notifier/squash_ruby"
6
+ require "exception_notifier/squash_ruby/ruby"
7
7
  # Extend class if you find Rails is being used:
8
8
  require 'exception_notifier/squash_ruby/rails' if defined? Rails
9
9
 
@@ -1,25 +1,17 @@
1
1
  module ExceptionNotifier
2
2
  class SquashNotifier
3
- # Factory class:
3
+ # Factory class
4
+
5
+ cattr_accessor :enable_rails
6
+ self.enable_rails = true
7
+
4
8
  def self.new(*args, &p)
5
- return SquashRailsNotifier.new(*args, &p) if defined? Rails
9
+ return SquashRailsNotifier.new(*args, &p) if self.enable_rails && defined? Rails
6
10
  SquashRubyNotifier.new(*args, &p)
7
11
  end
8
12
 
9
13
  class BaseNotifier
10
- cattr_accessor :whitelisted_env_vars
11
- # This accepts RegEx, so to not-whitelist, add an entry of /.*/
12
- self.whitelisted_env_vars = []
13
-
14
- def self.default_options
15
- {
16
- filter_env_vars: self.whitelist_env_filter
17
- }
18
- end
19
-
20
- def default_options
21
- self.class.default_options
22
- end
14
+ cattr_accessor :whitelisted_env_vars, :default_options
23
15
 
24
16
  def self.whitelist_env_filter
25
17
  # Remove any entries from the 'env' var that are not in the 'whitelisted_env_var' list
@@ -35,6 +27,13 @@ module ExceptionNotifier
35
27
  end
36
28
  end
37
29
 
30
+ # This accepts RegEx, so to not-whitelist, add an entry of /.*/
31
+ self.whitelisted_env_vars = []
32
+
33
+ self.default_options = {
34
+ filter_env_vars: self.whitelist_env_filter
35
+ }
36
+
38
37
  #####
39
38
 
40
39
  def initialize(options)
@@ -52,6 +52,8 @@ class ExceptionNotifier::SquashNotifier::SquashRailsNotifier < ExceptionNotifier
52
52
  end
53
53
 
54
54
  def occurence_data(request: nil, session: nil, rack_env: {})
55
+ fail "No 'request' supplied" unless request
56
+
55
57
  #TODO: Remove when done:
56
58
  # flash_key = defined?(ActionDispatch) ? ActionDispatch::Flash::KEY : 'flash'
57
59
 
@@ -1,5 +1,5 @@
1
1
  module ExceptionNotifier
2
2
  class SquashNotifier
3
- VERSION = "0.1.1.3"
3
+ VERSION = "0.1.2"
4
4
  end
5
5
  end
@@ -0,0 +1,5 @@
1
+ require 'spec_helper_rails'
2
+
3
+ describe ExceptionNotifier::SquashNotifier do
4
+ #pending { expect(true).to be(false) }
5
+ end
@@ -1,50 +1,58 @@
1
1
  require 'spec_helper'
2
2
 
3
- RSpec.shared_context "squash_ruby" do
4
- let(:squash_ruby) do
5
- class_double("Squash::Ruby").
6
- as_stubbed_const(:transfer_nested_constants => true)
3
+ RSpec.shared_context "squash_notifier_creation" do
4
+ let(:squash_notifier) { ExceptionNotifier.registered_exception_notifier(:squash) }
5
+
6
+ before(:context) do
7
+ @squash_config_options = {
8
+ api_host: 'https://no-such-host.noncom',
9
+ api_key: '00000000-0000-0000-0000-000000000000',
10
+ environment: 'development'
11
+ }
12
+
13
+ env = described_class.whitelisted_env_vars.map do |k|
14
+ k = k.to_s.sub(/^(\(.*:)(.*)(\))$/, '\2') if k.is_a? Regexp
15
+ [k.to_s, "val #{k}"]
16
+ end
17
+ @captured_env_vars = Hash[env]
18
+ end
19
+
20
+ describe "created directly" do
21
+ it "can create a #{described_class} from a const" do
22
+ expect(squash_ruby).to receive(:configure).with(
23
+ @squash_config_options.merge(filter_env_vars: duck_type(:call))
24
+ )
25
+ expect(squash_ruby).to receive(:configuration).with(:api_key).and_return(true)
26
+ expect(squash_ruby).to receive(:configure).with(disabled: false)
27
+ expect(ExceptionNotifier::SquashNotifier.new(@squash_config_options)).to be_an described_class
28
+ end
7
29
  end
8
30
  end
9
31
 
10
- describe ExceptionNotifier::SquashNotifier do
32
+ describe ExceptionNotifier::SquashNotifier::SquashRubyNotifier do
11
33
  include_context "squash_ruby"
12
34
 
13
- let(:squash_notifier) { ExceptionNotifier.registered_exception_notifier(:squash) }
35
+ around(:context) do |eg|
36
+ saved = ExceptionNotifier::SquashNotifier.enable_rails
37
+ ExceptionNotifier::SquashNotifier.enable_rails = false
14
38
 
15
- describe "with a valid instance" do
16
- before(:context) do
17
- @squash_config_options = {
18
- api_host: 'https://no-such-host.noncom',
19
- api_key: '00000000-0000-0000-0000-000000000000',
20
- environment: 'development'
21
- }
22
-
23
- env = ExceptionNotifier::SquashNotifier.whitelisted_env_vars.map do |k|
24
- k = k.to_s.sub(/^(\(.*:)(.*)(\))$/, '\2') if k.is_a? Regexp
25
- [k.to_s, "val #{k}"]
26
- end
27
- @captured_env_vars = Hash[env]
28
- end
39
+ eg.run
29
40
 
30
- describe "created directly" do
31
- it "can create a SquashNotifier from a const" do
32
- expect(squash_ruby).to receive(:configure).with(
33
- @squash_config_options.merge(filter_env_vars: duck_type(:call))
34
- )
35
- expect(squash_ruby).to receive(:configuration).with(:api_key).and_return(true)
36
- expect(squash_ruby).to receive(:configure).with(disabled: false)
37
- expect(ExceptionNotifier::SquashNotifier.new(@squash_config_options)).to be_an ExceptionNotifier::SquashNotifier
38
- end
41
+ ExceptionNotifier::SquashNotifier.enable_rails = saved
42
+ end
39
43
 
40
- end
44
+ describe "with a valid instance" do
45
+ include_context "squash_notifier_creation"
41
46
 
42
47
  describe "created via ExceptionNotifier" do
43
48
  around(:context) do |eg|
44
49
  ExceptionNotification.configure {|c| c.add_notifier :squash, @squash_config_options }
50
+
45
51
  eg.run
52
+
46
53
  ExceptionNotification.configure {|c| c.unregister_exception_notifier :squash }
47
54
  end
55
+
48
56
  let(:squash_notifier) { ExceptionNotifier.registered_exception_notifier(:squash) }
49
57
 
50
58
  #Time.stubs(:current).returns('Sat, 20 Apr 2013 20:58:55 UTC +00:00')
@@ -57,15 +65,19 @@ describe ExceptionNotifier::SquashNotifier do
57
65
  begin
58
66
  1/0
59
67
  rescue => e
60
- expect(squash_ruby).to receive(:notify).with(e, {})
68
+ expect(squash_ruby).to receive(:notify).with(e, {}).and_return(nil)
61
69
  ExceptionNotifier.notify_exception(e, {})
62
70
  end
63
71
  end
64
72
 
65
73
  context "whitelisting" do
74
+ it "should have a whitelisting filter" do
75
+ expect(Squash::Ruby.configuration(:filter_env_vars)).not_to be_nil
76
+ end
77
+
66
78
  it "should be the same at class and instance level" do
67
79
  #NB: Need to use #class_eval, as the underlying is dynamically extended
68
- expect(squash_notifier.whitelisted_env_vars).to eq(ExceptionNotifier::SquashNotifier.class_eval { self.whitelisted_env_vars })
80
+ expect(squash_notifier.whitelisted_env_vars).to eq(described_class.class_eval { self.whitelisted_env_vars })
69
81
  end
70
82
 
71
83
  context "with faked ENV" do
@@ -88,8 +100,67 @@ describe ExceptionNotifier::SquashNotifier do
88
100
  end
89
101
 
90
102
  describe "with Squash unregistered" do
91
- it "should note find a Squash notifier" do
103
+ include_context "squash_notifier_creation"
104
+
105
+ it "should not find a Squash notifier" do
92
106
  expect(squash_notifier).to be_nil
93
107
  end
94
108
  end
95
109
  end
110
+
111
+ #####
112
+
113
+ describe ExceptionNotifier::SquashNotifier::SquashRailsNotifier do
114
+ include_context "squash_ruby"
115
+
116
+ around(:context) do |eg|
117
+ saved = ExceptionNotifier::SquashNotifier.enable_rails
118
+ ExceptionNotifier::SquashNotifier.enable_rails = true
119
+
120
+ eg.run
121
+
122
+ ExceptionNotifier::SquashNotifier.enable_rails = saved
123
+ end
124
+
125
+ describe "with a valid instance" do
126
+ include_context "squash_notifier_creation"
127
+
128
+ describe "created via ExceptionNotifier" do
129
+ around(:context) do |eg|
130
+ ExceptionNotification.configure {|c| c.add_notifier :squash, @squash_config_options }
131
+
132
+ eg.run
133
+
134
+ ExceptionNotification.configure {|c| c.unregister_exception_notifier :squash }
135
+ end
136
+
137
+ let(:squash_notifier) { ExceptionNotifier.registered_exception_notifier(:squash) }
138
+
139
+ #Time.stubs(:current).returns('Sat, 20 Apr 2013 20:58:55 UTC +00:00')
140
+
141
+ xit "notifies Squash of an standard exception when no rack-env data supplied" do
142
+ pending("Providing rack-complete data to the :env option")
143
+
144
+ begin
145
+ 1/0
146
+ rescue => e
147
+ expect(squash_ruby).to receive(:notify).with(e, {}).and_return(nil)
148
+ ExceptionNotifier.notify_exception(e, {})
149
+ end
150
+ end
151
+
152
+ xit "notifies Squash of an Rails exception when rack-env data supplied" do
153
+ pending("Providing rack-complete data to the :env option")
154
+
155
+ begin
156
+ 1/0
157
+ rescue => e
158
+ expect(squash_ruby).to receive(:configuration).with(:filter_env_vars).and_return(squash_notifier.default_options[:filter_env_vars])
159
+ #expect(squash_ruby).to receive(:notify).with(e, {env: "TEST"}).and_return(nil)
160
+
161
+ ExceptionNotifier.notify_exception(e, {env: {a: "TEST"}})
162
+ end
163
+ end
164
+ end
165
+ end
166
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper_rails'
2
+
3
+ describe Squash::Ruby do
4
+ it do
5
+ #NB: It may never be possible to make this pass, with Squash::Ruby
6
+ # monkey-patching style
7
+ expect(Squash::Ruby.client_name).to eq('squash-notifier-rails')
8
+ end
9
+ end
@@ -2,7 +2,10 @@ require 'spec_helper'
2
2
 
3
3
  describe Squash::Ruby do
4
4
  it do
5
- expect(Squash::Ruby.client_name).to eq('squash')
5
+ pending("monkey-patching makes me sad")
6
+ #NB: It may never be possible to make this pass, with Squash::Ruby
7
+ # monkey-patching style
8
+ expect(Squash::Ruby.client_name).to eq('squash-notifier')
6
9
  end
7
10
 
8
11
  describe "with a valid instance" do
@@ -11,3 +11,10 @@ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
11
11
 
12
12
  require 'exception_notification'
13
13
  require 'exception_notifier/squash_notifier'
14
+
15
+ RSpec.shared_context "squash_ruby" do
16
+ let(:squash_ruby) do
17
+ class_double("Squash::Ruby").
18
+ as_stubbed_const(:transfer_nested_constants => true)
19
+ end
20
+ end
@@ -0,0 +1,9 @@
1
+ require 'rails'
2
+ require 'spec_helper'
3
+
4
+ RSpec.shared_context "rails" do
5
+ let(:rails) do
6
+ class_double("Rails").
7
+ as_stubbed_const(:transfer_nested_constants => true)
8
+ end
9
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: exception_notification-squash_notifier
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1.3
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Will Robertson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-29 00:00:00.000000000 Z
11
+ date: 2015-05-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -158,11 +158,14 @@ files:
158
158
  - lib/exception_notifier/squash_notifier/rails.rb
159
159
  - lib/exception_notifier/squash_notifier/ruby.rb
160
160
  - lib/exception_notifier/squash_notifier/version.rb
161
- - lib/exception_notifier/squash_ruby.rb
162
161
  - lib/exception_notifier/squash_ruby/rails.rb
162
+ - lib/exception_notifier/squash_ruby/ruby.rb
163
+ - spec/exception_notifier/squash_notifier_rails_spec.rb
163
164
  - spec/exception_notifier/squash_notifier_spec.rb
165
+ - spec/exception_notifier/squash_ruby_rails_spec.rb
164
166
  - spec/exception_notifier/squash_ruby_spec.rb
165
167
  - spec/spec_helper.rb
168
+ - spec/spec_helper_rails.rb
166
169
  homepage: ''
167
170
  licenses:
168
171
  - MIT
@@ -188,7 +191,10 @@ signing_key:
188
191
  specification_version: 4
189
192
  summary: Exception Notifier plugin for Squash
190
193
  test_files:
194
+ - spec/exception_notifier/squash_notifier_rails_spec.rb
191
195
  - spec/exception_notifier/squash_notifier_spec.rb
196
+ - spec/exception_notifier/squash_ruby_rails_spec.rb
192
197
  - spec/exception_notifier/squash_ruby_spec.rb
193
198
  - spec/spec_helper.rb
199
+ - spec/spec_helper_rails.rb
194
200
  has_rdoc: