implement coinbase tests
This commit is contained in:
@@ -14,7 +14,7 @@ class ApplicationController < ActionController::Base
|
|||||||
|
|
||||||
rescue_from User::PrivilegeError, :with => :access_denied
|
rescue_from User::PrivilegeError, :with => :access_denied
|
||||||
rescue_from Danbooru::Paginator::PaginationError, :with => :render_pagination_limit
|
rescue_from Danbooru::Paginator::PaginationError, :with => :render_pagination_limit
|
||||||
rescue_from Exception, :with => :rescue_exception
|
# rescue_from Exception, :with => :rescue_exception
|
||||||
|
|
||||||
protected
|
protected
|
||||||
def api_check
|
def api_check
|
||||||
|
|||||||
@@ -10,7 +10,9 @@ class UserUpgradesController < ApplicationController
|
|||||||
user = User.find(user_id)
|
user = User.find(user_id)
|
||||||
|
|
||||||
if user.level < User::Levels::PLATINUM && level >= User::Levels::GOLD && level <= User::Levels::PLATINUM
|
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
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -1,113 +1,34 @@
|
|||||||
require 'test_helper'
|
require 'test_helper'
|
||||||
|
|
||||||
class UserUpgradesControllerTest < ActionController::TestCase
|
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
|
setup do
|
||||||
|
@admin = FactoryGirl.create(:admin_user)
|
||||||
@user = FactoryGirl.create(:user)
|
@user = FactoryGirl.create(:user)
|
||||||
end
|
end
|
||||||
|
|
||||||
context "#create" do
|
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
|
context "for basic -> gold" do
|
||||||
should "promote the account" do
|
should "promote the account" do
|
||||||
VCR.use_cassette("stripe-basic-to-gold", :record => :once) do
|
post :create, {:order => {:status => "completed", :custom => @encrypted}}
|
||||||
post :create, {:stripeToken => get_stripe_token.id, :desc => "Upgrade to Gold", :email => "nowhere@donmai.us"}, {:user_id => @user.id}
|
assert_response :success
|
||||||
end
|
|
||||||
assert_redirected_to user_upgrade_path
|
|
||||||
@user.reload
|
@user.reload
|
||||||
assert_equal(User::Levels::GOLD, @user.level)
|
assert_equal(User::Levels::GOLD, @user.level)
|
||||||
end
|
end
|
||||||
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
|
end
|
||||||
|
|
||||||
context "#new" do
|
context "#new" do
|
||||||
context "for safe mode" do
|
setup do
|
||||||
setup do
|
Coinbase::Client.any_instance.stubs(:create_button).returns(OpenStruct.new)
|
||||||
CurrentUser.stubs(:safe_mode?).returns(true)
|
|
||||||
end
|
|
||||||
|
|
||||||
should "render" do
|
|
||||||
get :new, {}, {:user_id => @user.id}
|
|
||||||
assert_response :success
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
context "for default mode" do
|
should "render" do
|
||||||
should "render" do
|
get :new, {}, {:user_id => @user.id}
|
||||||
get :new, {}, {:user_id => @user.id}
|
assert_response :success
|
||||||
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
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user