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)