Commit b807029746b78718e164b57fd0dd1b8710cca155

Authored by Nick Recobra
1 parent a821be3f
Exists in master and in 1 other branch production

ApiVersionError initialization fix.

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">#&lt;StringIO:0x103d9dec0&gt;</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">#&lt;ApplicationController:0x103d2f560&gt;</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">#&lt;StringIO:0x103d9dc90&gt;</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
... ...