lib/fake_braintree.rb in fake_braintree-0.0.5 vs lib/fake_braintree.rb in fake_braintree-0.0.6
- old
+ new
@@ -1,47 +1,49 @@
require 'fileutils'
require 'braintree'
-require 'sham_rack'
+require 'capybara'
+require 'capybara/server'
+require 'rack/handler/mongrel'
require 'fake_braintree/helpers'
require 'fake_braintree/customer'
require 'fake_braintree/subscription'
+require 'fake_braintree/redirect'
require 'fake_braintree/sinatra_app'
require 'fake_braintree/valid_credit_cards'
require 'fake_braintree/version'
module FakeBraintree
class << self
@customers = {}
@subscriptions = {}
@failures = {}
- @transaction = {}
+ @transactions = {}
+ @redirects = {}
@decline_all_cards = false
@verify_all_cards = false
- attr_accessor :customers, :subscriptions, :failures, :transaction, :decline_all_cards, :verify_all_cards
+ attr_accessor :customers, :subscriptions, :failures, :transactions, :decline_all_cards, :verify_all_cards, :redirects
end
def self.activate!
- Braintree::Configuration.environment = :production
- Braintree::Configuration.merchant_id = "xxx"
- Braintree::Configuration.public_key = "xxx"
- Braintree::Configuration.private_key = "xxx"
+ set_configuration
clear!
- ShamRack.mount(FakeBraintree::SinatraApp, "www.braintreegateway.com", 443)
+ boot_server
end
def self.log_file_path
'tmp/log'
end
def self.clear!
self.customers = {}
self.subscriptions = {}
self.failures = {}
- self.transaction = {}
+ self.transactions = {}
+ self.redirects = {}
self.decline_all_cards = false
clear_log!
end
def self.clear_log!
@@ -51,11 +53,11 @@
def self.failure?(card_number)
self.failures.include?(card_number)
end
- def self.failure_response(card_number)
+ def self.failure_response(card_number = nil)
failure = self.failures[card_number] || {}
failure["errors"] ||= { "errors" => [] }
{ "message" => failure["message"],
"verification" => { "status" => failure["status"],
@@ -93,9 +95,46 @@
next unless customer.key?("credit_cards")
card = customer["credit_cards"].detect {|card| card["token"] == token }
return card if card
end
+ end
+
+ def self.generate_transaction(options = {})
+ history_item = { 'timestamp' => Time.now,
+ 'amount' => options[:amount],
+ 'status' => options[:status] }
+ created_at = options[:created_at] || Time.now
+ {'status_history' => [history_item],
+ 'subscription_id' => options[:subscription_id],
+ 'created_at' => created_at }
+ end
+
+ private
+
+ def self.set_configuration
+ Braintree::Configuration.environment = :development
+ Braintree::Configuration.merchant_id = "xxx"
+ Braintree::Configuration.public_key = "xxx"
+ Braintree::Configuration.private_key = "xxx"
+ end
+
+ def self.boot_server
+ with_mongrel_runner do
+ server = Capybara::Server.new(FakeBraintree::SinatraApp)
+ server.boot
+ ENV['GATEWAY_PORT'] = server.port.to_s
+ end
+ end
+
+ def self.with_mongrel_runner
+ default_server_process = Capybara.server
+ Capybara.server do |app, port|
+ Rack::Handler::Mongrel.run(app, :Port => port)
+ end
+ yield
+ ensure
+ Capybara.server(&default_server_process)
end
end
FakeBraintree.activate!
Braintree::Configuration.logger = Logger.new(FakeBraintree.log_file_path)