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.
@@ -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: