mail_to_hip_chat 0.0.1
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.
- data/.gitignore +7 -0
- data/.rbenv-version +1 -0
- data/.yardopts +5 -0
- data/Gemfile +4 -0
- data/LICENSE +24 -0
- data/README.md +90 -0
- data/Rakefile +17 -0
- data/lib/mail_to_hip_chat/chute_chain.rb +32 -0
- data/lib/mail_to_hip_chat/exceptions.rb +4 -0
- data/lib/mail_to_hip_chat/message_chute.rb +20 -0
- data/lib/mail_to_hip_chat/message_chutes/airbrake.rb +58 -0
- data/lib/mail_to_hip_chat/message_chutes/test_email.rb +18 -0
- data/lib/mail_to_hip_chat/rack_app/builder.rb +47 -0
- data/lib/mail_to_hip_chat/rack_app.rb +57 -0
- data/lib/mail_to_hip_chat/version.rb +3 -0
- data/lib/mail_to_hip_chat.rb +2 -0
- data/mail_to_hip_chat.gemspec +31 -0
- data/support/config.ru +18 -0
- data/test/fixtures/airbrake_exception_body.txt +27 -0
- data/test/fixtures/airbrake_request_dump.txt +325 -0
- data/test/fixtures/test_email_request_dump.txt +89 -0
- data/test/integration/airbrake_processing_test.rb +46 -0
- data/test/test_helper.rb +59 -0
- data/test/unit/chute_chain_test.rb +48 -0
- data/test/unit/message_chute_test.rb +33 -0
- data/test/unit/message_chutes/airbrake_test.rb +39 -0
- data/test/unit/message_chutes/test_email_test.rb +21 -0
- data/test/unit/rack_app_test.rb +54 -0
- data/test.rb +10 -0
- metadata +184 -0
@@ -0,0 +1,54 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
require "mail_to_hip_chat/rack_app"
|
3
|
+
|
4
|
+
class RackAppConvenienceTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
test "a tagged exception is raised if a chute raises an exception" do
|
7
|
+
rack_app = MailToHipChat::RackApp.new
|
8
|
+
rack_app.use_chute(lambda { |params| raise })
|
9
|
+
assert_raise(MailToHipChat::InternalError) do
|
10
|
+
rack_app.call(Rack::Request.new({}))
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
test "use_chute is sugar for pushing onto the chute chain" do
|
15
|
+
chute_chain, chute = mock, lambda {}
|
16
|
+
chute_chain.expects(:push).with(chute)
|
17
|
+
rack_app = MailToHipChat::RackApp.new(:chute_chain => chute_chain)
|
18
|
+
rack_app.use_chute(chute)
|
19
|
+
end
|
20
|
+
|
21
|
+
test "the constructor yields self if a block is given as sugar for configuring the chutes" do
|
22
|
+
rack_app_from_block = nil
|
23
|
+
rack_app = MailToHipChat::RackApp.new { |app| rack_app_from_block = app}
|
24
|
+
assert_equal rack_app, rack_app_from_block
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
class RackAppRequestTest < Test::Unit::TestCase
|
29
|
+
include RackEnvHelper
|
30
|
+
|
31
|
+
def setup
|
32
|
+
@rack_env = rack_env_from_fixture('test_email_request_dump')
|
33
|
+
end
|
34
|
+
|
35
|
+
test "a request signed with a different secret returns a 400 error" do
|
36
|
+
rack_app = MailToHipChat::RackApp.new(:secret => "weird secret")
|
37
|
+
response = rack_app.call(@rack_env)
|
38
|
+
assert_equal 400, response[0]
|
39
|
+
end
|
40
|
+
|
41
|
+
test "a request signed with the same secret returns a 404 if no chute accepts it" do
|
42
|
+
rack_app = MailToHipChat::RackApp.new(:secret => "bcfe2d24c306ceabf4f1")
|
43
|
+
response = rack_app.call(@rack_env)
|
44
|
+
assert_equal 404, response[0]
|
45
|
+
end
|
46
|
+
|
47
|
+
test "a request signed with the same secret returns a 200 if a chute accepts it" do
|
48
|
+
rack_app = MailToHipChat::RackApp.new(:secret => "bcfe2d24c306ceabf4f1")
|
49
|
+
rack_app.use_chute(lambda { |params| true })
|
50
|
+
response = rack_app.call(@rack_env)
|
51
|
+
assert_equal 200, response[0]
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
data/test.rb
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
AirbrakeDomain = "airbrake.io"
|
2
|
+
msg = File.read("test/fixtures/airbrake_exception_body.txt")
|
3
|
+
ExtractionExpression = %r[\A\n+Project:\s([^\n]+)\n+ # Pull out the project name
|
4
|
+
Environment:\s([^\n]+)\n+ # Pull out the project environment
|
5
|
+
# Pull out the URL to the exception
|
6
|
+
^(http://[^.]+\.#{Regexp.escape(AirbrakeDomain)}/errors/\d+)\n+
|
7
|
+
# Pull out the first line of the error message
|
8
|
+
Error\sMessage:\n-{14}\n([^\n]+)]mx
|
9
|
+
|
10
|
+
puts msg.match(ExtractionExpression).to_a.inspect
|
metadata
ADDED
@@ -0,0 +1,184 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: mail_to_hip_chat
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Gabriel Gironda
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2011-11-21 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: http_parser.rb
|
16
|
+
requirement: &70117439062040 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0.5'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70117439062040
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: mocha
|
27
|
+
requirement: &70117439060540 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ~>
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0.10'
|
33
|
+
type: :development
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70117439060540
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: yard
|
38
|
+
requirement: &70117439059380 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ~>
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0.7'
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70117439059380
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: rdiscount
|
49
|
+
requirement: &70117439058140 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.6'
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *70117439058140
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: webmock
|
60
|
+
requirement: &70117439056760 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ~>
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '1.7'
|
66
|
+
type: :development
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *70117439056760
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rake
|
71
|
+
requirement: &70117439055600 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *70117439055600
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: rack
|
82
|
+
requirement: &70117439051980 !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ~>
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '1.3'
|
88
|
+
type: :runtime
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: *70117439051980
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: hipchat-api
|
93
|
+
requirement: &70117439050780 !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
95
|
+
requirements:
|
96
|
+
- - ~>
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '1.0'
|
99
|
+
type: :runtime
|
100
|
+
prerelease: false
|
101
|
+
version_requirements: *70117439050780
|
102
|
+
- !ruby/object:Gem::Dependency
|
103
|
+
name: mustache
|
104
|
+
requirement: &70117439049500 !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ~>
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0.99'
|
110
|
+
type: :runtime
|
111
|
+
prerelease: false
|
112
|
+
version_requirements: *70117439049500
|
113
|
+
description: Funnels email into HipChat using CloudMailIn
|
114
|
+
email:
|
115
|
+
- gabriel@gironda.org
|
116
|
+
executables: []
|
117
|
+
extensions: []
|
118
|
+
extra_rdoc_files: []
|
119
|
+
files:
|
120
|
+
- .gitignore
|
121
|
+
- .rbenv-version
|
122
|
+
- .yardopts
|
123
|
+
- Gemfile
|
124
|
+
- LICENSE
|
125
|
+
- README.md
|
126
|
+
- Rakefile
|
127
|
+
- lib/mail_to_hip_chat.rb
|
128
|
+
- lib/mail_to_hip_chat/chute_chain.rb
|
129
|
+
- lib/mail_to_hip_chat/exceptions.rb
|
130
|
+
- lib/mail_to_hip_chat/message_chute.rb
|
131
|
+
- lib/mail_to_hip_chat/message_chutes/airbrake.rb
|
132
|
+
- lib/mail_to_hip_chat/message_chutes/test_email.rb
|
133
|
+
- lib/mail_to_hip_chat/rack_app.rb
|
134
|
+
- lib/mail_to_hip_chat/rack_app/builder.rb
|
135
|
+
- lib/mail_to_hip_chat/version.rb
|
136
|
+
- mail_to_hip_chat.gemspec
|
137
|
+
- support/config.ru
|
138
|
+
- test.rb
|
139
|
+
- test/fixtures/airbrake_exception_body.txt
|
140
|
+
- test/fixtures/airbrake_request_dump.txt
|
141
|
+
- test/fixtures/test_email_request_dump.txt
|
142
|
+
- test/integration/airbrake_processing_test.rb
|
143
|
+
- test/test_helper.rb
|
144
|
+
- test/unit/chute_chain_test.rb
|
145
|
+
- test/unit/message_chute_test.rb
|
146
|
+
- test/unit/message_chutes/airbrake_test.rb
|
147
|
+
- test/unit/message_chutes/test_email_test.rb
|
148
|
+
- test/unit/rack_app_test.rb
|
149
|
+
homepage: ''
|
150
|
+
licenses: []
|
151
|
+
post_install_message:
|
152
|
+
rdoc_options: []
|
153
|
+
require_paths:
|
154
|
+
- lib
|
155
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
156
|
+
none: false
|
157
|
+
requirements:
|
158
|
+
- - ! '>='
|
159
|
+
- !ruby/object:Gem::Version
|
160
|
+
version: '0'
|
161
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
162
|
+
none: false
|
163
|
+
requirements:
|
164
|
+
- - ! '>='
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
requirements: []
|
168
|
+
rubyforge_project: mail_to_hip_chat
|
169
|
+
rubygems_version: 1.8.10
|
170
|
+
signing_key:
|
171
|
+
specification_version: 3
|
172
|
+
summary: Funnels email into HipChat
|
173
|
+
test_files:
|
174
|
+
- test/fixtures/airbrake_exception_body.txt
|
175
|
+
- test/fixtures/airbrake_request_dump.txt
|
176
|
+
- test/fixtures/test_email_request_dump.txt
|
177
|
+
- test/integration/airbrake_processing_test.rb
|
178
|
+
- test/test_helper.rb
|
179
|
+
- test/unit/chute_chain_test.rb
|
180
|
+
- test/unit/message_chute_test.rb
|
181
|
+
- test/unit/message_chutes/airbrake_test.rb
|
182
|
+
- test/unit/message_chutes/test_email_test.rb
|
183
|
+
- test/unit/rack_app_test.rb
|
184
|
+
has_rdoc:
|