Skip to content

Instantly share code, notes, and snippets.

@csaunders
Created January 24, 2014 00:42
Show Gist options
  • Save csaunders/8589906 to your computer and use it in GitHub Desktop.
Save csaunders/8589906 to your computer and use it in GitHub Desktop.
def request(data, hmac=nil)
options = {
:method => 'POST',
:input => data,
'X-Shopify-Hmac-SHA256' => hmac || calculate_hmac(data)
}
ActionDispatch::Request.new(Rack::MockRequest.env_for("", options))
end
@csaunders
Copy link
Author

irb(main):018:0> pp r = request('doodle doodle', 'not an hmac')
#<ActionDispatch::Request:0x007f81a683bdd0
 @env=
  {"rack.version"=>[1, 2],
   "rack.input"=>#<StringIO:0x007f81a683bf38>,
   "rack.errors"=>#<StringIO:0x007f81a683bfd8>,
   "rack.multithread"=>true,
   "rack.multiprocess"=>true,
   "rack.run_once"=>false,
   "REQUEST_METHOD"=>"POST",
   "SERVER_NAME"=>"example.org",
   "SERVER_PORT"=>"80",
   "QUERY_STRING"=>"",
   "PATH_INFO"=>"/",
   "rack.url_scheme"=>"http",
   "HTTPS"=>"off",
   "SCRIPT_NAME"=>"",
   "CONTENT_LENGTH"=>"13",
   "X-Shopify-Hmac-SHA256"=>"not an hmac"},
 @filtered_env=nil,
 @filtered_parameters=nil,
 @filtered_path=nil,
 @fullpath=nil,
 @ip=nil,
 @method=nil,
 @original_fullpath=nil,
 @port=nil,
 @protocol=nil,
 @remote_ip=nil,
 @request_method=nil,
 @symbolized_path_params=nil,
 @uuid=nil>
=> #<ActionDispatch::Request:0x007f81a683bdd0 @env={"rack.version"=>[1, 2], "rack.input"=>#<StringIO:0x007f81a683bf38>, "rack.errors"=>#<StringIO:0x007f81a683bfd8>, "rack.multithread"=>true, "rack.multiprocess"=>true, "rack.run_once"=>false, "REQUEST_METHOD"=>"POST", "SERVER_NAME"=>"example.org", "SERVER_PORT"=>"80", "QUERY_STRING"=>"", "PATH_INFO"=>"/", "rack.url_scheme"=>"http", "HTTPS"=>"off", "SCRIPT_NAME"=>"", "CONTENT_LENGTH"=>"13", "X-Shopify-Hmac-SHA256"=>"not an hmac"}, @symbolized_path_params=nil, @filtered_parameters=nil, @filtered_env=nil, @filtered_path=nil, @protocol=nil, @port=nil, @method=nil, @request_method=nil, @remote_ip=nil, @original_fullpath=nil, @fullpath=nil, @ip=nil, @uuid=nil>
irb(main):019:0> pp r.headers
#<ActionDispatch::Http::Headers:0x007f81a684b708
 @env=
  {"rack.version"=>[1, 2],
   "rack.input"=>#<StringIO:0x007f81a683bf38>,
   "rack.errors"=>#<StringIO:0x007f81a683bfd8>,
   "rack.multithread"=>true,
   "rack.multiprocess"=>true,
   "rack.run_once"=>false,
   "REQUEST_METHOD"=>"POST",
   "SERVER_NAME"=>"example.org",
   "SERVER_PORT"=>"80",
   "QUERY_STRING"=>"",
   "PATH_INFO"=>"/",
   "rack.url_scheme"=>"http",
   "HTTPS"=>"off",
   "SCRIPT_NAME"=>"",
   "CONTENT_LENGTH"=>"13",
   "X-Shopify-Hmac-SHA256"=>"not an hmac"}>
=> #<ActionDispatch::Http::Headers:0x007f81a684b708 @env={"rack.version"=>[1, 2], "rack.input"=>#<StringIO:0x007f81a683bf38>, "rack.errors"=>#<StringIO:0x007f81a683bfd8>, "rack.multithread"=>true, "rack.multiprocess"=>true, "rack.run_once"=>false, "REQUEST_METHOD"=>"POST", "SERVER_NAME"=>"example.org", "SERVER_PORT"=>"80", "QUERY_STRING"=>"", "PATH_INFO"=>"/", "rack.url_scheme"=>"http", "HTTPS"=>"off", "SCRIPT_NAME"=>"", "CONTENT_LENGTH"=>"13", "X-Shopify-Hmac-SHA256"=>"not an hmac"}>
irb(main):020:0> pp r.headers['X-Shopify-Hmac-SHA256']
nil
=> nil

(ノಠ益ಠ)ノ彡┻━┻

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment