Selaa lähdekoodia

Merge pull request #123 from Shopify/add_validation_error_class

Add validation error class
Kevin Hughes 11 vuotta sitten
vanhempi
commit
2097007bf4
3 muutettua tiedostoa jossa 10 lisäystä ja 6 poistoa
  1. 2 1
      CHANGELOG
  2. 4 1
      lib/shopify_api/session.rb
  3. 4 4
      test/session_test.rb

+ 2 - 1
CHANGELOG

@@ -1,6 +1,7 @@
-== Version 3.2.2
+== Version 3.2.2 unreleased
 
 * Temporary fix for the CLI
+* Add a specific exception for signature validation failures
 
 == Version 3.2.1
 

+ 4 - 1
lib/shopify_api/session.rb

@@ -1,6 +1,9 @@
 
 module ShopifyAPI
 
+  class ValidationException < StandardError
+  end
+
   class Session
     cattr_accessor :api_key
     cattr_accessor :secret
@@ -74,7 +77,7 @@ module ShopifyAPI
       return token if token
 
       unless self.class.validate_signature(params) && params[:timestamp].to_i > 24.hours.ago.utc.to_i
-        raise "Invalid Signature: Possible malicious login"
+        raise ShopifyAPI::ValidationException, "Invalid Signature: Possible malicious login"
       end
 
       code = params['code']

+ 4 - 4
test/session_test.rb

@@ -25,7 +25,7 @@ class SessionTest < Test::Unit::TestCase
     end
 
     should "raise error if params passed but signature omitted" do
-      assert_raises(RuntimeError) do
+      assert_raises(ShopifyAPI::ValidationException) do
         session = ShopifyAPI::Session.new("testshop.myshopify.com")
         session.request_token({'code' => 'any-code'})
       end
@@ -90,7 +90,7 @@ class SessionTest < Test::Unit::TestCase
       ShopifyAPI::Session.setup(:api_key => "My test key", :secret => "My test secret")
       session = ShopifyAPI::Session.new('http://localhost.myshopify.com')
       fake nil, :url => 'https://localhost.myshopify.com/admin/oauth/access_token',:method => :post, :status => 404, :body => '{"error" : "invalid_request"}'
-      assert_raises(RuntimeError) do
+      assert_raises(ShopifyAPI::ValidationException) do
         session.request_token(params={:code => "bad-code"})
       end
       assert_equal false, session.valid?
@@ -130,7 +130,7 @@ class SessionTest < Test::Unit::TestCase
       sorted_params = make_sorted_params(params)
       signature = Digest::MD5.hexdigest(ShopifyAPI::Session.secret + sorted_params)
       params[:foo] = 'world'
-      assert_raises(RuntimeError) do
+      assert_raises(ShopifyAPI::ValidationException) do
         session = ShopifyAPI::Session.new("testshop.myshopify.com")
         session.request_token(params.merge(:signature => signature))
       end
@@ -142,7 +142,7 @@ class SessionTest < Test::Unit::TestCase
       sorted_params = make_sorted_params(params)
       signature = Digest::MD5.hexdigest(ShopifyAPI::Session.secret + sorted_params)
       params[:foo] = 'world'
-      assert_raises(RuntimeError) do
+      assert_raises(ShopifyAPI::ValidationException) do
         session = ShopifyAPI::Session.new("testshop.myshopify.com")
         session.request_token(params.merge(:signature => signature))
       end