summaryrefslogtreecommitdiff
path: root/engines/billing/test/broken
diff options
context:
space:
mode:
Diffstat (limited to 'engines/billing/test/broken')
-rw-r--r--engines/billing/test/broken/admin_customer_test.rb31
-rw-r--r--engines/billing/test/broken/customer_creation_test.rb84
-rw-r--r--engines/billing/test/broken/subscription_test.rb49
3 files changed, 164 insertions, 0 deletions
diff --git a/engines/billing/test/broken/admin_customer_test.rb b/engines/billing/test/broken/admin_customer_test.rb
new file mode 100644
index 0000000..df92a0d
--- /dev/null
+++ b/engines/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/engines/billing/test/broken/customer_creation_test.rb b/engines/billing/test/broken/customer_creation_test.rb
new file mode 100644
index 0000000..90319a9
--- /dev/null
+++ b/engines/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/engines/billing/test/broken/subscription_test.rb b/engines/billing/test/broken/subscription_test.rb
new file mode 100644
index 0000000..cd010bd
--- /dev/null
+++ b/engines/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