summaryrefslogtreecommitdiff
path: root/billing/test/broken
diff options
context:
space:
mode:
authorAzul <azul@leap.se>2014-04-11 09:38:50 +0200
committerAzul <azul@leap.se>2014-04-11 09:38:50 +0200
commit32136605ddd405a0bf47f3b795b22fd4b49465b5 (patch)
treee3604f93b5b27b467896546a8fd719ef6073e818 /billing/test/broken
parent361cdbbacc57b17c198489238282e786cc827efa (diff)
moving broken billing integration tests out of the way
They are currently using fake_braintree. I think this is not a good approach for integration tests. It's a fake - we should test against braintrees test api. However that requires getting an api key that we want to keep outside the repository. So these test can only run on travis if we manage to setup secret values in .travis.yml - which has been failing so far. So for now i moved the broken billing integration tests to billing/test/broken to move on.
Diffstat (limited to 'billing/test/broken')
-rw-r--r--billing/test/broken/admin_customer_test.rb31
-rw-r--r--billing/test/broken/customer_creation_test.rb84
-rw-r--r--billing/test/broken/subscription_test.rb49
3 files changed, 164 insertions, 0 deletions
diff --git a/billing/test/broken/admin_customer_test.rb b/billing/test/broken/admin_customer_test.rb
new file mode 100644
index 0000000..df92a0d
--- /dev/null
+++ b/billing/test/broken/admin_customer_test.rb
@@ -0,0 +1,31 @@
+require 'test_helper'
+require 'fake_braintree'
+
+class AdminCustomerTest < BraintreeIntegrationTest
+
+ setup do
+ @admin = User.find_by_login('admin') || FactoryGirl.create(:user, login: 'admin')
+ @user = FactoryGirl.create(:user)
+ end
+
+ teardown do
+ @user.destroy if @user
+ @admin.destroy if @admin
+ end
+
+ test "check non customer as admin" do
+ login_as @admin
+ visit '/'
+ click_link 'Users'
+ click_link @user.login
+ click_link 'Billing Settings'
+ assert page.has_content? @user.email_address
+ assert page.has_content? 'No Saved Customer'
+ end
+
+ test "check customer as admin" do
+ skip "cannot check customer as admin"
+ # it would be good to have a test where an admin tries to view the 'Billing Settings' for another user.
+ # However, partially due to limitations of FakeBraintree, this doesn't seem pursuing at this time.
+ end
+end
diff --git a/billing/test/broken/customer_creation_test.rb b/billing/test/broken/customer_creation_test.rb
new file mode 100644
index 0000000..90319a9
--- /dev/null
+++ b/billing/test/broken/customer_creation_test.rb
@@ -0,0 +1,84 @@
+require 'test_helper'
+require 'fake_braintree'
+
+class CustomerCreationTest < BraintreeIntegrationTest
+
+ setup do
+ @user = FactoryGirl.create(:user)
+ login_as @user
+ end
+
+ teardown do
+ @user.destroy
+ end
+
+ # Let's test both steps together with capybara
+ #
+ # This test is nice and clean but also a bit fragile:
+ # RackTest assumes all requests to be local. So we need
+ # BraintreeTestApp for the braintree transparent redirect to work.
+ #
+ # this mystifies me why this works. when i type the click_button line (and the
+ # customer.braintree_customer line) in the debugger, it gives a timeout,
+ # but it works fine embedded in the test.
+ test "create customer with braintree" do
+ visit '/'
+ click_link 'Billing Settings'
+ # i am a bit unclear why this works, as it seems there will be validation errors
+ assert_difference("Customer.count") do
+ click_button 'Save Payment Info' # this gives me a timeout
+ end
+ assert customer = Customer.find_by_user_id(@user.id)
+ assert customer.braintree_customer
+ end
+
+ # We only test the confirmation here.
+ # The request to Braintree is triggered outside of rails
+ # In skippped test below, we see this works even if the attributes are
+ # for a broken customer
+ test "successfully confirms customer creation" do
+ 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
+
+
+ test "failed customer creation" do
+ skip "cannot get customer creation to fail"
+
+ FakeBraintree.decline_all_cards!
+
+ response = post_transparent_redirect :create_customer_data,
+ customer: FactoryGirl.attributes_for(:broken_customer),
+ redirect_url: confirm_customer_url
+
+ assert FakeBraintree.decline_all_cards?
+ assert_no_difference("Customer.count") do
+ post response['Location'] #this gives me a timeout when run alone
+ end
+ assert_nil Customer.find_by_user_id(@user.id)
+
+ 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
diff --git a/billing/test/broken/subscription_test.rb b/billing/test/broken/subscription_test.rb
new file mode 100644
index 0000000..cd010bd
--- /dev/null
+++ b/billing/test/broken/subscription_test.rb
@@ -0,0 +1,49 @@
+require 'test_helper'
+require 'fake_braintree'
+
+class SubscriptionTest < BraintreeIntegrationTest
+ include CustomerTestHelper
+ include StubRecordHelper
+
+ setup do
+ @admin = User.find_by_login('admin') || FactoryGirl.create(:user, login: 'admin')
+ @customer = stub_customer
+ @braintree_customer = @customer.braintree_customer
+ response = Braintree::Subscription.create plan_id: '5',
+ payment_method_token: @braintree_customer.credit_cards.first.token,
+ price: '10'
+ @subscription = response.subscription
+ end
+
+ teardown do
+ @admin.destroy
+ end
+
+ test "admin can see all subscriptions for another" do
+ login_as @admin
+ @customer.stubs(:subscriptions).returns([@subscription])
+ @subscription.stubs(:balance).returns 0
+ visit user_subscriptions_path(@customer.user_id, :locale => nil)
+ assert page.has_content?("Subscriptions")
+ assert page.has_content?("Status: Active")
+ end
+
+ # test "user cannot see all subscriptions for other user" do
+ #end
+
+ #test "admin cannot add subscription for another" do
+ #end
+
+ #test "authenticated user can cancel own subscription" do
+ #end
+
+ #test "user cannot add subscription if they have active one" do
+ #end
+
+ #test "user can view own subscriptions"
+ #end
+
+ #test "admin can view another user's subscriptions" do
+ #end
+
+end