From b51f300fe374e9eecf7e98266c96631fa3c8a278 Mon Sep 17 00:00:00 2001 From: Azul Date: Wed, 3 Jul 2013 09:28:44 +0200 Subject: billing: integration test creating customer --- billing/test/integration/customer_creation_test.rb | 61 ++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 billing/test/integration/customer_creation_test.rb (limited to 'billing/test/integration/customer_creation_test.rb') diff --git a/billing/test/integration/customer_creation_test.rb b/billing/test/integration/customer_creation_test.rb new file mode 100644 index 0000000..50116db --- /dev/null +++ b/billing/test/integration/customer_creation_test.rb @@ -0,0 +1,61 @@ +require 'test_helper' +require 'fake_braintree' +require 'capybara/rails' + +class CustomerCreationTest < ActionDispatch::IntegrationTest + include Warden::Test::Helpers + include Capybara::DSL + + setup do + Warden.test_mode! + end + + teardown do + Warden.test_reset! + end + + # We only test the confirmation here. + # The first request to Braintree is triggered outside of rails + test "successfully confirms customer creation" do + user = FactoryGirl.create(:user) + login_as user + response = post_transparent_redirect :create_customer_data, + customer: FactoryGirl.attributes_for(:braintree_customer), + redirect_url: confirm_customer_url + + assert_difference("Customer.count") do + post response['Location'] + end + + assert_equal 200, status + assert customer = Customer.find_by_user_id(user.id) + assert customer.braintree_customer + end + + # let's test both steps together with capybara + test "create customer with braintree" do + user = FactoryGirl.create(:user) + login_as user + visit '/customer/new' + assert_difference("Customer.count") do + click_button 'Save Payment Info' + end + assert_equal 200, status + assert customer = Customer.find_by_user_id(user.id) + assert customer.braintree_customer + end + + def post_transparent_redirect(type, data) + params = data.dup + params[:tr_data] = Braintree::TransparentRedirect.send(type, params) + post_transparent_redirect_params(params) + end + + def post_transparent_redirect_params(params) + uri = URI.parse(Braintree::TransparentRedirect.url) + Net::HTTP.start(uri.host, uri.port) do |http| + http.post(uri.path, Rack::Utils.build_nested_query(params)) + end + end + +end -- cgit v1.2.3