Commit b807029746b78718e164b57fd0dd1b8710cca155
1 parent
a821be3f
Exists in
master
and in
1 other branch
ApiVersionError initialization fix.
Showing
3 changed files
with
153 additions
and
1 deletions
Show diff stats
lib/hoptoad.rb
... | ... | @@ -10,7 +10,7 @@ module Hoptoad |
10 | 10 | |
11 | 11 | def self.parse_xml(xml) |
12 | 12 | parsed = ActiveSupport::XmlMini.backend.parse(xml)['notice'] |
13 | - raise ApiVersionError(parsed['version']) unless parsed && parsed['version'].to_s == '2.0' | |
13 | + raise ApiVersionError.new(parsed['version']) unless parsed && parsed['version'].to_s == '2.0' | |
14 | 14 | rekeyed = rekey(parsed) |
15 | 15 | rekeyed['fingerprint'] = Digest::MD5.hexdigest(rekeyed['error']['backtrace'].to_s) |
16 | 16 | rekeyed | ... | ... |
spec/fixtures/hoptoad_test_notice_with_wrong_version.xml
0 → 100644
... | ... | @@ -0,0 +1,147 @@ |
1 | +<?xml version="1.0" encoding="UTF-8"?> | |
2 | +<notice version="1.0"> | |
3 | + <api-key>APIKEY</api-key> | |
4 | + <notifier> | |
5 | + <name>Hoptoad Notifier</name> | |
6 | + <version>2.3.2</version> | |
7 | + <url>http://hoptoadapp.com</url> | |
8 | + </notifier> | |
9 | + <error> | |
10 | + <class>HoptoadTestingException</class> | |
11 | + <message>HoptoadTestingException: Testing hoptoad via "rake hoptoad:test". If you can see this, it works.</message> | |
12 | + <backtrace> | |
13 | + <line number="425" file="[GEM_ROOT]/gems/activesupport-3.0.0.rc/lib/active_support/callbacks.rb" method="_run__2115867319__process_action__262109504__callbacks"/> | |
14 | + <line number="404" file="[GEM_ROOT]/gems/activesupport-3.0.0.rc/lib/active_support/callbacks.rb" method="send"/> | |
15 | + <line number="404" file="[GEM_ROOT]/gems/activesupport-3.0.0.rc/lib/active_support/callbacks.rb" method="_run_process_action_callbacks"/> | |
16 | + <line number="93" file="[GEM_ROOT]/gems/activesupport-3.0.0.rc/lib/active_support/callbacks.rb" method="send"/> | |
17 | + <line number="93" file="[GEM_ROOT]/gems/activesupport-3.0.0.rc/lib/active_support/callbacks.rb" method="run_callbacks"/> | |
18 | + <line number="17" file="[GEM_ROOT]/gems/actionpack-3.0.0.rc/lib/abstract_controller/callbacks.rb" method="process_action"/> | |
19 | + <line number="30" file="[GEM_ROOT]/gems/actionpack-3.0.0.rc/lib/action_controller/metal/instrumentation.rb" method="process_action"/> | |
20 | + <line number="52" file="[GEM_ROOT]/gems/activesupport-3.0.0.rc/lib/active_support/notifications.rb" method="instrument"/> | |
21 | + <line number="21" file="[GEM_ROOT]/gems/activesupport-3.0.0.rc/lib/active_support/notifications/instrumenter.rb" method="instrument"/> | |
22 | + <line number="52" file="[GEM_ROOT]/gems/activesupport-3.0.0.rc/lib/active_support/notifications.rb" method="instrument"/> | |
23 | + <line number="29" file="[GEM_ROOT]/gems/actionpack-3.0.0.rc/lib/action_controller/metal/instrumentation.rb" method="process_action"/> | |
24 | + <line number="17" file="[GEM_ROOT]/gems/actionpack-3.0.0.rc/lib/action_controller/metal/rescue.rb" method="process_action"/> | |
25 | + <line number="105" file="[GEM_ROOT]/gems/actionpack-3.0.0.rc/lib/abstract_controller/base.rb" method="process"/> | |
26 | + <line number="40" file="[GEM_ROOT]/gems/actionpack-3.0.0.rc/lib/abstract_controller/rendering.rb" method="process"/> | |
27 | + <line number="133" file="[GEM_ROOT]/gems/actionpack-3.0.0.rc/lib/action_controller/metal.rb" method="dispatch"/> | |
28 | + <line number="14" file="[GEM_ROOT]/gems/actionpack-3.0.0.rc/lib/action_controller/metal/rack_delegation.rb" method="dispatch"/> | |
29 | + <line number="173" file="[GEM_ROOT]/gems/actionpack-3.0.0.rc/lib/action_controller/metal.rb" method="action"/> | |
30 | + <line number="62" file="[GEM_ROOT]/gems/actionpack-3.0.0.rc/lib/action_dispatch/routing/route_set.rb" method="call"/> | |
31 | + <line number="62" file="[GEM_ROOT]/gems/actionpack-3.0.0.rc/lib/action_dispatch/routing/route_set.rb" method="dispatch"/> | |
32 | + <line number="27" file="[GEM_ROOT]/gems/actionpack-3.0.0.rc/lib/action_dispatch/routing/route_set.rb" method="call"/> | |
33 | + <line number="148" file="[GEM_ROOT]/gems/rack-mount-0.6.9/lib/rack/mount/route_set.rb" method="call"/> | |
34 | + <line number="89" file="[GEM_ROOT]/gems/rack-mount-0.6.9/lib/rack/mount/code_generation.rb" method="recognize"/> | |
35 | + <line number="66" file="[GEM_ROOT]/gems/rack-mount-0.6.9/lib/rack/mount/code_generation.rb" method="optimized_each"/> | |
36 | + <line number="88" file="[GEM_ROOT]/gems/rack-mount-0.6.9/lib/rack/mount/code_generation.rb" method="recognize"/> | |
37 | + <line number="139" file="[GEM_ROOT]/gems/rack-mount-0.6.9/lib/rack/mount/route_set.rb" method="call"/> | |
38 | + <line number="489" file="[GEM_ROOT]/gems/actionpack-3.0.0.rc/lib/action_dispatch/routing/route_set.rb" method="call"/> | |
39 | + <line number="41" file="[GEM_ROOT]/gems/haml-3.0.15/lib/sass/plugin/rack.rb" method="call"/> | |
40 | + <line number="14" file="[GEM_ROOT]/gems/actionpack-3.0.0.rc/lib/action_dispatch/middleware/head.rb" method="call"/> | |
41 | + <line number="24" file="[GEM_ROOT]/gems/rack-1.2.1/lib/rack/methodoverride.rb" method="call"/> | |
42 | + <line number="21" file="[GEM_ROOT]/gems/actionpack-3.0.0.rc/lib/action_dispatch/middleware/params_parser.rb" method="call"/> | |
43 | + <line number="177" file="[GEM_ROOT]/gems/actionpack-3.0.0.rc/lib/action_dispatch/middleware/flash.rb" method="call"/> | |
44 | + <line number="149" file="[GEM_ROOT]/gems/actionpack-3.0.0.rc/lib/action_dispatch/middleware/session/abstract_store.rb" method="call"/> | |
45 | + <line number="268" file="[GEM_ROOT]/gems/actionpack-3.0.0.rc/lib/action_dispatch/middleware/cookies.rb" method="call"/> | |
46 | + <line number="32" file="[GEM_ROOT]/gems/activerecord-3.0.0.rc/lib/active_record/query_cache.rb" method="call"/> | |
47 | + <line number="28" file="[GEM_ROOT]/gems/activerecord-3.0.0.rc/lib/active_record/connection_adapters/abstract/query_cache.rb" method="cache"/> | |
48 | + <line number="12" file="[GEM_ROOT]/gems/activerecord-3.0.0.rc/lib/active_record/query_cache.rb" method="cache"/> | |
49 | + <line number="31" file="[GEM_ROOT]/gems/activerecord-3.0.0.rc/lib/active_record/query_cache.rb" method="call"/> | |
50 | + <line number="46" file="[GEM_ROOT]/gems/actionpack-3.0.0.rc/lib/action_dispatch/middleware/callbacks.rb" method="call"/> | |
51 | + <line number="410" file="[GEM_ROOT]/gems/activesupport-3.0.0.rc/lib/active_support/callbacks.rb" method="_run_call_callbacks"/> | |
52 | + <line number="44" file="[GEM_ROOT]/gems/actionpack-3.0.0.rc/lib/action_dispatch/middleware/callbacks.rb" method="call"/> | |
53 | + <line number="107" file="[GEM_ROOT]/gems/rack-1.2.1/lib/rack/sendfile.rb" method="call"/> | |
54 | + <line number="48" file="[GEM_ROOT]/gems/actionpack-3.0.0.rc/lib/action_dispatch/middleware/remote_ip.rb" method="call"/> | |
55 | + <line number="48" file="[GEM_ROOT]/gems/actionpack-3.0.0.rc/lib/action_dispatch/middleware/show_exceptions.rb" method="call"/> | |
56 | + <line number="13" file="[GEM_ROOT]/gems/railties-3.0.0.rc/lib/rails/rack/logger.rb" method="call"/> | |
57 | + <line number="17" file="[GEM_ROOT]/gems/rack-1.2.1/lib/rack/runtime.rb" method="call"/> | |
58 | + <line number="72" file="[GEM_ROOT]/gems/activesupport-3.0.0.rc/lib/active_support/cache/strategy/local_cache.rb" method="call"/> | |
59 | + <line number="11" file="[GEM_ROOT]/gems/rack-1.2.1/lib/rack/lock.rb" method="call"/> | |
60 | + <line number="11" file="[GEM_ROOT]/gems/rack-1.2.1/lib/rack/lock.rb" method="synchronize"/> | |
61 | + <line number="11" file="[GEM_ROOT]/gems/rack-1.2.1/lib/rack/lock.rb" method="call"/> | |
62 | + <line number="30" file="[GEM_ROOT]/gems/actionpack-3.0.0.rc/lib/action_dispatch/middleware/static.rb" method="call"/> | |
63 | + <line number="168" file="[GEM_ROOT]/gems/railties-3.0.0.rc/lib/rails/application.rb" method="call"/> | |
64 | + <line number="77" file="[GEM_ROOT]/gems/railties-3.0.0.rc/lib/rails/application.rb" method="send"/> | |
65 | + <line number="77" file="[GEM_ROOT]/gems/railties-3.0.0.rc/lib/rails/application.rb" method="method_missing"/> | |
66 | + <line number="636" file="[GEM_ROOT]/gems/rake-0.8.7/lib/rake.rb" method="call"/> | |
67 | + <line number="636" file="[GEM_ROOT]/gems/rake-0.8.7/lib/rake.rb" method="execute"/> | |
68 | + <line number="631" file="[GEM_ROOT]/gems/rake-0.8.7/lib/rake.rb" method="each"/> | |
69 | + <line number="631" file="[GEM_ROOT]/gems/rake-0.8.7/lib/rake.rb" method="execute"/> | |
70 | + <line number="597" file="[GEM_ROOT]/gems/rake-0.8.7/lib/rake.rb" method="invoke_with_call_chain"/> | |
71 | + <line number="242" file="/Users/jdpace/.rvm/rubies/ree-1.8.7-2010.02/lib/ruby/1.8/monitor.rb" method="synchronize"/> | |
72 | + <line number="590" file="[GEM_ROOT]/gems/rake-0.8.7/lib/rake.rb" method="invoke_with_call_chain"/> | |
73 | + <line number="583" file="[GEM_ROOT]/gems/rake-0.8.7/lib/rake.rb" method="invoke"/> | |
74 | + <line number="2051" file="[GEM_ROOT]/gems/rake-0.8.7/lib/rake.rb" method="invoke_task"/> | |
75 | + <line number="2029" file="[GEM_ROOT]/gems/rake-0.8.7/lib/rake.rb" method="top_level"/> | |
76 | + <line number="2029" file="[GEM_ROOT]/gems/rake-0.8.7/lib/rake.rb" method="each"/> | |
77 | + <line number="2029" file="[GEM_ROOT]/gems/rake-0.8.7/lib/rake.rb" method="top_level"/> | |
78 | + <line number="2068" file="[GEM_ROOT]/gems/rake-0.8.7/lib/rake.rb" method="standard_exception_handling"/> | |
79 | + <line number="2023" file="[GEM_ROOT]/gems/rake-0.8.7/lib/rake.rb" method="top_level"/> | |
80 | + <line number="2001" file="[GEM_ROOT]/gems/rake-0.8.7/lib/rake.rb" method="run"/> | |
81 | + <line number="2068" file="[GEM_ROOT]/gems/rake-0.8.7/lib/rake.rb" method="standard_exception_handling"/> | |
82 | + <line number="1998" file="[GEM_ROOT]/gems/rake-0.8.7/lib/rake.rb" method="run"/> | |
83 | + <line number="31" file="[GEM_ROOT]/gems/rake-0.8.7/bin/rake" method=""/> | |
84 | + <line number="19" file="[GEM_ROOT]/bin/rake" method="load"/> | |
85 | + <line number="19" file="[GEM_ROOT]/bin/rake" method=""/> | |
86 | + </backtrace> | |
87 | + </error> | |
88 | + <request> | |
89 | + <url>http://example.org/verify</url> | |
90 | + <component>application</component> | |
91 | + <action>verify</action> | |
92 | + <params> | |
93 | + <var key="action">verify</var> | |
94 | + <var key="controller">application</var> | |
95 | + </params> | |
96 | + <cgi-data> | |
97 | + <var key="rack.session"/> | |
98 | + <var key="action_dispatch.request.formats">text/html</var> | |
99 | + <var key="action_dispatch.request.parameters"> | |
100 | + <var key="action">verify</var> | |
101 | + <var key="controller">application</var> | |
102 | + </var> | |
103 | + <var key="SERVER_NAME">example.org</var> | |
104 | + <var key="rack.url_scheme">http</var> | |
105 | + <var key="action_dispatch.remote_ip"/> | |
106 | + <var key="CONTENT_LENGTH">0</var> | |
107 | + <var key="rack.errors">#<StringIO:0x103d9dec0></var> | |
108 | + <var key="action_dispatch.request.unsigned_session_cookie"/> | |
109 | + <var key="action_dispatch.request.query_parameters"/> | |
110 | + <var key="HTTPS">off</var> | |
111 | + <var key="rack.run_once">false</var> | |
112 | + <var key="PATH_INFO">/verify</var> | |
113 | + <var key="action_dispatch.secret_token">994f235e3372684bc736dd11842b754d2ddcffc8c2958d33a29527c3217becd6655fa4653a318bc7c34131f9baf2acc0c424ed07e48e0e5e87c6cd34d711e985</var> | |
114 | + <var key="rack.version">11</var> | |
115 | + <var key="SCRIPT_NAME"/> | |
116 | + <var key="action_dispatch.request.path_parameters"> | |
117 | + <var key="action">verify</var> | |
118 | + <var key="controller">application</var> | |
119 | + </var> | |
120 | + <var key="rack.multithread">false</var> | |
121 | + <var key="action_dispatch.parameter_filter">password</var> | |
122 | + <var key="action_dispatch.cookies"/> | |
123 | + <var key="action_dispatch.request.request_parameters"/> | |
124 | + <var key="rack.multiprocess">true</var> | |
125 | + <var key="rack.request.query_hash"/> | |
126 | + <var key="SERVER_PORT">80</var> | |
127 | + <var key="REQUEST_METHOD">GET</var> | |
128 | + <var key="action_controller.instance">#<ApplicationController:0x103d2f560></var> | |
129 | + <var key="rack.session.options"> | |
130 | + <var key="secure">false</var> | |
131 | + <var key="httponly">true</var> | |
132 | + <var key="path">/</var> | |
133 | + <var key="expire_after"/> | |
134 | + <var key="domain"/> | |
135 | + <var key="id"/> | |
136 | + </var> | |
137 | + <var key="rack.input">#<StringIO:0x103d9dc90></var> | |
138 | + <var key="action_dispatch.request.content_type"/> | |
139 | + <var key="rack.request.query_string"/> | |
140 | + <var key="QUERY_STRING"/> | |
141 | + </cgi-data> | |
142 | + </request> | |
143 | + <server-environment> | |
144 | + <project-root>/path/to/sample/project</project-root> | |
145 | + <environment-name>development</environment-name> | |
146 | + </server-environment> | |
147 | +</notice> | ... | ... |
spec/models/notice_spec.rb
... | ... | @@ -132,6 +132,11 @@ describe Notice do |
132 | 132 | @xml = Rails.root.join('spec','fixtures','hoptoad_test_notice_without_request_section.xml').read |
133 | 133 | lambda { Notice.from_xml(@xml) }.should_not raise_error |
134 | 134 | end |
135 | + | |
136 | + it "should raise ApiVersionError" do | |
137 | + @xml = Rails.root.join('spec', 'fixtures', 'hoptoad_test_notice_with_wrong_version.xml').read | |
138 | + expect { Notice.from_xml(@xml) }.to raise_error(Hoptoad::V2::ApiVersionError) | |
139 | + end | |
135 | 140 | end |
136 | 141 | |
137 | 142 | describe "key sanitization" do | ... | ... |