forked from e621ng/e621ng
implement coinbase tests
This commit is contained in:
parent
358f22af86
commit
cdd17de0af
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user