diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 9608ad8cc..42c82653d 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -14,7 +14,7 @@ class ApplicationController < ActionController::Base rescue_from User::PrivilegeError, :with => :access_denied rescue_from Danbooru::Paginator::PaginationError, :with => :render_pagination_limit - rescue_from Exception, :with => :rescue_exception + # rescue_from Exception, :with => :rescue_exception protected def api_check diff --git a/app/controllers/user_upgrades_controller.rb b/app/controllers/user_upgrades_controller.rb index 80b3dbb68..9204c8977 100644 --- a/app/controllers/user_upgrades_controller.rb +++ b/app/controllers/user_upgrades_controller.rb @@ -10,7 +10,9 @@ class UserUpgradesController < ApplicationController user = User.find(user_id) if user.level < User::Levels::PLATINUM && level >= User::Levels::GOLD && level <= User::Levels::PLATINUM - user.promote_to!(level, :skip_feedback => true) + CurrentUser.scoped(User.admins.first, "127.0.0.1") do + user.promote_to!(level, :skip_feedback => true) + end end end diff --git a/test/controllers/user_upgrades_controller_test.rb b/test/controllers/user_upgrades_controller_test.rb index 021142e39..8816a5e08 100644 --- a/test/controllers/user_upgrades_controller_test.rb +++ b/test/controllers/user_upgrades_controller_test.rb @@ -1,113 +1,34 @@ require 'test_helper' class UserUpgradesControllerTest < ActionController::TestCase - def get_stripe_token - Stripe::Token.create( - :card => { - :number => "4242424242424242", - :exp_month => 1, - :exp_year => 1.year.from_now.year, - :cvc => "123" - } - ) - end - setup do + @admin = FactoryGirl.create(:admin_user) @user = FactoryGirl.create(:user) end context "#create" do + setup do + @encrypted = ActiveSupport::MessageEncryptor.new(Danbooru.config.coinbase_secret).encrypt_and_sign("#{@user.id},#{User::Levels::GOLD}") + end + context "for basic -> gold" do should "promote the account" do - VCR.use_cassette("stripe-basic-to-gold", :record => :once) do - post :create, {:stripeToken => get_stripe_token.id, :desc => "Upgrade to Gold", :email => "nowhere@donmai.us"}, {:user_id => @user.id} - end - assert_redirected_to user_upgrade_path + post :create, {:order => {:status => "completed", :custom => @encrypted}} + assert_response :success @user.reload assert_equal(User::Levels::GOLD, @user.level) end end - - context "for basic -> platinum" do - should "promote the account" do - VCR.use_cassette("stripe-basic-to-plat", :record => :once) do - post :create, {:stripeToken => get_stripe_token.id, :desc => "Upgrade to Platinum", :email => "nowhere@donmai.us"}, {:user_id => @user.id} - end - assert_redirected_to user_upgrade_path - @user.reload - assert_equal(User::Levels::PLATINUM, @user.level) - end - end - - context "for gold -> platinum" do - context "when the user is gold" do - setup do - @user.update_attribute(:level, User::Levels::GOLD) - end - - should "promote the account" do - VCR.use_cassette("stripe-gold-to-plat", :record => :once) do - post :create, {:stripeToken => get_stripe_token.id, :desc => "Upgrade Gold to Platinum", :email => "nowhere@donmai.us"}, {:user_id => @user.id} - end - assert_redirected_to user_upgrade_path - @user.reload - assert_equal(User::Levels::PLATINUM, @user.level) - end - end - - context "when the user is not gold" do - should "fail" do - VCR.use_cassette("stripe-gold-to-plat-bad", :record => :once) do - post :create, {:stripeToken => get_stripe_token.id, :desc => "Upgrade Gold to Platinum", :email => "nowhere@donmai.us"}, {:user_id => @user.id} - end - assert_response 422 - @user.reload - assert_equal(User::Levels::MEMBER, @user.level) - end - end - end end context "#new" do - context "for safe mode" do - setup do - CurrentUser.stubs(:safe_mode?).returns(true) - end - - should "render" do - get :new, {}, {:user_id => @user.id} - assert_response :success - end + setup do + Coinbase::Client.any_instance.stubs(:create_button).returns(OpenStruct.new) end - context "for default mode" do - should "render" do - get :new, {}, {:user_id => @user.id} - assert_response :success - end - end - end - - context "#show" do - context "with disable=true" do - should "render" do - get :show, {}, {:user_id => @user.id}, {:disable => true} - assert_response :success - end - end - - context "with success=true" do - should "render" do - get :show, {}, {:user_id => @user.id}, {:success => true} - assert_response :success - end - end - - context "with error=true" do - should "render" do - get :show, {}, {:user_id => @user.id}, {:error => true} - assert_response :success - end + should "render" do + get :new, {}, {:user_id => @user.id} + assert_response :success end end end