Skip to content

Commit a71c55c

Browse files
Merge pull request #237 from HubSpot/feature/add_custom_exceptions
add custom exceptions for signature
2 parents 5b03f4d + 39c2973 commit a71c55c

3 files changed

Lines changed: 15 additions & 12 deletions

File tree

lib/hubspot/exceptions.rb

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
module Hubspot
22
class ConfigurationError < StandardError; end
3-
4-
class InvalidSignatureError < StandardError
5-
def initialize(msg: nil, signature: nil, signature_version: nil, hash_result: nil)
6-
@signature = signature
3+
class InvalidSignatureVersionError < StandardError
4+
def initialize(signature_version)
75
@signature_version = signature_version
8-
@hash_result = hash_result
9-
msg = "Invalid signature passed to request" if msg.nil?
6+
super("Invalid signature version passed to request: #{@signature_version}")
7+
end
8+
end
109

11-
super(msg)
10+
class InvalidSignatureTimestampError < StandardError
11+
def initialize(timestamp)
12+
@timestamp = timestamp
13+
super("Signature timestamp is invalid: #{@timestamp}.")
1214
end
1315
end
1416
end

lib/hubspot/helpers/signature.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ def is_valid(
1717
if signature_version == "v3"
1818
current_time = DateTime.now.strftime("%s").to_i
1919
if current_time - timestamp.to_i > MAX_ALLOWED_TIMESTAMP
20-
raise StandardError("Timestamp is invalid, reject request.")
20+
raise InvalidSignatureTimestampError.new(timestamp)
2121
end
2222
end
2323
hashed_signature = get_signature(
@@ -54,7 +54,7 @@ def get_signature(
5454
hash_result = OpenSSL::HMAC.base64digest('SHA256', client_secret, source_string.encode('utf-8'))
5555
return hash_result
5656
else
57-
raise StandardError("Not supported signature version: #{signature_version}")
57+
raise InvalidSignatureVersionError.new(signature_version)
5858
end
5959
end
6060
end

spec/helpers/signature_spec.rb

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
require 'date'
22
require_relative "../../lib/hubspot/helpers/signature"
3+
require_relative "../../lib/hubspot/exceptions"
34

45
TEST_DATA = {
56
:client_secret=> "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy",
@@ -49,7 +50,7 @@
4950
client_secret: TEST_DATA[:client_secret],
5051
request_body: TEST_DATA[:request_body],
5152
signature_version: "wrong_signature_version"
52-
) }.to raise_error(StandardError)
53+
) }.to raise_error(Hubspot::InvalidSignatureVersionError)
5354
end
5455

5556
end
@@ -102,7 +103,7 @@
102103
request_body: TEST_DATA[:request_body],
103104
http_uri: TEST_DATA[:http_uri],
104105
signature_version: "v3"
105-
) }.to raise_error(StandardError)
106+
) }.to raise_error(Hubspot::InvalidSignatureTimestampError)
106107
end
107108
it "should raise exception if :signature_version=>v3 and :timestamp=>wrong_timestamp" do
108109
expect { signature.is_valid(
@@ -112,6 +113,6 @@
112113
http_uri: TEST_DATA[:http_uri],
113114
timestamp: "wrong_timestamp",
114115
signature_version: "v3"
115-
) }.to raise_error(StandardError)
116+
) }.to raise_error(Hubspot::InvalidSignatureTimestampError)
116117
end
117118
end

0 commit comments

Comments
 (0)